{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Systemy informatyczne - 1. Organizacja pracy zespołowej" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Klonowanie dostępnych danych uczących" ] }, { "cell_type": "code", "execution_count": 118, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "fatal: destination path 'mieszkania5' already exists and is not an empty directory.\n" ] } ], "source": [ "!git clone git://gonito.net/mieszkania5" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Import danych treningowych, walidacyjnych i testowych" ] }, { "cell_type": "code", "execution_count": 119, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Dane treningowe" ] }, { "cell_type": "code", "execution_count": 120, "metadata": {}, "outputs": [], "source": [ "df_train = pd.read_csv(r'mieszkania5\\train\\train.tsv', sep='\\t', header=None)\n" ] }, { "cell_type": "code", "execution_count": 121, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0123456789...16171819202122232425
0309000.0do zamieszkania390 złspółdzielcze własnościowe7113https://www.otodom.pl/oferta/niezalezny-uklad-...2NaN43.44wtórny...NaNgazoweplastikoweNaNNaNNaNcegłaPolecamy na sprzedaż dwupokojowe mieszkanie p...NaNtelewizja kablowa, internet, meble, piwnica, g...
1314900.0do wykończeniaNaNpełna własność7392https://www.otodom.pl/oferta/urokliwe-mieszkan...2NaN42.60pierwotny...NaNgazoweplastikoweNaNNaNNaNcegłaKameralne 2 pokojowe mieszkanie z aneksem kuc...NaNtelewizja kablowa, internet, telefon, drzwi / ...
2249000.0do remontu300 złpełna własność5621https://www.otodom.pl/oferta/mieszkanie-do-rem...2NaN44.30wtórny...NaNmiejskieplastikowe1960.0NaN2019-06-30cegłaOferta bezpośrednio od właściciela - bez pośr...NaNtelewizja kablowa, internet, telefon, domofon ...
3419000.0do zamieszkania490 złpełna własność4761https://www.otodom.pl/oferta/w-szeregowcu-4-po...4NaN88wtórny...NaNgazoweplastikoweNaNNaNNaNcegłaDrodzy Państwo Zapraszam do zapoznania się z ...NaNtelewizja kablowa, internet, zmywarka, lodówka...
4499000.0NaN850 złNaN6481https://www.otodom.pl/oferta/komfortowe-przest...3NaN77wtórny...NaNNaNplastikoweNaNNaNNaNNaNBiuro Immohouse ma przyjemność proponować do ...NaNbalkon, piwnica, winda
..................................................................
2542507600.0do wykończenia1 złpełna własność5400https://www.otodom.pl/oferta/mieszkanie-do-spr...4NaN94wtórny...NaNgazowedrewniane1914.0NaNNaNcegłaDo sprzedaży mieszkanie na drugim piętrze w s...NaNNaN
2543342400.0NaNNaNspółdzielcze własnościowe6400https://www.otodom.pl/oferta/mieszkanie-53-50-...2NaN53.50wtórny...NaNmiejskiedrewniane1999.0NaNNaNcegła| Świetnie zlokalizowane, przestronne, czyste...NaNtelewizja kablowa, internet, telefon, monitori...
2544335000.0NaN280 złpełna własność6063https://www.otodom.pl/oferta/mieszkanie-55-25-...3NaN55.25wtórny...NaNNaNplastikowe1910.0NaNNaNcegłaMIESZKANIE ŁAZARZ Przedmiotem sprzedaży jest ...NaNtelewizja kablowa, internet, telefon, monitori...
2545260000.0NaNNaNNaN4194https://www.otodom.pl/oferta/mieszkanie-udzial...3NaN62wtórny...NaNpiece kafloweNaN1930.0NaN2011-07-05cegłaPolecam do sprzedaży mieszkanie w udziale kam...NaNpiwnica, oddzielna kuchnia, pom. użytkowe
25461990000.0do zamieszkaniaNaNNaN5077https://www.otodom.pl/oferta/mieszkania-w-kami...więcej niż 10NaN392wtórny...NaNgazoweNaNNaNNaNNaNcegłaSprzedam 7 mieszkań w centrum Poznania przy u...NaNlodówka, meble, piekarnik, kuchenka, pralka
\n", "

2547 rows × 26 columns

\n", "
" ], "text/plain": [ " 0 1 2 3 4 \\\n", "0 309000.0 do zamieszkania 390 zł spółdzielcze własnościowe 7113 \n", "1 314900.0 do wykończenia NaN pełna własność 7392 \n", "2 249000.0 do remontu 300 zł pełna własność 5621 \n", "3 419000.0 do zamieszkania 490 zł pełna własność 4761 \n", "4 499000.0 NaN 850 zł NaN 6481 \n", "... ... ... ... ... ... \n", "2542 507600.0 do wykończenia 1 zł pełna własność 5400 \n", "2543 342400.0 NaN NaN spółdzielcze własnościowe 6400 \n", "2544 335000.0 NaN 280 zł pełna własność 6063 \n", "2545 260000.0 NaN NaN NaN 4194 \n", "2546 1990000.0 do zamieszkania NaN NaN 5077 \n", "\n", " 5 6 7 \\\n", "0 https://www.otodom.pl/oferta/niezalezny-uklad-... 2 NaN \n", "1 https://www.otodom.pl/oferta/urokliwe-mieszkan... 2 NaN \n", "2 https://www.otodom.pl/oferta/mieszkanie-do-rem... 2 NaN \n", "3 https://www.otodom.pl/oferta/w-szeregowcu-4-po... 4 NaN \n", "4 https://www.otodom.pl/oferta/komfortowe-przest... 3 NaN \n", "... ... ... .. \n", "2542 https://www.otodom.pl/oferta/mieszkanie-do-spr... 4 NaN \n", "2543 https://www.otodom.pl/oferta/mieszkanie-53-50-... 2 NaN \n", "2544 https://www.otodom.pl/oferta/mieszkanie-55-25-... 3 NaN \n", "2545 https://www.otodom.pl/oferta/mieszkanie-udzial... 3 NaN \n", "2546 https://www.otodom.pl/oferta/mieszkania-w-kami... więcej niż 10 NaN \n", "\n", " 8 9 ... 16 17 18 19 20 \\\n", "0 43.44 wtórny ... NaN gazowe plastikowe NaN NaN \n", "1 42.60 pierwotny ... NaN gazowe plastikowe NaN NaN \n", "2 44.30 wtórny ... NaN miejskie plastikowe 1960.0 NaN \n", "3 88 wtórny ... NaN gazowe plastikowe NaN NaN \n", "4 77 wtórny ... NaN NaN plastikowe NaN NaN \n", "... ... ... ... .. ... ... ... .. \n", "2542 94 wtórny ... NaN gazowe drewniane 1914.0 NaN \n", "2543 53.50 wtórny ... NaN miejskie drewniane 1999.0 NaN \n", "2544 55.25 wtórny ... NaN NaN plastikowe 1910.0 NaN \n", "2545 62 wtórny ... NaN piece kaflowe NaN 1930.0 NaN \n", "2546 392 wtórny ... NaN gazowe NaN NaN NaN \n", "\n", " 21 22 23 \\\n", "0 NaN cegła Polecamy na sprzedaż dwupokojowe mieszkanie p... \n", "1 NaN cegła Kameralne 2 pokojowe mieszkanie z aneksem kuc... \n", "2 2019-06-30 cegła Oferta bezpośrednio od właściciela - bez pośr... \n", "3 NaN cegła Drodzy Państwo Zapraszam do zapoznania się z ... \n", "4 NaN NaN Biuro Immohouse ma przyjemność proponować do ... \n", "... ... ... ... \n", "2542 NaN cegła Do sprzedaży mieszkanie na drugim piętrze w s... \n", "2543 NaN cegła | Świetnie zlokalizowane, przestronne, czyste... \n", "2544 NaN cegła MIESZKANIE ŁAZARZ Przedmiotem sprzedaży jest ... \n", "2545 2011-07-05 cegła Polecam do sprzedaży mieszkanie w udziale kam... \n", "2546 NaN cegła Sprzedam 7 mieszkań w centrum Poznania przy u... \n", "\n", " 24 25 \n", "0 NaN telewizja kablowa, internet, meble, piwnica, g... \n", "1 NaN telewizja kablowa, internet, telefon, drzwi / ... \n", "2 NaN telewizja kablowa, internet, telefon, domofon ... \n", "3 NaN telewizja kablowa, internet, zmywarka, lodówka... \n", "4 NaN balkon, piwnica, winda \n", "... .. ... \n", "2542 NaN NaN \n", "2543 NaN telewizja kablowa, internet, telefon, monitori... \n", "2544 NaN telewizja kablowa, internet, telefon, monitori... \n", "2545 NaN piwnica, oddzielna kuchnia, pom. użytkowe \n", "2546 NaN lodówka, meble, piekarnik, kuchenka, pralka \n", "\n", "[2547 rows x 26 columns]" ] }, "execution_count": 121, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_train" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Dane walidacyjne" ] }, { "cell_type": "code", "execution_count": 122, "metadata": {}, "outputs": [], "source": [ "df_valid = pd.read_csv(r'mieszkania5\\dev-0\\in.tsv', sep='\\t', header=None)" ] }, { "cell_type": "code", "execution_count": 123, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0123456789...15161718192021222324
0do zamieszkania250 złpełna własność6311https://www.otodom.pl/oferta/idealne-mieszkani...3NaN59.10wtórny4.0...NaNmiejskieplastikoweNaNNaNNaNwielka płytaZamieszkaj od zaraz – idealna lokalizacja OFE...NaNtelewizja kablowa, internet, telefon, domofon ...
1do zamieszkaniaNaNpełna własność7868https://www.otodom.pl/oferta/2-pokoje-38m2-po-...2NaN38.00wtórny12.0...NaNinneplastikoweNaNNaNNaNNaNNa sprzedaż mieszkanie dwupokojowe na osiedlu...NaNbalkon
2do zamieszkania650 złpełna własność5717https://www.otodom.pl/oferta/3-pokoje-na-jezyc...3NaN63.84wtórny4.0...NaNmiejskieplastikowe1958.0NaNNaNcegła!! Oferta dostępna tylko u nas !! Polecam ofe...NaNtelewizja kablowa, internet, telefon, piwnica,...
3do zamieszkania359 złspółdzielcze własnościowe7380https://www.otodom.pl/oferta/uniwersytet-przyr...4NaN50.00wtórny10.0...NaNmiejskieplastikowe1975.0NaN2019-06-30wielka płytaOferta  bezpośrednio od właściciela  - bez po...NaNtelewizja kablowa, internet, telefon, drzwi / ...
4NaNNaNNaN7373https://www.otodom.pl/oferta/mieszkanie-blisko...3NaN65.62pierwotny3.0...NaNNaNNaN2020.0NaN2020-01-01NaNMIESZKANIE 3-POKOJOWE O POW.65,62M2 Mieszkani...NaNgaraż/miejsce parkingowe, taras, pom. użytkowe
..................................................................
457do wykończeniaNaNpełna własność9007https://www.otodom.pl/oferta/mieszkanie-zajezd...3NaN72.78pierwotny5.0...NaNmiejskieplastikowe2019.0NaNNaNcegłaZapraszam do zapoznania się z nową atrakcyjną...NaNtelewizja kablowa, internet, monitoring / ochr...
458do wykończeniaNaNpełna własność9202https://www.otodom.pl/oferta/mieszkanie-zajezd...2NaN51.23pierwotny5.0...NaNNaNNaNNaNNaNNaNNaNZapraszam do zapoznania się z nową atrakcyjną...NaNgaraż/miejsce parkingowe, winda
459do wykończeniaNaNpełna własność5723https://www.otodom.pl/oferta/nowe-mieszkanie-o...3NaN54.16pierwotny3.0...NaNkotłowniaplastikowe2019.0NaN2019-12-31silikatMieszkanie składa się z 3 pokoi, aneksu kuche...NaNtelewizja kablowa, internet, telefon, domofon ...
460do zamieszkania1 102.05 złpełna własność7758https://www.otodom.pl/oferta/apartament-w-atan...3NaN90.10wtórny5.0...NaNkotłowniaplastikowe2001.0NaN2018-04-13cegłaProponuję bardzo atrakcyjny, przestronny, w p...NaNtelewizja kablowa, drzwi / okna antywłamaniowe...
461NaNNaNNaN11822https://www.otodom.pl/oferta/mieszkanie-71-90-...2NaN71.90wtórny3.0...NaNNaNdrewniane2016.0NaNNaNcegłaLink do oferty: -wielkopolskie-poznan-grunwal...NaNbalkon, garaż/miejsce parkingowe
\n", "

462 rows × 25 columns

\n", "
" ], "text/plain": [ " 0 1 2 3 \\\n", "0 do zamieszkania 250 zł pełna własność 6311 \n", "1 do zamieszkania NaN pełna własność 7868 \n", "2 do zamieszkania 650 zł pełna własność 5717 \n", "3 do zamieszkania 359 zł spółdzielcze własnościowe 7380 \n", "4 NaN NaN NaN 7373 \n", ".. ... ... ... ... \n", "457 do wykończenia NaN pełna własność 9007 \n", "458 do wykończenia NaN pełna własność 9202 \n", "459 do wykończenia NaN pełna własność 5723 \n", "460 do zamieszkania 1 102.05 zł pełna własność 7758 \n", "461 NaN NaN NaN 11822 \n", "\n", " 4 5 6 7 \\\n", "0 https://www.otodom.pl/oferta/idealne-mieszkani... 3 NaN 59.10 \n", "1 https://www.otodom.pl/oferta/2-pokoje-38m2-po-... 2 NaN 38.00 \n", "2 https://www.otodom.pl/oferta/3-pokoje-na-jezyc... 3 NaN 63.84 \n", "3 https://www.otodom.pl/oferta/uniwersytet-przyr... 4 NaN 50.00 \n", "4 https://www.otodom.pl/oferta/mieszkanie-blisko... 3 NaN 65.62 \n", ".. ... .. .. ... \n", "457 https://www.otodom.pl/oferta/mieszkanie-zajezd... 3 NaN 72.78 \n", "458 https://www.otodom.pl/oferta/mieszkanie-zajezd... 2 NaN 51.23 \n", "459 https://www.otodom.pl/oferta/nowe-mieszkanie-o... 3 NaN 54.16 \n", "460 https://www.otodom.pl/oferta/apartament-w-atan... 3 NaN 90.10 \n", "461 https://www.otodom.pl/oferta/mieszkanie-71-90-... 2 NaN 71.90 \n", "\n", " 8 9 ... 15 16 17 18 19 20 \\\n", "0 wtórny 4.0 ... NaN miejskie plastikowe NaN NaN NaN \n", "1 wtórny 12.0 ... NaN inne plastikowe NaN NaN NaN \n", "2 wtórny 4.0 ... NaN miejskie plastikowe 1958.0 NaN NaN \n", "3 wtórny 10.0 ... NaN miejskie plastikowe 1975.0 NaN 2019-06-30 \n", "4 pierwotny 3.0 ... NaN NaN NaN 2020.0 NaN 2020-01-01 \n", ".. ... ... ... .. ... ... ... .. ... \n", "457 pierwotny 5.0 ... NaN miejskie plastikowe 2019.0 NaN NaN \n", "458 pierwotny 5.0 ... NaN NaN NaN NaN NaN NaN \n", "459 pierwotny 3.0 ... NaN kotłownia plastikowe 2019.0 NaN 2019-12-31 \n", "460 wtórny 5.0 ... NaN kotłownia plastikowe 2001.0 NaN 2018-04-13 \n", "461 wtórny 3.0 ... NaN NaN drewniane 2016.0 NaN NaN \n", "\n", " 21 22 23 \\\n", "0 wielka płyta Zamieszkaj od zaraz – idealna lokalizacja OFE... NaN \n", "1 NaN Na sprzedaż mieszkanie dwupokojowe na osiedlu... NaN \n", "2 cegła !! Oferta dostępna tylko u nas !! Polecam ofe... NaN \n", "3 wielka płyta Oferta  bezpośrednio od właściciela  - bez po... NaN \n", "4 NaN MIESZKANIE 3-POKOJOWE O POW.65,62M2 Mieszkani... NaN \n", ".. ... ... .. \n", "457 cegła Zapraszam do zapoznania się z nową atrakcyjną... NaN \n", "458 NaN Zapraszam do zapoznania się z nową atrakcyjną... NaN \n", "459 silikat Mieszkanie składa się z 3 pokoi, aneksu kuche... NaN \n", "460 cegła Proponuję bardzo atrakcyjny, przestronny, w p... NaN \n", "461 cegła Link do oferty: -wielkopolskie-poznan-grunwal... NaN \n", "\n", " 24 \n", "0 telewizja kablowa, internet, telefon, domofon ... \n", "1 balkon \n", "2 telewizja kablowa, internet, telefon, piwnica,... \n", "3 telewizja kablowa, internet, telefon, drzwi / ... \n", "4 garaż/miejsce parkingowe, taras, pom. użytkowe \n", ".. ... \n", "457 telewizja kablowa, internet, monitoring / ochr... \n", "458 garaż/miejsce parkingowe, winda \n", "459 telewizja kablowa, internet, telefon, domofon ... \n", "460 telewizja kablowa, drzwi / okna antywłamaniowe... \n", "461 balkon, garaż/miejsce parkingowe \n", "\n", "[462 rows x 25 columns]" ] }, "execution_count": 123, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_valid" ] }, { "cell_type": "code", "execution_count": 124, "metadata": {}, "outputs": [], "source": [ "df_valid_cena = pd.read_csv(r'mieszkania5\\dev-0\\expected.tsv', sep='\\t', header=None)" ] }, { "cell_type": "code", "execution_count": 125, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0
0373000.00
1299000.00
2365000.00
3369000.00
4483791.00
......
457655544.02
458471397.97
459309958.00
460699000.00
461850000.00
\n", "

462 rows × 1 columns

\n", "
" ], "text/plain": [ " 0\n", "0 373000.00\n", "1 299000.00\n", "2 365000.00\n", "3 369000.00\n", "4 483791.00\n", ".. ...\n", "457 655544.02\n", "458 471397.97\n", "459 309958.00\n", "460 699000.00\n", "461 850000.00\n", "\n", "[462 rows x 1 columns]" ] }, "execution_count": 125, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_valid_cena" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Dane testowe" ] }, { "cell_type": "code", "execution_count": 126, "metadata": {}, "outputs": [], "source": [ "df_test = pd.read_csv(r'mieszkania5\\test-A\\in.tsv', sep='\\t', header=None)" ] }, { "cell_type": "code", "execution_count": 127, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0123456789...15161718192021222324
0do wykończeniaNaNpełna własność6938https://www.otodom.pl/oferta/nowe-mieszkanie-z...3NaN61.99pierwotny7.0...NaNNaNplastikowe2020.0NaNNaNNaNPrezentujemy naszą najnowszą inwestycje zloka...NaNtelewizja kablowa, internet, telefon, drzwi / ...
1do zamieszkaniaNaNpełna własność6078https://www.otodom.pl/oferta/3-pok-parter-nisk...4NaN64.00wtórny4.0...NaNmiejskieNaN1982.0NaNNaNwielka płytaPolecam na sprzedaż duże atrakcyjnie zlokaliz...NaNdomofon / wideofon, balkon
2do wykończeniaNaNpełna własność6150https://www.otodom.pl/oferta/hot-oferta-od-dew...3NaN51.15pierwotny5.0...NaNmiejskieplastikowe2020.0NaNNaNcegła&gt...NaNtelewizja kablowa, internet, telefon, domofon ...
3do zamieszkania350 złpełna własność9373https://www.otodom.pl/oferta/mieszkanie-z-ogro...2NaN45.77wtórny7.0...NaNNaNNaNNaNNaNNaNNaN!! OFERTA BEZPOŚREDNIA !! Na sprzedaż mieszkan...NaNtelewizja kablowa, internet, telefon, drzwi / ...
4NaNNaNNaN7200https://www.otodom.pl/oferta/osiedle-nowych-ko...2NaN44.36pierwotny13.0...NaNNaNplastikoweNaNNaN2020-08-01NaNInwestycja NOWYCH KOSMONAUTÓW powstaje u zbie...NaNtelewizja kablowa, internet, telefon, drzwi / ...
..................................................................
413do wykończeniaNaNNaN7150https://www.otodom.pl/oferta/zielony-marcelin-...1NaN34.97pierwotny8.0...NaNmiejskieplastikoweNaNNaNNaNNaNZielony Marcelin I etap mieszkanie nr 407, 1 ...NaNtelewizja kablowa, internet, telefon, drzwi / ...
414do wykończeniaNaNpełna własność6499https://www.otodom.pl/oferta/nowe-mieszkanie-p...3NaN49.06pierwotny3.0...NaNkotłowniaplastikowe2018.0NaN2018-12-31silikatMieszkanie składa się z 3 pokoi z aneksem kuc...NaNtelewizja kablowa, internet, telefon, domofon ...
415do wykończeniaNaNpełna własność9451https://www.otodom.pl/oferta/mieszkanie-76-71-...3NaN76.71pierwotny5.0...NaNNaNplastikowe2019.0NaNNaNNaNZapraszam do zapoznania się z nową atrakcyjną...NaNmonitoring / ochrona, garaż/miejsce parkingowe...
416do wykończeniaNaNpełna własność9322https://www.otodom.pl/oferta/mieszkanie-zajezd...3NaN72.63pierwotny5.0...NaNNaNNaNNaNNaNNaNNaNZapraszam do zapoznania się z nową atrakcyjną...NaNgaraż/miejsce parkingowe, winda
417do wykończeniaNaNpełna własność6500https://www.otodom.pl/oferta/nowe-mieszkanie-w...2NaN65.84wtórny10.0...NaNmiejskieplastikowe2012.0NaNNaNpustakSuper mieszkanie 2-pokojowe 65,84m2. wykończo...NaNtelewizja kablowa, internet, telefon, monitori...
\n", "

418 rows × 25 columns

\n", "
" ], "text/plain": [ " 0 1 2 3 \\\n", "0 do wykończenia NaN pełna własność 6938 \n", "1 do zamieszkania NaN pełna własność 6078 \n", "2 do wykończenia NaN pełna własność 6150 \n", "3 do zamieszkania 350 zł pełna własność 9373 \n", "4 NaN NaN NaN 7200 \n", ".. ... ... ... ... \n", "413 do wykończenia NaN NaN 7150 \n", "414 do wykończenia NaN pełna własność 6499 \n", "415 do wykończenia NaN pełna własność 9451 \n", "416 do wykończenia NaN pełna własność 9322 \n", "417 do wykończenia NaN pełna własność 6500 \n", "\n", " 4 5 6 7 \\\n", "0 https://www.otodom.pl/oferta/nowe-mieszkanie-z... 3 NaN 61.99 \n", "1 https://www.otodom.pl/oferta/3-pok-parter-nisk... 4 NaN 64.00 \n", "2 https://www.otodom.pl/oferta/hot-oferta-od-dew... 3 NaN 51.15 \n", "3 https://www.otodom.pl/oferta/mieszkanie-z-ogro... 2 NaN 45.77 \n", "4 https://www.otodom.pl/oferta/osiedle-nowych-ko... 2 NaN 44.36 \n", ".. ... .. .. ... \n", "413 https://www.otodom.pl/oferta/zielony-marcelin-... 1 NaN 34.97 \n", "414 https://www.otodom.pl/oferta/nowe-mieszkanie-p... 3 NaN 49.06 \n", "415 https://www.otodom.pl/oferta/mieszkanie-76-71-... 3 NaN 76.71 \n", "416 https://www.otodom.pl/oferta/mieszkanie-zajezd... 3 NaN 72.63 \n", "417 https://www.otodom.pl/oferta/nowe-mieszkanie-w... 2 NaN 65.84 \n", "\n", " 8 9 ... 15 16 17 18 19 20 \\\n", "0 pierwotny 7.0 ... NaN NaN plastikowe 2020.0 NaN NaN \n", "1 wtórny 4.0 ... NaN miejskie NaN 1982.0 NaN NaN \n", "2 pierwotny 5.0 ... NaN miejskie plastikowe 2020.0 NaN NaN \n", "3 wtórny 7.0 ... NaN NaN NaN NaN NaN NaN \n", "4 pierwotny 13.0 ... NaN NaN plastikowe NaN NaN 2020-08-01 \n", ".. ... ... ... .. ... ... ... .. ... \n", "413 pierwotny 8.0 ... NaN miejskie plastikowe NaN NaN NaN \n", "414 pierwotny 3.0 ... NaN kotłownia plastikowe 2018.0 NaN 2018-12-31 \n", "415 pierwotny 5.0 ... NaN NaN plastikowe 2019.0 NaN NaN \n", "416 pierwotny 5.0 ... NaN NaN NaN NaN NaN NaN \n", "417 wtórny 10.0 ... NaN miejskie plastikowe 2012.0 NaN NaN \n", "\n", " 21 22 23 \\\n", "0 NaN Prezentujemy naszą najnowszą inwestycje zloka... NaN \n", "1 wielka płyta Polecam na sprzedaż duże atrakcyjnie zlokaliz... NaN \n", "2 cegła                                           >... NaN \n", "3 NaN !! OFERTA BEZPOŚREDNIA !! Na sprzedaż mieszkan... NaN \n", "4 NaN Inwestycja NOWYCH KOSMONAUTÓW powstaje u zbie... NaN \n", ".. ... ... .. \n", "413 NaN Zielony Marcelin I etap mieszkanie nr 407, 1 ... NaN \n", "414 silikat Mieszkanie składa się z 3 pokoi z aneksem kuc... NaN \n", "415 NaN Zapraszam do zapoznania się z nową atrakcyjną... NaN \n", "416 NaN Zapraszam do zapoznania się z nową atrakcyjną... NaN \n", "417 pustak Super mieszkanie 2-pokojowe 65,84m2. wykończo... NaN \n", "\n", " 24 \n", "0 telewizja kablowa, internet, telefon, drzwi / ... \n", "1 domofon / wideofon, balkon \n", "2 telewizja kablowa, internet, telefon, domofon ... \n", "3 telewizja kablowa, internet, telefon, drzwi / ... \n", "4 telewizja kablowa, internet, telefon, drzwi / ... \n", ".. ... \n", "413 telewizja kablowa, internet, telefon, drzwi / ... \n", "414 telewizja kablowa, internet, telefon, domofon ... \n", "415 monitoring / ochrona, garaż/miejsce parkingowe... \n", "416 garaż/miejsce parkingowe, winda \n", "417 telewizja kablowa, internet, telefon, monitori... \n", "\n", "[418 rows x 25 columns]" ] }, "execution_count": 127, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_test" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Wybranie interesujących nas kolumn (cena, ilość pokoi, metraż, rok budowy)" ] }, { "cell_type": "code", "execution_count": 128, "metadata": {}, "outputs": [], "source": [ "df_train = df_train[[0, 6, 8, 19]]" ] }, { "cell_type": "code", "execution_count": 129, "metadata": {}, "outputs": [], "source": [ "df_valid[0] = df_valid_cena" ] }, { "cell_type": "code", "execution_count": 130, "metadata": {}, "outputs": [], "source": [ "df_valid = df_valid[[0, 5, 7, 18]]" ] }, { "cell_type": "code", "execution_count": 131, "metadata": {}, "outputs": [], "source": [ "df_test = df_test[[5, 7, 18]]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Zamiana nazw kolumn" ] }, { "cell_type": "code", "execution_count": 132, "metadata": {}, "outputs": [], "source": [ "df_train = df_train.rename(columns = {0:\"cena\", 6:\"pokoje\", 8:\"metraz\", 19:\"rok\"})" ] }, { "cell_type": "code", "execution_count": 133, "metadata": {}, "outputs": [], "source": [ "df_valid = df_valid.rename(columns = {0:\"cena\", 5:\"pokoje\", 7:\"metraz\", 18:\"rok\"})" ] }, { "cell_type": "code", "execution_count": 134, "metadata": {}, "outputs": [], "source": [ "df_test = df_test.rename(columns = {5:\"pokoje\", 7:\"metraz\", 18:\"rok\"})" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Czyszczenie danych" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Czyszczenie danych treningowych" ] }, { "cell_type": "code", "execution_count": 135, "metadata": {}, "outputs": [], "source": [ "df_train = df_train.dropna()" ] }, { "cell_type": "code", "execution_count": 136, "metadata": {}, "outputs": [], "source": [ "df_train = df_train.replace( \"więcej niż 10\", '11')" ] }, { "cell_type": "code", "execution_count": 137, "metadata": {}, "outputs": [], "source": [ "df_train = df_train[(df_train['rok'] >= 1800) & (df_train['rok'] <= 2023)]\n" ] }, { "cell_type": "code", "execution_count": 138, "metadata": {}, "outputs": [], "source": [ "df_train = df_train[df_train[\"metraz\"] != '6 909']\n" ] }, { "cell_type": "code", "execution_count": 139, "metadata": {}, "outputs": [], "source": [ "df_train[\"pokoje\"] = df_train[\"pokoje\"].astype(float)\n", "df_train[\"metraz\"] = df_train[\"metraz\"].astype(float)" ] }, { "cell_type": "code", "execution_count": 140, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
cenapokojemetrazrok
count1.763000e+031763.0000001763.0000001763.000000
mean4.262096e+052.60975660.0683271992.024957
std2.478208e+051.03828929.65271337.968540
min8.500000e+041.00000019.0000001840.000000
25%3.100000e+052.00000043.0000001976.000000
50%3.671000e+052.00000052.3000002010.000000
75%4.700000e+053.00000068.0000002019.000000
max6.000000e+0611.000000404.0000002022.000000
\n", "
" ], "text/plain": [ " cena pokoje metraz rok\n", "count 1.763000e+03 1763.000000 1763.000000 1763.000000\n", "mean 4.262096e+05 2.609756 60.068327 1992.024957\n", "std 2.478208e+05 1.038289 29.652713 37.968540\n", "min 8.500000e+04 1.000000 19.000000 1840.000000\n", "25% 3.100000e+05 2.000000 43.000000 1976.000000\n", "50% 3.671000e+05 2.000000 52.300000 2010.000000\n", "75% 4.700000e+05 3.000000 68.000000 2019.000000\n", "max 6.000000e+06 11.000000 404.000000 2022.000000" ] }, "execution_count": 140, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_train.describe()" ] }, { "cell_type": "code", "execution_count": 141, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
cenapokojemetrazrok
2249000.02.044.301960.0
6449000.04.092.001930.0
7389000.03.063.601985.0
9260000.03.044.201970.0
10330682.03.048.992019.0
...............
2541383680.03.070.402016.0
2542507600.04.094.001914.0
2543342400.02.053.501999.0
2544335000.03.055.251910.0
2545260000.03.062.001930.0
\n", "

1763 rows × 4 columns

\n", "
" ], "text/plain": [ " cena pokoje metraz rok\n", "2 249000.0 2.0 44.30 1960.0\n", "6 449000.0 4.0 92.00 1930.0\n", "7 389000.0 3.0 63.60 1985.0\n", "9 260000.0 3.0 44.20 1970.0\n", "10 330682.0 3.0 48.99 2019.0\n", "... ... ... ... ...\n", "2541 383680.0 3.0 70.40 2016.0\n", "2542 507600.0 4.0 94.00 1914.0\n", "2543 342400.0 2.0 53.50 1999.0\n", "2544 335000.0 3.0 55.25 1910.0\n", "2545 260000.0 3.0 62.00 1930.0\n", "\n", "[1763 rows x 4 columns]" ] }, "execution_count": 141, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_train" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Czyszczenie danych walidacyjnych" ] }, { "cell_type": "code", "execution_count": 142, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
cenapokojemetrazrok
count4.620000e+02462.000000462.000000322.000000
mean4.108530e+052.52813957.3291131988.605590
std2.049347e+050.95351225.300686113.363432
min1.597610e+051.0000001.00000070.000000
25%2.984000e+052.00000042.0000001980.000000
50%3.520765e+052.00000050.5100002013.000000
75%4.687800e+053.00000066.3150002019.000000
max2.318580e+066.000000234.2000002021.000000
\n", "
" ], "text/plain": [ " cena pokoje metraz rok\n", "count 4.620000e+02 462.000000 462.000000 322.000000\n", "mean 4.108530e+05 2.528139 57.329113 1988.605590\n", "std 2.049347e+05 0.953512 25.300686 113.363432\n", "min 1.597610e+05 1.000000 1.000000 70.000000\n", "25% 2.984000e+05 2.000000 42.000000 1980.000000\n", "50% 3.520765e+05 2.000000 50.510000 2013.000000\n", "75% 4.687800e+05 3.000000 66.315000 2019.000000\n", "max 2.318580e+06 6.000000 234.200000 2021.000000" ] }, "execution_count": 142, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_valid.describe()" ] }, { "cell_type": "code", "execution_count": 143, "metadata": {}, "outputs": [], "source": [ "df_valid = df_valid.dropna()" ] }, { "cell_type": "code", "execution_count": 144, "metadata": {}, "outputs": [], "source": [ "df_valid = df_valid[df_valid['metraz'] > 10]" ] }, { "cell_type": "code", "execution_count": 145, "metadata": {}, "outputs": [], "source": [ "df_valid = df_valid[(df_valid['rok'] >= 1800) & (df_valid['rok'] <= 2023)]\n" ] }, { "cell_type": "code", "execution_count": 146, "metadata": {}, "outputs": [], "source": [ "df_valid = df_valid.replace( \"więcej niż 10\", '11')" ] }, { "cell_type": "code", "execution_count": 147, "metadata": {}, "outputs": [], "source": [ "df_valid[\"pokoje\"] = df_valid[\"pokoje\"].astype(float)\n", "df_valid[\"metraz\"] = df_valid[\"metraz\"].astype(float)" ] }, { "cell_type": "code", "execution_count": 148, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
cenapokojemetrazrok
2365000.003.063.841958.0
3369000.004.050.001975.0
4483791.003.065.622020.0
5430000.005.096.002019.0
9325000.002.049.002001.0
...............
455641395.582.072.782019.0
457655544.023.072.782019.0
459309958.003.054.162019.0
460699000.003.090.102001.0
461850000.002.071.902016.0
\n", "

320 rows × 4 columns

\n", "
" ], "text/plain": [ " cena pokoje metraz rok\n", "2 365000.00 3.0 63.84 1958.0\n", "3 369000.00 4.0 50.00 1975.0\n", "4 483791.00 3.0 65.62 2020.0\n", "5 430000.00 5.0 96.00 2019.0\n", "9 325000.00 2.0 49.00 2001.0\n", ".. ... ... ... ...\n", "455 641395.58 2.0 72.78 2019.0\n", "457 655544.02 3.0 72.78 2019.0\n", "459 309958.00 3.0 54.16 2019.0\n", "460 699000.00 3.0 90.10 2001.0\n", "461 850000.00 2.0 71.90 2016.0\n", "\n", "[320 rows x 4 columns]" ] }, "execution_count": 148, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_valid" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Czyszczenie danych testowych" ] }, { "cell_type": "code", "execution_count": 149, "metadata": {}, "outputs": [], "source": [ "df_test = df_test.dropna()" ] }, { "cell_type": "code", "execution_count": 150, "metadata": {}, "outputs": [], "source": [ "df_test = df_test.replace( \"więcej niż 10\", '11')" ] }, { "cell_type": "code", "execution_count": 151, "metadata": {}, "outputs": [], "source": [ "df_test[\"pokoje\"] = df_test[\"pokoje\"].astype(float)\n", "df_test[\"metraz\"] = df_test[\"metraz\"].astype(float)" ] }, { "cell_type": "code", "execution_count": 152, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
cenapokojemetrazrok
count1.763000e+031763.0000001763.0000001763.000000
mean4.262096e+052.60975660.0683271992.024957
std2.478208e+051.03828929.65271337.968540
min8.500000e+041.00000019.0000001840.000000
25%3.100000e+052.00000043.0000001976.000000
50%3.671000e+052.00000052.3000002010.000000
75%4.700000e+053.00000068.0000002019.000000
max6.000000e+0611.000000404.0000002022.000000
\n", "
" ], "text/plain": [ " cena pokoje metraz rok\n", "count 1.763000e+03 1763.000000 1763.000000 1763.000000\n", "mean 4.262096e+05 2.609756 60.068327 1992.024957\n", "std 2.478208e+05 1.038289 29.652713 37.968540\n", "min 8.500000e+04 1.000000 19.000000 1840.000000\n", "25% 3.100000e+05 2.000000 43.000000 1976.000000\n", "50% 3.671000e+05 2.000000 52.300000 2010.000000\n", "75% 4.700000e+05 3.000000 68.000000 2019.000000\n", "max 6.000000e+06 11.000000 404.000000 2022.000000" ] }, "execution_count": 152, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_train.describe()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Model regresji liniowej" ] }, { "cell_type": "code", "execution_count": 153, "metadata": {}, "outputs": [], "source": [ "from sklearn.linear_model import LinearRegression" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Podział danych" ] }, { "cell_type": "code", "execution_count": 154, "metadata": {}, "outputs": [], "source": [ "X_train = df_train[[\"pokoje\", \"metraz\", \"rok\"]]\n", "y_train = df_train[[\"cena\"]]" ] }, { "cell_type": "code", "execution_count": 155, "metadata": {}, "outputs": [], "source": [ "X_val = df_valid[[\"pokoje\", \"metraz\", \"rok\"]]\n", "y_val = df_valid[[\"cena\"]]" ] }, { "cell_type": "code", "execution_count": 156, "metadata": {}, "outputs": [], "source": [ "X_test = df_test[[\"pokoje\", \"metraz\", \"rok\"]]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Uczenie modelu" ] }, { "cell_type": "code", "execution_count": 157, "metadata": {}, "outputs": [], "source": [ "model = LinearRegression()" ] }, { "cell_type": "code", "execution_count": 158, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
LinearRegression()
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" ], "text/plain": [ "LinearRegression()" ] }, "execution_count": 158, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.fit(X_train, y_train)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Walidacja modelu" ] }, { "cell_type": "code", "execution_count": 159, "metadata": {}, "outputs": [], "source": [ "from sklearn.metrics import mean_squared_error, r2_score" ] }, { "cell_type": "code", "execution_count": 160, "metadata": {}, "outputs": [], "source": [ "y_train_pred = model.predict(X_train)" ] }, { "cell_type": "code", "execution_count": 161, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.6264197107092035" ] }, "execution_count": 161, "metadata": {}, "output_type": "execute_result" } ], "source": [ "r2_score(y_true=y_train, y_pred=y_train_pred)" ] }, { "cell_type": "code", "execution_count": 162, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "22930468691.882328" ] }, "execution_count": 162, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mean_squared_error(y_true=y_train, y_pred=y_train_pred)" ] }, { "cell_type": "code", "execution_count": 163, "metadata": {}, "outputs": [], "source": [ "y_val_pred = model.predict(X_val)" ] }, { "cell_type": "code", "execution_count": 164, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.5872189061243203" ] }, "execution_count": 164, "metadata": {}, "output_type": "execute_result" } ], "source": [ "r2_score(y_true=y_val, y_pred=y_val_pred)" ] }, { "cell_type": "code", "execution_count": 165, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "12603444942.321444" ] }, "execution_count": 165, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mean_squared_error(y_true=y_val, y_pred=y_val_pred)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Predykcja cen mieszkań" ] }, { "cell_type": "code", "execution_count": 166, "metadata": {}, "outputs": [], "source": [ "y_test_pred = model.predict(X_test)" ] }, { "cell_type": "code", "execution_count": 167, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
cena
0445999.679659
1391984.112513
2361680.683534
3634737.891029
4334716.539450
......
287639199.416015
288493459.955384
289343927.359472
290559751.151754
291511183.577622
\n", "

292 rows × 1 columns

\n", "
" ], "text/plain": [ " cena\n", "0 445999.679659\n", "1 391984.112513\n", "2 361680.683534\n", "3 634737.891029\n", "4 334716.539450\n", ".. ...\n", "287 639199.416015\n", "288 493459.955384\n", "289 343927.359472\n", "290 559751.151754\n", "291 511183.577622\n", "\n", "[292 rows x 1 columns]" ] }, "execution_count": 167, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y_test_pred_df = pd.DataFrame(y_test_pred, columns=['cena'])\n", "y_test_pred_df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Wizualizacja regresji liniowej" ] }, { "cell_type": "code", "execution_count": 168, "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Cena nieruchomości ze względna na liczbę pokoi dla danych treningowych" ] }, { "cell_type": "code", "execution_count": 169, "metadata": {}, "outputs": [ { "data": { "image/png": "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wDQECwAAYBqCBQAAMA3BAgAAmIZgAQAATEOwAAAApiFYAAAA0xAsAACAaQgWAADANAQLAABgGoIFAAAwDcECAACYhmABAABMQ7AAAACmIVgAAADTECwAAIBpCBYAAMA0BAsAAGAaggUAADANwQIAAJiGYAEAAExDsAAAAKYhWAAAANMQLAAAgGkIFgAAwDQECwAAYBqCBQAAMA3BAgAAmIZgAQAATEOwAAAApiFYAAAA0xAsAACAaQgWAADANAQLAABgGoIFAAAwDcECAACYhmABAABMQ7AAAACmIVgAAADT1ClYPP7443K5XBU+OnXqFKjeAACAw0TU9QFdunTRl19++fMXiKjzlwAAACGqzqkgIiJCiYmJgegFAAA4XJ3nWGzatEmtWrVS+/btNWrUKO3YsaPGeq/XK4/HU+EDAACEpjoFi969e2vGjBmaP3++pk6dqtzcXA0YMECFhYXVPmbSpElyu93lH8nJyWfdNAAAsCeX3+/31/fBR44cUdu2bfX888/r9ttvr7LG6/XK6/WWf+7xeJScnKyCggLFxcXV91sDAAALeTweud3uWl+/z2rmZZMmTdSxY0dt3ry52prIyEhFRkaezbcBAAAOcVb7WBw9elRbtmxRUlKSWf0AAAAHq1OwGD9+vBYvXqxt27Zp6dKluv766xUeHq6bb745UP0BAAAHqdNQyK5du3TzzTfr4MGDatGihS655BItX75cLVq0CFR/AADAQeoULD744INA9QEAAEIAZ4UAAADTECwAAIBpCBYAAMA0BAsAAGAaggUAADANwQIAAJiGYAEAAExDsAAAAKYhWAAAANMQLAAAgGkIFgAAwDQECwAAYBqCBQAAMA3BAgAAmIZgAQAATEOwAAAApiFYAAAA0xAsAACAaQgWAADANAQLAABgGoIFAAAwDcECAACYhmABAABMQ7AAAACmIVgAAADTECwAAIBpCBYAAMA0BAsAAGAaggUAADANwQIAAJiGYAEAAExDsAAAAKYhWAAAANMQLAAAgGkIFgAAwDQECwAAYBqCBQAAMA3BAgAAmIZgAQAATEOwAAAApiFYAAAA0xAsAACAaQgWAADANAQLAABgGoIFAAAwDcECAACY5qyCxeTJk+VyuTR27FiT2gEAAE5W72CxcuVKvfbaa+rWrZuZ/QAAAAerV7A4evSoRo0apWnTpqlp06Zm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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "coef = np.polyfit(X_train['pokoje'], y_train['cena'], 1)\n", "poly1d_fn = np.poly1d(coef)\n", "\n", "plt.plot(X_train['pokoje'], y_train['cena'], 'o', X_train['pokoje'], poly1d_fn(X_train['pokoje']), '--k')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Cena nieruchomości ze względna na rok wybudowania dla danych treningowych" ] }, { "cell_type": "code", "execution_count": 170, "metadata": {}, "outputs": [ { "data": { "image/png": "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69jdvHkzhg8fjqioKPTr1w9vvPGGr3fPKTX2+/vvv8ecOXOQlZWFmJgYDBw4EH/961/ttrF582aH73dFRYXsuna5gFFfX48hQ4bglVdecfj7++67D4WFhXj77bexd+9e3HPPPViwYAHWrl1rV27evHkoLy+3/TzzzDO235nNZlx11VVobm7Gt99+i3/9619444038Mgjj/h031zxdr+zsrLs9re8vBxLlixBfHw8ZsyYYbetlStX2pWbNWuWr3fPKVf7LYTArFmzcPjwYXz00UfYvXs3srOzMWXKFNTX19vK3Xvvvfj444+xevVqbNmyBadOncLs2bNtvw+191vOfp86dQqnTp3Cc889h5KSErzxxhsoLCzE3LlzO20v3N5vILyObzn7HYrH95YtWzB//nxs27YNn3/+OVpaWjBt2jTVj92ysjJcddVVmDRpEoqLi3HPPffg97//PT777DO/7q+VGvu9c+dOpKWl4e2338aPP/6IP/3pTygoKMDLL7/c6fX27dtn936npaXJr6zowgCINWvW2D128cUXi8cee8zuseHDh4s//elPtv9fdtll4u6773a63U8//VRoNBpRUVFhe2zZsmUiMTFRmEwmVeruDU/3u6OhQ4eKW2+91e22g0XHuu3bt08AECUlJbbHzGaz6N69u1ixYoUQQoiamhoRGRkpVq9ebSuzd+9eAUAUFRUJIULv/Zaz34785z//ETqdTrS0tDjddjDxdL/D7fj29P0OteO7srJSABBbtmwRQqh37P7xj38UF198sd1r3XDDDeKKK67w9S7J4sl+O3LnnXeKSZMm2f6/adMmAUCcPXvW47p1uRYMdy655BKsXbsWJ0+ehBACmzZtwv79+zFt2jS7cv/+97+RmpqKvLw8FBQUoKGhwfa7oqIiDBo0CD169LA9dsUVV8BoNOLHH3/0274oIXe/rXbu3Ini4mKHV7Tz589HamoqRo8ejX/+85+yl/b1N5PJBACIjo62PabRaBAVFYWvv/4aQNt+trS0YMqUKbYyAwYMQK9evVBUVAQg9N5vOfvtiMFgQGJiIiIi7JcwCqf32yqcjm9P3u9QPL6tt++Sk5MBqHfsFhUV2W3DWsa6jUDzZL+dbce6jfaGDh2KjIwMTJ06Fd98842iuvl9sbNg97e//Q233XYbMjMzERERAY1GgxUrVmDChAm2Mr/+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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "coef = np.polyfit(X_train['rok'], y_train['cena'], 1)\n", "poly1d_fn = np.poly1d(coef)\n", "\n", "plt.plot(X_train['rok'], y_train['cena'], 'o', X_train['rok'], poly1d_fn(X_train['rok']), '--k')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Cena nieruchomości ze względna na metraż dla danych treningowych" ] }, { "cell_type": "code", "execution_count": 171, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhYAAAGsCAYAAACB/u5dAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAABGMUlEQVR4nO3de1zUVf4/8NdwG0BgEBEBRcS7hJpXJPOSoqGmQlvburWa+tU0dTXbtqxtzdqifq3dy1pLWdfM1r5C3i95t/CGmhJeES8pFwW5wwAz5/cH35kcZgZm4DP31/Px4PHI+ZyZOacRP6/5fM55H5kQQoCIiIhIAm627gARERE5DwYLIiIikgyDBREREUmGwYKIiIgkw2BBREREkmGwICIiIskwWBAREZFkGCyIiIhIMgwWREREJBkGCyIiIpKMzYLFwYMHMXHiRISHh0MmkyEtLc3s1xBC4J///Ce6d+8OuVyO9u3b480335S+s0RERGQSD1u9cUVFBfr27YsZM2bg0UcfbdZrLFy4ELt27cI///lP9O7dG0VFRSgqKpK4p0RERGQqmT1sQiaTyZCamorExETtY0qlEq+88gq++eYbFBcXIyYmBu+88w5GjhwJADh37hz69OmDzMxM9OjRwzYdJyIiIh12O8di/vz5SE9Px/r163HmzBk8/vjjSEhIwKVLlwAAmzdvRufOnbFlyxZERUWhU6dO+J//+R9esSAiIrIhuwwW169fx+rVq7FhwwYMGzYMXbp0wV/+8hc8+OCDWL16NQDgypUruHbtGjZs2IA1a9YgJSUFGRkZeOyxx2zceyIiItdlszkWjTl79ixUKhW6d++u87hSqUSbNm0AAGq1GkqlEmvWrNG2++qrrzBgwABcuHCBt0eIiIhswC6DRXl5Odzd3ZGRkQF3d3edY35+fgCAsLAweHh46ISPXr16Aai/4sFgQUREZH12GSz69esHlUqFgoICDBs2zGCboUOHoq6uDtnZ2ejSpQsA4OLFiwCAyMhIq/WViIiIfmOzVSHl5eW4fPkygPog8d577+Ghhx5CUFAQOnbsiKeeego//vgjli9fjn79+uH27dvYs2cP+vTpgwkTJkCtVmPQoEHw8/PDBx98ALVajXnz5iEgIAC7du2yxZCIiIhcns2Cxf79+/HQQw/pPT5t2jSkpKSgtrYW//jHP7BmzRrcvHkTwcHBGDJkCJYtW4bevXsDAG7duoUFCxZg165daNWqFcaNG4fly5cjKCjI2sMhIiIi2EkdCyIiInIOdrnclIiIiBwTgwURERFJxuqrQtRqNW7dugV/f3/IZDJrvz0RERE1gxACZWVlCA8Ph5ub8esSVg8Wt27dQkREhLXfloiIiCRw48YNdOjQwehxqwcLf39/APUdCwgIsPbbExERUTOUlpYiIiJCex43xurBQnP7IyAggMGCiIjIwTQ1jYGTN4mIiEgyDBZEREQkGQYLIiIikgyDBREREUmGwYKIiIgkw2BBREREkmGwICIiIskwWBAREZFkrF4gi4iInI9KLXAspwgFZdUI8ffG4KgguLtxPyhXZHawuHnzJl588UVs374dlZWV6Nq1K1avXo2BAwdaon9ERGTndmTmYtnmLOSWVGsfC1N4Y+nEaCTEhNmwZ2QLZt0KuXv3LoYOHQpPT09s374dWVlZWL58OVq3bm2p/hERkR3bkZmLuWtP6oQKAMgrqcbctSexIzPXRj0jWzHrisU777yDiIgIrF69WvtYVFSU5J0iIiL7p1ILLNucBWHgmAAgA7BscxbGRIfytogLMeuKxaZNmzBw4EA8/vjjCAkJQb9+/bBy5cpGn6NUKlFaWqrzQ0REju9YTpHelYp7CQC5JdU4llNkvU6RzZkVLK5cuYIVK1agW7du2LlzJ+bOnYs///nP+Pe//230OcnJyVAoFNqfiIiIFneaiIhsr6DMeKhoTjtyDjIhhKGrWAZ5eXlh4MCB+Omnn7SP/fnPf8bx48eRnp5u8DlKpRJKpVL7Z81+7iUlJdw2nYjIgaVnF2LKyiNNtvtm1hDEdWljhR6RJZWWlkKhUDR5/jbrikVYWBiio6N1HuvVqxeuX79u9DlyuRwBAQE6P0RE5PgGRwUhTOENY7MnZKhfHTI4Ksia3SIbMytYDB06FBcuXNB57OLFi4iMjJS0U0REZP/c3WRYOrH+y2bDcKH589KJ0Zy46WLMChbPPfccjhw5grfeeguXL1/GunXr8K9//Qvz5s2zVP+IiMiOJcSEYcVT/RGq8NZ5PFThjRVP9WcdCxdk1hwLANiyZQuWLFmCS5cuISoqCosXL8asWbNMfr6p92iIiMhxsPKm8zP1/G12sGgpBgsiIiLHY5HJm0RERESNYbAgIiIiyTBYEBERkWQYLIiIiEgyDBZEREQkGQYLIiIikgyDBREREUmGwYKIiIgkw2BBREREkmGwICIiIskwWBAREZFkGCyIiIhIMgwWREREJBkGCyIiIpIMgwURERFJhsGCiIiIJMNgQURERJJhsCAiIiLJMFgQERGRZBgsiIiISDIMFkRERCQZBgsiIiKSDIMFERERSYbBgoiIiCTDYEFERESSYbAgIiIiyTBYEBERkWQYLIiIiEgyDBZEREQkGQYLIiIikgyDBREREUmGwYKIiIgkw2BBREREkmGwICIiIskwWBAREZFkGCyIiIhIMgwWREREJBkGCyIiIpIMgwURERFJhsGCiIiIJMNgQURERJJhsCAiIiLJMFgQERGRZBgsiIiISDIMFkRERCQZBgsiIiKSjFnB4rXXXoNMJtP56dmzp6X6RkRERA7Gw9wn3Hffffjhhx9+ewEPs1+CiIiInJTZqcDDwwOhoaGW6AsRERE5OLPnWFy6dAnh4eHo3LkznnzySVy/fr3R9kqlEqWlpTo/RERE5JzMChaxsbFISUnBjh07sGLFCuTk5GDYsGEoKysz+pzk5GQoFArtT0RERIs7TURERPZJJoQQzX1ycXExIiMj8d5772HmzJkG2yiVSiiVSu2fS0tLERERgZKSEgQEBDT3rYmIiMiKSktLoVAomjx/t2jmZWBgILp3747Lly8bbSOXyyGXy1vyNkREROQgWlTHory8HNnZ2QgLC5OqP0REROTAzAoWf/nLX3DgwAFcvXoVP/30E5KSkuDu7o4pU6ZYqn9ERETkQMy6FfLrr79iypQpKCwsRNu2bfHggw/iyJEjaNu2raX6R0RERA7ErGCxfv16S/WDiIiInAD3CiEiIiLJMFgQERGRZBgsiIiISDIMFkRERCQZBgsiIiKSDIMFERERSYbBgoiIiCTDYEFERESSYbAgIiIiyTBYEBERkWQYLIiIiEgyDBZEREQkGQYLIiIikgyDBREREUmGwYKIiIgkw2BBREREkmGwICIiIskwWBAREZFkGCyIiIhIMgwWREREJBkGCyIiIpIMgwURERFJhsGCiIiIJMNgQURERJJhsCAiIiLJMFgQERGRZBgsiIiISDIMFkRERCQZBgsiIiKSDIMFERERSYbBgoiIiCTDYEFERESSYbAgIiIiyTBYEBERkWQYLIiIiEgyDBZEREQkGQYLIiIikgyDBREREUmG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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "coef = np.polyfit(X_train['metraz'], y_train['cena'], 1)\n", "poly1d_fn = np.poly1d(coef)\n", "\n", "plt.plot(X_train['metraz'], y_train['cena'], 'o', X_train['metraz'], poly1d_fn(X_train['metraz']), '--k')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Cena nieruchomości ze względna na liczbę pokoi dla danych testowych" ] }, { "cell_type": "code", "execution_count": 172, "metadata": {}, "outputs": [ { "data": { "image/png": "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mj59eqh/3QYRRgAATY7X6635X7vdrgMHDmj37t01AeDkIzU1VWeffbYGDRokm82m5557Tlu2bNHixYvlcrlOe93rrrtOd911l3r27Kmrr75aa9eurbcHi8WiBQsWaMyYMWrXrl2jPT/22GO66667dOedd9b0X5eXXnpJPXr00NVXX91gEJGk6urqOn8PoxFGAACG8fl8qq6uVlxcnKqrq3XgwAGVlpbq66+/rjUa4HA4lJWVpY4dO2r48OFyuVxasmSJ3nnnHb3xxhunvW7z5s01fPhwPfDAA4qPj9e4ceO0YcOGBntZvXq1zj77bHXr1q3Rvl999VUNHDhQd911V4N1r7zyiq666irl5uY2GEROfhYul0tWq7XR97/wwguVlpYmSRo1apT27NmjDz74oFZNTEyMevTooVtuuUWDBg2SJD377LM6fPiwNm/eLJvNpuTkZNlsNtlsNrVr107Z2dlKTk5u9P1DzeILh4tFjfD3FsQAgPp5vV4dPXpUiYmJ+v7772W327V7926VlJScdmkgJydHbdu21XXXXae9e/fq9ddf17Jly7Rx48bTXrddu3bq37+/FixYoF27dunuu+/Wpk2bGuxl27ZtKi8v18UXX9xo3x9++KEkqX///o3WFhYWKj09Xeeee26jta+99pp69+6trKysBudNDB06VNOmTdP555+vW2+9Vdu2bdO2bdtq1SQmJmrAgAEaOXKk8vLy1LVrVy1btkyHDx/W9u3bTwsC7du3V6dOnZScnKyEhAR5vV7FxETfNE5/v78ZGQGAEDs5GuB2u9WyZUs5nU7Z7XZt375d+/btqzUa4HQ6NWDAACUlJWns2LHasmWL3n77bS1cuFA7d+487bW7du2qrl276vXXX9drr72mBx98UFu3bm2wH6fTqddee01jx45ttPe8vDx99tlnuvfee+utOXDggN544w05nU5VVlY2GkQkyeVyKSEhQfHx8XK73fXWXXLJJWrevLlatmyp0aNHa/369dq7d2/N8xaLRTabTZdccony8vLUrVs3JScna9myZTp48KC+/vrrWiEgOTlZHTp0UPv27WWz2RQXFyePxyOL5dQ7uddtyZIlftVJxy/Z+Csag0ggCCMAotqxY8fkdrt17NgxJSUlyW6369tvv1VRUZEOHDhw2qWBSy+9VMnJyRo1apTeeecdbdiwQXPmzNGhQ4dOe+2+ffuqW7duWrRokZ566in94x//0CeffFJvL61atVJFRYXmzZun+++/v966F198URaLRTfffLM2bNigKVOm1Fu7c+dO7dy5Uy6XSw6Ho9EgIqlmdKR58+b6/vvv66277LLLFBMTo86dO+vmm2/WqlWr9O2339Y8n5iYKJvNpvz8fF1wwQVKTU1VSkqKXn/9de3bt092u73OINC2bVu1atVKsbGxAc1XWLRokd+1//M//+N3LcxHGAEQEj6fT0eOHJHH45HP51NSUpJKS0t16NAhffDBB/ruu+9Omyw4YsQItW3bVldffbWWLVum//73v5oxY0adr3/xxRfrnHPO0bx58/TnP/9Zr776qj777LN6++nevbs+//xzTZ8+XU899VS9da+++qoyMzM1atQovfnmm5o1a1a9tVu2bNGePXskSXa7vcEgIh0PAZLUokULtWrVqs6VEJKUnJysQYMGyev1KicnR+PHj9eiRYtqfXGf/HK//vrr1b17d8XFxenSSy/VypUr9dVXX6mqqqpWCLDZbMrIyFBKSopatGiha6+9Vtdee22D/Z6UlpamF154wa9aScrPz/e7FpCYMwJEJY/HU/NFFxMTo6SkJO3Zs0eHDh3S+vXrTxsNOHbsmK644gplZWXp0ksvrbkk8PDDD9f5+pdddpn69++vv/zlL/rNb36jtWvX6osvvqi3n8suu0xvvvmmrr766jonH/7YwIEDtWHDBo0ZM0YvvfRSg7W9evXSJ598ottuu00LFixosLZz587avXu3Jk+erPnz59c50iEdDy3nn3++nn/+eS1btkyrV6+u9doJCQk1X/Djxo1TVlaWRo8ereLiYu3evVs7d+6U1+utMwi0bNlSiYmJDfYJRBN/v78JI0AQnRwNqKqqksVikdVqVatWrfTFF1/Ibrfrgw8+OC0IWK1WXXLJJerVq5cGDx6sOXPm6Isvvqj3y/Xiiy9Wfn6+Jk2apKuuukrvv/++nE5nvT3dcssteuaZZ3Teeefp448/brD/6667Ti+//LJ+/vOfa926dQ3WXnHFFVq5cqWuuOIK/ec//2mw9uc//7nee+89jRs3TqtWrdLBgwfr/d3OO+88/e1vf9PChQu1efPmWqMYP/5y/81vfqNOnTrpqquuqpkMuX37djVr1uy0SwPp6elq3ry5mjVr1mCfAIKLMIImx+PxyOl06ujRo4qJiVGrVq2UmJioTz/9VGVlZdq0adNplwVat26twYMH68ILL1Rubq6mTp2qzz//XMuXL6/zPYYOHapbb71VN910k19f7tOmTdOMGTPUrl072e32BmsLCgo0e/ZsnX322TVD//W57bbb9I9//EM9e/Zs8NKEJI0ZM0Yvvviihg8fri1bttS65v9jV199tQYPHqw//OEP+t///V/t2bNHf//73yXVHg1ISUnR7373O2VmZmrYsGEqKiqS0+nUZ599ppYtW9a5aiAhIaHJT9ADmiJW08AwPp9PFRUVKi8vV2Vlpaqrq9WiRQu53W5t2bJFLpdLZWVlp60YOOuss3TeeefpyiuvVFpamh5++GG9//779f5FPnjwYE2dOlUDBgxQv379VFxc3GBf8+fP19ixY9W7d+8G6xYvXqw5c+aod+/emjVrlqqrq+utfe+993TJJZdIkr766qsGX1dSzSqBDh06NBhGRo4cqR49ekiS/t//+38qKSnRP//5T0mq9cXesWNH3XTTTerataskaeHChTpy5Ii2b99+2mhAcnKy2rRpUzMa8Oabbzba70l33323JOnxxx9vtPbk5zt06FC/Xx8AfowwEuGOHTsmu92u8vJyHT16VC6XS61bt1ZFRYW2bt0qt9tdEwS2bdtWaxOg9u3b65prrtHhw4f9npxmsViCeh+D//u//1NGRoaGDh2qmTNnNli7fv167du3T82aNWs0iFgsFlVXVys+Pl7p6enav39/vbXXXXedsrOzJUl33XWXSktLtXjxYlmt1lp/5Xft2lUjRoyoCQ0rV66Uy+XS119/fdpoQEpKimw2W81oQFFRkd+fybRp0ySp0TkQknT++edLOn4ZBAAiFZdpfgKXy6VDhw7J6XQqLu54rjt69KhKS0v13//+V2effbYSEhLkcrn0ySef6N1335XT6dTgwYOVmZkpl8uljz76SCtXrtTQoUPVpUsXHT16VKtWrZLD4ah5n379+uno0aONDsdHotGjR+uOO+5Qnz59dN9992n37t16/fXXa77UT37J9+rVSxdffLH69u2rzMxMbdy4UW63WwcOHDhtomBycrISExP93jcAABAazBnxw549ezRo0CD17dtXbdq00dGjR/Xyyy/XPB8TE6NevXrp6NGjtVYKNG/eXEePHm3w3gCRYsiQIWrXrp1effVVJSYm1qwCOHLkSM1qjOzsbA0dOlTDhg1TamqqduzYodTUVCUmJio5OVktWrRQTEyM0tLSlJqa6tfWxgCA6MecET/MmzdPZWVlWrlyZZ3Pe73eOofX69skqGXLlkpISKi1UqBv375KSEjQ+vXra461b99ev/jFL5SQkKA9e/bozTff1DXXXKN+/frJarWqtLRUmzZtks1m04UXXqiePXvKarXK7XZr7969tYJA8+bNZbValZaWpuTkZENGA4YPHx7y9wAANB1NOoxMmjRJ77//vnJzc5Wdna2EhATt3Lmz5j4CeXl56ty5sxISElRVVaUDBw6oR48eatOmjRISEmSxWBQXFyebzcaSQQAAzlCTDiMdO3Y87a6HAADAWCz8BwAApiKMAAAAU51RGJk3b56ysrKUkJCg/v37N3q76FdeeUXnnHOOEhIS1LNnT61ateqMmgUAANEn4DCyZMkSFRQUaPr06dq6datyc3M1fPhwHThwoM76DRs2aPTo0frVr36ljz/+WCNGjNCIESOics8MAAAQuID3Genfv7/OP/98PfHEE5KOL3/NzMzUnXfeqcmTJ59WP2rUKFVVVenf//53zbEBAwaod+/eevrpp/16z3Dd9AwAANTP3+/vgEZGTt5rJC8v74cXiIlRXl6eNm7cWOc5GzdurFUvHd+nor566fjOphUVFbUeAAAgOgUURg4ePCiPx6O0tLRax9PS0lRWVlbnOWVlZQHVS9LMmTNrbQeemZkZSJsAACCChOVqmilTptS6zXtJSYnZLQEAgBAJaNOztm3bKjY2VuXl5bWOl5eXq3379nWe0759+4DqJclqtXJ/EwAAmoiARkbi4+PVt29fFRYW1hzzer0qLCzUwIED6zxn4MCBteol6e233663HgAANC0BbwdfUFCgcePGqV+/frrgggs0d+5cVVVVafz48ZKksWPHKiMjQzNnzpQkTZw4UUOHDtXs2bN15ZVXavHixdq8ebPmz58f3N8EAABEpIDDyKhRo2S32zVt2jSVlZWpd+/eWr16dc0k1b179yom5ocBl0GDBmnRokX605/+pPvuu09du3bVihUr1KNHj+D9FgAAIGIFvM+IGdhnBACAyOPv93dE3LX3ZF5ivxEAACLHye/txsY9IiKMHD58WJLYbwQAgAh0+PBh2Wy2ep+PiMs0Xq9X+/btU6tWrWSxWMxux1QVFRXKzMxUSUkJl6xCjM/aGHzOxuBzNgafc20+n0+HDx9Whw4das0nPVVEjIzExMSoY8eOZrcRVpKSkvg/ukH4rI3B52wMPmdj8Dn/oKERkZPCcgdWAADQdBBGAACAqQgjEcZqtWr69Olsl28APmtj8Dkbg8/ZGHzOZyYiJrACAIDoxcgIAAAwFWEEAACYijACAABMRRgBAACmIoxEiJkzZ+r8889Xq1at1K5dO40YMUI7duwwu62o9/DDD8tisWjSpElmtxJ1SktLddNNN6lNmzZKTExUz549tXnzZrPbijoej0dTp05V586dlZiYqC5duuivf/1ro/cKQcPWrl2r/Px8dejQQRaLRStWrKj1vM/n07Rp05Senq7ExETl5eVp586d5jQbAQgjEeK9997ThAkT9MEHH+jtt99WdXW1LrvsMlVVVZndWtT66KOP9I9//EO9evUyu5Woc+jQIQ0ePFjNmjXTf/7zH33++eeaPXu2UlJSzG4t6jzyyCN66qmn9MQTT2j79u165JFHNGvWLP397383u7WIVlVVpdzcXM2bN6/O52fNmqXHH39cTz/9tD788EO1aNFCw4cP19GjRw3uNDKwtDdC2e12tWvXTu+9955+/vOfm91O1KmsrNR5552nJ598Ug888IB69+6tuXPnmt1W1Jg8ebLWr1+vdevWmd1K1LvqqquUlpamZ555pubYNddco8TERP3rX/8ysbPoYbFYtHz5co0YMULS8VGRDh066Pe//73uueceSZLT6VRaWpqee+453XDDDSZ2G54YGYlQTqdTktS6dWuTO4lOEyZM0JVXXqm8vDyzW4lKr7/+uvr166frrrtO7dq1U58+fbRgwQKz24pKgwYNUmFhob788ktJ0ieffKL3339fl19+ucmdRa89e/aorKys1r8fNptN/fv318aNG03sLHxFxI3yUJvX69WkSZM0ePBg9ejRw+x2os7ixYu1detWffTRR2a3ErV2796tp556SgUFBbrvvvv00Ucf6a677lJ8fLzGjRtndntRZfLkyaqoqNA555yj2NhYeTwePfjgg7rxxhvNbi1qlZWVSZLS0tJqHU9LS6t5DrURRiLQhAkT9Nlnn+n99983u5WoU1JSookTJ+rtt99WQkKC2e1ELa/Xq379+umhhx6SJPXp00efffaZnn76acJIkL388st68cUXtWjRIuXk5KioqEiTJk1Shw4d+KwRNrhME2HuuOMO/fvf/9a7776rjh07mt1O1NmyZYsOHDig8847T3FxcYqLi9N7772nxx9/XHFxcfJ4PGa3GBXS09N17rnn1jrWvXt37d2716SOote9996ryZMn64YbblDPnj1188036+6779bMmTPNbi1qtW/fXpJUXl5e63h5eXnNc6iNMBIhfD6f7rjjDi1fvlzvvPOOOnfubHZLUemSSy7Rp59+qqKioppHv379dOONN6qoqEixsbFmtxgVBg8efNrS9C+//FJnnXWWSR1Fr++//14xMbX/qY+NjZXX6zWpo+jXuXNntW/fXoWFhTXHKioq9OGHH2rgwIEmdha+uEwTISZMmKBFixbptddeU6tWrWquO9psNiUmJprcXfRo1arVafNwWrRooTZt2jA/J4juvvtuDRo0SA899JCuv/56bdq0SfPnz9f8+fPNbi3q5Ofn68EHH1SnTp2Uk5Ojjz/+WHPmzNEtt9xidmsRrbKyUsXFxTU/79mzR0VFRWrdurU6deqkSZMm6YEHHlDXrl3VuXNnTZ06VR06dKhZcYNT+BARJNX5ePbZZ81uLeoNHTrUN3HiRLPbiDpvvPGGr0ePHj6r1eo755xzfPPnzze7pahUUVHhmzhxoq9Tp06+hIQE39lnn+27//77fS6Xy+zWItq7775b57/J48aN8/l8Pp/X6/VNnTrVl5aW5rNarb5LLrnEt2PHDnObDmPsMwIAAEzFnBEAAGAqwggAADAVYQQAAJiKMAIAAExFGAEAAKYijAAAAFMRRgAAgKkIIwAAwFSEEQAAYCrCCAAAMBVhBAAAmIowAgAATPX/AyExQZ2mJlvrAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "coef = np.polyfit(X_train['metraz'], y_train['cena'], 1)\n", "poly1d_fn = np.poly1d(coef)\n", "\n", "plt.plot(X_test['pokoje'], y_test_pred_df['cena'], 'yo', X_train['pokoje'], poly1d_fn(X_train['pokoje']), '--k')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Cena nieruchomości ze względna na rok wybudowania dla danych testowych" ] }, { "cell_type": "code", "execution_count": 173, "metadata": {}, "outputs": [ { "data": { "image/png": "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EUymTp2qwsJCzZs3T/n5+UpOTta6deucA2Jzc3Ndekjuv/9+WSwW3X///Tp69KgiIiI0adIkPfbYY83XCgAA0C5YDC+4nlJaWqqQkBCVlJQoODi4rasDAADc0Jjvb56VAwAATINgAgAATINgAgAATINgAgAATINgAgAATINgAgAATINgAgAATINgAgAATINgAgAATINgAgAATINgAgAATINgAgAATINgAgAATINgAgAATINgAgAATINgAgAATINgAgAATINgAgAATINgAgAATINgAgAATINgAgAATINgAgAATINgAgAATINgAgAATINgAgAATINgAgAATINgAgAATINgAgAATINgAgAATINgAgAATINgAgAATINgAgAATINgAgAATINgAgAATINgAgAATINgAgAATINgAgAATINgAgAATINgAgAATINgAgAATINgAgAATKNRwWTx4sVKTExUQECAUlJS9MUXX9Rbvri4WLNmzVJ0dLSsVqv69u2rd999t1EVBgAA7VcnT1dYsWKFMjIytGTJEqWkpGjRokVKT0/X7t271aNHjxrlKyoqdMUVV6hHjx568803FRsbq0OHDqlbt27NUX8AANCOWAzDMDxZISUlRaNHj9azzz4rSXI4HIqPj9dtt92me++9t0b5JUuW6IknntCuXbvk5+fXqEqWlpYqJCREJSUlCg4ObtQ2AABA62rM97dHl3IqKiq0detWpaWlnduAj4/S0tKUlZVV6zpr165VamqqZs2apcjISA0ePFiPP/647HZ7nfspLy9XaWmpywsAALR/HgWTEydOyG63KzIy0mV5ZGSk8vPza11n//79evPNN2W32/Xuu+/qgQce0MKFC/Xoo4/WuZ8FCxYoJCTE+YqPj/ekmgAAwEu1+F05DodDPXr00AsvvKCRI0dq6tSpuu+++7RkyZI615k7d65KSkqcr8OHD7d0NQEAgAl4NPg1PDxcvr6+KigocFleUFCgqKioWteJjo6Wn5+ffH19ncsGDBig/Px8VVRUyN/fv8Y6VqtVVqvVk6oBAIB2wKMeE39/f40cOVKZmZnOZQ6HQ5mZmUpNTa11nYsuukj79u2Tw+FwLtuzZ4+io6NrDSUAAKDj8vhSTkZGhpYuXapXX31VO3fu1M0336yysjLNnDlTkjR9+nTNnTvXWf7mm29WUVGRZs+erT179uidd97R448/rlmzZjVfKwAAQLvg8TwmU6dOVWFhoebNm6f8/HwlJydr3bp1zgGxubm58vE5l3fi4+P1/vvv64477tDQoUMVGxur2bNn65577mm+VgAAgHbB43lM2gLzmAAA4H1afB4TAACAlkQwAQAApkEwAQAApkEwAQAApkEwAQAApkEwAQAApkEwAQAApkEwAQAApkEwAQAApkEwAQAApkEwAQAApkEwAQAApkEwAQAApkEwAQAApkEwAQAApkEwAQAApkEwAQAApkEwAQAApkEwAQAApkEwAQAApkEwAQAApkEwAQAApkEwAQAApkEwAQAApkEwAQAApkEwAQAApkEwAQAApkEwAQAApkEwAQAApkEwAQAApkEwAQAApkEwAQAApkEwAQAApkEwAQAApkEwAQAApkEwAQAApkEwAQAApkEwAQAApkEwAQAApkEwAQAApkEwAQAAptGoYLJ48WIlJiYqICBAKSkp+uKLL9xab/ny5bJYLJo8eXJjdgsAANo5j4PJihUrlJGRofnz5+vLL7/UsGHDlJ6eruPHj9e73sGDB3XnnXfqkksuaXRlAQBA++ZxMHnqqad0ww03aObMmRo4cKCWLFmioKAgvfTSS3WuY7fbdfXVV+uhhx5S7969m1RhAADQfnkUTCoqKrR161alpaWd24CPj9LS0pSVlVXneg8//LB69Oih6667zq39lJeXq7S01OUFAADaP4+CyYkTJ2S32xUZGemyPDIyUvn5+bWu8+mnn2rZsmVaunSp2/tZsGCBQkJCnK/4+HhPqgkAALxUi96Vc/LkSV1zzTVaunSpwsPD3V5v7ty5Kikpcb4OHz7cgrUEAABm0cmTwuHh4fL19VVBQYHL8oKCAkVFRdUon5OTo4MHD2rSpEnOZQ6H4+yOO3XS7t27lZSUVGM9q9Uqq9XqSdUAAEA74FGPib+/v0aOHKnMzEznMofDoczMTKWmptYo379/f23fvl3Z2dnO15VXXqlx48YpOzubSzQAAMCFRz0mkpSRkaEZM2Zo1KhRGjNmjBYtWqSysjLNnDlTkjR9+nTFxsZqwYIFCggI0ODBg13W79atmyTVWA4AAOBxMJk6daoKCws1b9485efnKzk5WevWrXMOiM3NzZWPDxPKAgAAz1kMwzDauhINKS0tVUhIiEpKShQcHNzW1QEAAG5ozPc3XRsAAMA0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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "coef = np.polyfit(X_train['metraz'], y_train['cena'], 1)\n", "poly1d_fn = np.poly1d(coef)\n", "\n", "plt.plot(X_test['rok'], y_test_pred_df['cena'], 'yo', X_train['rok'], poly1d_fn(X_train['rok']), '--k')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Cena nieruchomości ze względna na metraż dla danych testowych" ] }, { "cell_type": "code", "execution_count": 174, "metadata": {}, "outputs": [ { "data": { "image/png": "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MWvWLCiVSrlLqXWmMlZTGSdgOmM1lXECpjNWUxknYDpj1ddxKkRl99sQERER1SKDmBkhIiIi48UwQkRERLJiGCEiIiJZMYwQERGRrAwijCxfvhxNmzaFtbU1goODcebMGblLqpZPPvkECoVC46d169bS6w8fPkRYWBgaNmyI+vXr46WXXkJqaqqMFWvvyJEj6N+/Pzw9PaFQKLB9+3aN14UQ+Pjjj+Hh4QEbGxv06tULV69e1Tjm3r17GDlyJOzs7ODg4IDXX38dOTk5dTiKylU2zldeeeWJ77hPnz4axxjCOMPDw9GpUyc0aNAArq6uGDhwIOLi4jSO0ebva0JCAvr16wdbW1u4urrinXfeQVFRUV0OpVLajDU0NPSJ7/XNN9/UOEbfx7pixQoEBARIm16FhITgl19+kV43lu8TqHysxvB9lmXevHlQKBSYPHmy1Kf336vQcxs3bhRWVlZi9erVIjY2VowbN044ODiI1NRUuUvT2axZs4S/v79ITk6WftLT06XX33zzTeHt7S0OHDggoqOjRZcuXUTXrl1lrFh7u3fvFh988IHYtm2bACCioqI0Xp83b56wt7cX27dvFxcuXBD/+te/RLNmzUReXp50TJ8+fURgYKA4deqUOHr0qPD19RXDhw+v45FUrLJxjhkzRvTp00fjO753757GMYYwzt69e4vvv/9eXL58WcTExIgXXnhBNG7cWOTk5EjHVPb3taioSLRp00b06tVLnD9/XuzevVs4OzuLmTNnyjGkcmkz1meffVaMGzdO43vNysqSXjeEsf70009i165d4s8//xRxcXHi/fffF5aWluLy5ctCCOP5PoWofKzG8H0+7syZM6Jp06YiICBATJo0SerX9+9V78NI586dRVhYmNRWqVTC09NThIeHy1hV9cyaNUsEBgaW+VpmZqawtLQUmzdvlvp+//13AUCcPHmyjiqsGY//klar1cLd3V0sWLBA6svMzBRKpVJs2LBBCCHElStXBADx22+/Scf88ssvQqFQiKSkpDqrvSrKCyMDBgwo9xxDHKcQQqSlpQkA4vDhw0II7f6+7t69W5iZmYmUlBTpmBUrVgg7OzuRn59ftwOogsfHKkTxL69H/wP/OEMdq6Ojo/j222+N+vssUTJWIYzv+7x//75o0aKF2Ldvn8bYDOF71etlmoKCApw9exa9evWS+szM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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "coef = np.polyfit(X_train['metraz'], y_train['cena'], 1)\n", "poly1d_fn = np.poly1d(coef)\n", "\n", "plt.plot(X_test['metraz'], y_test_pred_df['cena'], 'yo', X_train['metraz'], poly1d_fn(X_train['metraz']), '--k')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Funkcja predykcji ceny mieszkania" ] }, { "cell_type": "code", "execution_count": 175, "metadata": {}, "outputs": [], "source": [ "def cena_mieszkania(pokoje, metraz, rok):\n", " mieszkanie = pd.DataFrame([[pokoje, metraz, rok]], columns=['pokoje', 'metraz', 'rok'])\n", " cena = model.predict(mieszkanie).item()\n", " return np.round(cena, 2)" ] }, { "cell_type": "code", "execution_count": 176, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "184531.94" ] }, "execution_count": 176, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cena_mieszkania(pokoje=2, metraz=25, rok=2000)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.11" } }, "nbformat": 4, "nbformat_minor": 2 }