From a847c25479454f37ec185cbfd7a95c6549e0a307 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Sk=C3=B3rzewski?= Date: Thu, 24 Mar 2022 11:23:46 +0100 Subject: [PATCH] =?UTF-8?q?Rozbudowanie=20przyk=C5=82adu=2004?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lab/04_scikit-learn.ipynb | 67 +++++++++++++++++++++++++++++++-------- 1 file changed, 54 insertions(+), 13 deletions(-) diff --git a/lab/04_scikit-learn.ipynb b/lab/04_scikit-learn.ipynb index a8bd380..60fb7f0 100644 --- a/lab/04_scikit-learn.ipynb +++ b/lab/04_scikit-learn.ipynb @@ -31,24 +31,57 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "[[289411.43360715]\n", - " [285930.72623304]\n", - " [229893.92602325]\n", - " [823267.1750005 ]\n", - " [821038.18583152]\n", - " [356875.19267371]\n", - " [409340.86981766]\n", - " [278401.700237 ]\n", - " [301680.27997255]\n", - " [281051.71865054]]\n", - "Błąd średniokwadratowy wynosi 39595039990.2324\n" + "0 Polecam mieszkanie 2 pokojowe o metrażu 46,68...\n", + "1 Ekskluzywna oferta - tylko u nas! Projekt arc...\n", + "2 Polecam do kupna przestronne mieszkanie trzyp...\n", + "3 Dla rodziny albo pod wynajem. Świetna lokaliz...\n", + "4 NaN\n", + " ... \n", + "4933 Trzypokojowe mieszkanie do generalnego remont...\n", + "4934 OKAZJA!! LUKSUSOWY APARTAMENT W SĄSIEDZTWIE P...\n", + "4935 Jest to oferta nieruchomości z rynku pierwotn...\n", + "4936 Mam do sprzedania dom mieszkalny, jednorodzin...\n", + "4937 Sprzedaż nowego mieszkania w FAŁKOWIE - Osied...\n", + "Name: opis, Length: 4938, dtype: object\n" + ] + } + ], + "source": [ + "dataset_filename = 'flats.tsv'\n", + "data = pd.read_csv(dataset_filename, header=0, sep='\\t')\n", + "\n", + "print(data['opis'])\n", + "\n", + "data['ładne w opisie'] = data['opis'].apply(lambda x: True if 'ładne' in str(x) else False)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[302322.47270869]\n", + " [283694.74995925]\n", + " [276290.72977935]\n", + " [477362.89530745]\n", + " [420862.62245119]\n", + " [312510.3868097 ]\n", + " [362445.20969959]\n", + " [335753.83506582]\n", + " [759239.88142398]\n", + " [684376.72797254]]\n", + "Błąd średniokwadratowy wynosi 29811493540.217434\n" ] } ], @@ -67,11 +100,12 @@ " 'Liczba pięter w budynku',\n", " 'Piętro',\n", " 'Rok budowy',\n", + " 'ładne w opisie'\n", "]\n", "\n", "\n", "def preprocess(data):\n", - " \"\"\"Wstępne przetworzenie danych\"\"\"\n", + " \"\"\"Wstępne przetworzenie danych, np. zamiana wartości tekstowych na liczby\"\"\"\n", " data = data.replace({'parter': 0, 'poddasze': 0}, regex=True)\n", " data = data.applymap(np.nan_to_num) # Zamienia \"NaN\" na liczby\n", " return data\n", @@ -81,7 +115,14 @@ "\n", "# Wczytanie danych\n", "data = pd.read_csv(dataset_filename, header=0, sep='\\t')\n", + "\n", + "# Jeżeli chcemy, możemy stworzyć nową cechę (kolumnę) na podstawie istniejącej\n", + "# Poniższa cecha mówi, czy kolumna \"opis\" zawiera słowo \"ładne\"\n", + "data['ładne w opisie'] = data['opis'].apply(\n", + " lambda x: True if 'ładne' in str(x) else False)\n", + "\n", "data = data[FEATURES + ['cena']] # wybór cech\n", + "data = data[(data[\"Powierzchnia w m2\"] < 10000) & (data[\"cena\"] > 10000)]\n", "data = preprocess(data) # wstępne przetworzenie danych\n", "\n", "# Podział danych na zbiory uczący i testowy\n",