From aa437c1964a6d8d3e1c8598f54288fc9b1951d45 Mon Sep 17 00:00:00 2001 From: Jakub Pokrywka Date: Tue, 26 Apr 2022 14:03:39 +0200 Subject: [PATCH] add 7 --- cw/07_regresja_liniowa.ipynb | 1086 +++++++++++++++++ cw/07_regresja_liniowa_ODPOWIEDZI.ipynb | 1416 +++++++++++++++++++++++ 2 files changed, 2502 insertions(+) create mode 100644 cw/07_regresja_liniowa.ipynb create mode 100644 cw/07_regresja_liniowa_ODPOWIEDZI.ipynb diff --git a/cw/07_regresja_liniowa.ipynb b/cw/07_regresja_liniowa.ipynb new file mode 100644 index 0000000..bf86c4b --- /dev/null +++ b/cw/07_regresja_liniowa.ipynb @@ -0,0 +1,1086 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Ekstrakcja informacji

\n", + "

7. Regresja liniowa [ćwiczenia]

\n", + "

Jakub Pokrywka (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Regresja liniowa" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## import bibliotek" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "from pathlib import Path\n", + "import seaborn as sns\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from sklearn.linear_model import LinearRegression\n", + "plt.rcParams['figure.figsize'] = [10, 5]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Zbiór \n", + "\n", + "https://git.wmi.amu.edu.pl/kubapok/mieszkania2-below1m-public" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## ładowanie zbioru train" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "DATA_DIR = Path('/home/kuba/Syncthing/przedmioty/2020-02/ISI/zajecia7_regresja_liniowa/mieszkania2')" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "with open(DATA_DIR / 'names') as f_names:\n", + " names = f_names.read().rstrip('\\n').split('\\t')" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "mieszkania_train = pd.read_csv(DATA_DIR/'train/in.tsv', sep ='\\t', names=names)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "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", + "
isNewroomsfloorlocationsqrMetres
0False31Centrum78
1False32Sołacz62
2False30Sołacz15
3False40Sołacz14
4False30Sołacz15
\n", + "
" + ], + "text/plain": [ + " isNew rooms floor location sqrMetres\n", + "0 False 3 1 Centrum 78\n", + "1 False 3 2 Sołacz 62\n", + "2 False 3 0 Sołacz 15\n", + "3 False 4 0 Sołacz 14\n", + "4 False 3 0 Sołacz 15" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mieszkania_train.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "with open(DATA_DIR/'train'/'expected.tsv','r') as train_exp_f:\n", + " Y_train = np.array([float(x.rstrip('\\n')) for x in train_exp_f.readlines()])" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([476118., 459531., 411557., ..., 320000., 364000., 209000.])" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Y_train" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "mieszkania_train['price'] = Y_train" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "X_train = mieszkania_train['sqrMetres'].to_numpy()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Wizualizacja danych" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "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", + "
isNewroomsfloorlocationsqrMetresprice
0False31Centrum78476118.0
1False32Sołacz62459531.0
2False30Sołacz15411557.0
3False40Sołacz14496416.0
4False30Sołacz15406032.0
.....................
1652True20Grunwald51299000.0
1653True22Centrum53339000.0
1654True34Stare65320000.0
1655True31Nowe67364000.0
1656True33Grunwald50209000.0
\n", + "

1657 rows × 6 columns

\n", + "
" + ], + "text/plain": [ + " isNew rooms floor location sqrMetres price\n", + "0 False 3 1 Centrum 78 476118.0\n", + "1 False 3 2 Sołacz 62 459531.0\n", + "2 False 3 0 Sołacz 15 411557.0\n", + "3 False 4 0 Sołacz 14 496416.0\n", + "4 False 3 0 Sołacz 15 406032.0\n", + "... ... ... ... ... ... ...\n", + "1652 True 2 0 Grunwald 51 299000.0\n", + "1653 True 2 2 Centrum 53 339000.0\n", + "1654 True 3 4 Stare 65 320000.0\n", + "1655 True 3 1 Nowe 67 364000.0\n", + "1656 True 3 3 Grunwald 50 209000.0\n", + "\n", + "[1657 rows x 6 columns]" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mieszkania_train" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "sns.scatterplot(x='sqrMetres',y='price', data = mieszkania_train, linewidth = 0, s = 5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Pytanie- Jaki jest baseline naszego systemu?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Czym jest regresja liniowa?- przypadek jednowymiarowym\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![regresja liniowa 1](obrazki/1.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![regresja liniowa 2](obrazki/2.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![regresja liniowa 3](obrazki/3.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![regresja liniowa 4](obrazki/4.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## wzór na regresję w przypadku jednowymiarowym?\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$Y = a*X_1 + b$\n", + "\n", + "$Y = w_1 * X_1 + w_0$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Zadanie - napisać funkcję predict_score(sqr_metres) która zwraca cenę mieszkania zgodnie z modelem regresji liniowej ( 5 minut) \n", + "\n", + "Należy samemu wymyślić współczynniki modelu" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "def predict_price(sqr_metres):\n", + " pass" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "predict_price(20)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "predict_price(40)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "predict_price(55)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "predict_price(0)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "Y_train_predicted = predict_price(X_train)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Mierzenie błędu" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![RMSE 2](obrazki/6.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![RMSE 2](obrazki/5.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Zadanie - napisać funkcję, która liczy błąd średniowadratowy na całym zbiorze (7 minut)\n", + "\n", + "rmse(Y_true, Y_predicted)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "def rmse(Y_true, Y_predicted):\n", + " pass " + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "rmse(np.array([300_000, 250_000]), np.array([300_000, 250_000]))" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "rmse(np.array([305_000, 250_000]) ,np.array([300_000, 350_000]) )" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "rmse(np.array([300_000, 250_000]), np.array([330_000, 360_000]))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Zadanie - za pomocą rmse policzyć błąd dla baseline (3 minuty)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Zadanie - za pomocą rmse policzyc błąd dla predykcji (2 minuty)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Na jakim zbiorze najlepiej sprawdzać wyniki?\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![a](obrazki/7.png)\n", + "\n", + "![a](obrazki/8.png)\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "mieszkania_dev = pd.read_csv(DATA_DIR/'dev-0'/'in.tsv', sep = '\\t', names = names)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "with open(DATA_DIR/'dev-0'/'expected.tsv','r') as dev_exp_f:\n", + " Y_dev = np.array([float(x.rstrip('\\n')) for x in dev_exp_f.readlines()])" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "mieszkania_dev['price'] = Y_dev" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "X_dev = mieszkania_dev['sqrMetres'].to_numpy()" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "sns.scatterplot(x='sqrMetres',y='price', data = mieszkania_dev, linewidth = 0, s = 5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Zadanie - policzyć rmse dla predykcji ze zbioru deweloperskiego modelu baseline i naszego modelu regresji liniowej" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Przypadek wielowymiarowy" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "sns.scatterplot(x='floor',y='price', data = mieszkania_train, linewidth = 0, s = 5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$Y = w_1 * X_1 + w_2 * X_1 + w_3 * X_3 + w_0$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Zadanie. Napisać analogiczną funkcję predict_price(sqr_metres, floor), policzyć rmse dla takiego modelu ( 7 minut)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## jak dobrać najlepsze parametry?" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "sns.lmplot(x='sqrMetres',y='price', data = mieszkania_train)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LinearRegression.html" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [], + "source": [ + "lm_model = LinearRegression()" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "LinearRegression()" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "lm_model.fit(mieszkania_train[['isNew','rooms', 'floor', 'sqrMetres']], Y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [], + "source": [ + "Y_train_predicted = lm_model.predict(mieszkania_train[['isNew','rooms', 'floor', 'sqrMetres']])" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [], + "source": [ + "rmse(Y_train, Y_train_predicted)" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [], + "source": [ + "Y_dev_predicted = lm_model.predict(mieszkania_dev[['isNew','rooms', 'floor', 'sqrMetres']])" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [], + "source": [ + "rmse(Y_dev, Y_dev_predicted)" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([469449.27836213])" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "lm_model.predict(np.array(([[0, 4, 3, 70]])))" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([455982.54297977])" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "lm_model.predict(np.array(([[0, 4, 3, 60]])))" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 4522.65059749, 73763.4125433 , -78.83243119, 1346.67353824])" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "lm_model.coef_" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "80364.97780599026" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "lm_model.intercept_" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "455982.5429800203" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "0 * 4522.65059749 + 4* 73763.4125433 + 3 * (-78.83243119) + 60 * 1346.67353824 + 80364.97780599032" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [], + "source": [ + "with open(DATA_DIR/'dev-0'/'out.tsv','w') as f_out_file:\n", + " for line in Y_dev_predicted:\n", + " f_out_file.write(str(line))\n", + " f_out_file.write('\\n')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Uwaga - regresja linowa działa dobrze tylko dla danych, gdzie występuje korelacja liniowa" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![RMSE 3](obrazki/9.png)\n", + "\n", + "![RMSE 4](obrazki/10.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Zadanie domowe\n", + "\n", + "\n", + "- https://gonito.net/challenge/retroc2\n", + "- termin 17.05\n", + "- należy użyć wektoryzacji (np tf-dif)\n", + "- wynik zaliczający to max 50 RMSE dla dev-0 \n", + "- punkty: 60, dla 3 najlepszych wyników na test-A: 80,\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "author": "Jakub Pokrywka", + "email": "kubapok@wmi.amu.edu.pl", + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "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.4" + }, + "subtitle": "7.Regresja liniowa[ćwiczenia]", + "title": "Ekstrakcja informacji", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/cw/07_regresja_liniowa_ODPOWIEDZI.ipynb b/cw/07_regresja_liniowa_ODPOWIEDZI.ipynb new file mode 100644 index 0000000..13217b2 --- /dev/null +++ b/cw/07_regresja_liniowa_ODPOWIEDZI.ipynb @@ -0,0 +1,1416 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Ekstrakcja informacji

\n", + "

7. Regresja liniowa [ćwiczenia]

\n", + "

Jakub Pokrywka (2021)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Regresja liniowa" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## import bibliotek" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "from pathlib import Path\n", + "import seaborn as sns\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from sklearn.linear_model import LinearRegression\n", + "plt.rcParams['figure.figsize'] = [10, 5]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Zbiór \n", + "\n", + "https://git.wmi.amu.edu.pl/kubapok/mieszkania2-below1m-public" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## ładowanie zbioru train" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "DATA_DIR = Path('/home/kuba/Syncthing/przedmioty/2020-02/ISI/zajecia7_regresja_liniowa/mieszkania2')" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "with open(DATA_DIR / 'names') as f_names:\n", + " names = f_names.read().rstrip('\\n').split('\\t')" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "mieszkania_train = pd.read_csv(DATA_DIR/'train/in.tsv', sep ='\\t', names=names)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "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", + "
isNewroomsfloorlocationsqrMetres
0False31Centrum78
1False32Sołacz62
2False30Sołacz15
3False40Sołacz14
4False30Sołacz15
\n", + "
" + ], + "text/plain": [ + " isNew rooms floor location sqrMetres\n", + "0 False 3 1 Centrum 78\n", + "1 False 3 2 Sołacz 62\n", + "2 False 3 0 Sołacz 15\n", + "3 False 4 0 Sołacz 14\n", + "4 False 3 0 Sołacz 15" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mieszkania_train.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "with open(DATA_DIR/'train'/'expected.tsv','r') as train_exp_f:\n", + " Y_train = np.array([float(x.rstrip('\\n')) for x in train_exp_f.readlines()])" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([476118., 459531., 411557., ..., 320000., 364000., 209000.])" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Y_train" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "mieszkania_train['price'] = Y_train" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "X_train = mieszkania_train['sqrMetres'].to_numpy()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Wizualizacja danych" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "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", + "
isNewroomsfloorlocationsqrMetresprice
0False31Centrum78476118.0
1False32Sołacz62459531.0
2False30Sołacz15411557.0
3False40Sołacz14496416.0
4False30Sołacz15406032.0
.....................
1652True20Grunwald51299000.0
1653True22Centrum53339000.0
1654True34Stare65320000.0
1655True31Nowe67364000.0
1656True33Grunwald50209000.0
\n", + "

1657 rows × 6 columns

\n", + "
" + ], + "text/plain": [ + " isNew rooms floor location sqrMetres price\n", + "0 False 3 1 Centrum 78 476118.0\n", + "1 False 3 2 Sołacz 62 459531.0\n", + "2 False 3 0 Sołacz 15 411557.0\n", + "3 False 4 0 Sołacz 14 496416.0\n", + "4 False 3 0 Sołacz 15 406032.0\n", + "... ... ... ... ... ... ...\n", + "1652 True 2 0 Grunwald 51 299000.0\n", + "1653 True 2 2 Centrum 53 339000.0\n", + "1654 True 3 4 Stare 65 320000.0\n", + "1655 True 3 1 Nowe 67 364000.0\n", + "1656 True 3 3 Grunwald 50 209000.0\n", + "\n", + "[1657 rows x 6 columns]" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mieszkania_train" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "sns.scatterplot(x='sqrMetres',y='price', data = mieszkania_train, linewidth = 0, s = 5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Pytanie- Jaki jest baseline naszego systemu?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Czym jest regresja liniowa?- przypadek jednowymiarowy" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![regresja liniowa 1](obrazki/1.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![regresja liniowa 2](obrazki/2.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![regresja liniowa 3](obrazki/3.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![regresja liniowa 4](obrazki/4.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## wzór na regresję w przypadku jednowymiarowym?\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$Y = a*X_1 + b$\n", + "\n", + "$Y = w_1 * X_1 + w_0$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Zadanie - napisać funkcję predict_score(sqr_metres) która zwraca cenę mieszkania zgodnie z modelem regresji liniowej ( 5 minut) \n", + "\n", + "Należy samemu wymyślić współczynniki modelu" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "def predict_price(sqr_metres):\n", + " return 2000* sqr_metres + 200000" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "240000" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "predict_price(20)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "280000" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "predict_price(40)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "310000" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "predict_price(55)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "200000" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "predict_price(0)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "Y_train_predicted = predict_price(X_train)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Mierzenie błędu" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![RMSE 1](obrazki/6.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![a](obrazki/5.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Zadanie - napisać funkcję, która liczy błąd średniowadratowy na całym zbiorze (7 minut)\n", + "\n", + "rmse(Y_true, Y_predicted)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "def rmse(Y_true, Y_predicted):\n", + " return np.sqrt(np.sum((Y_true - Y_predicted)**2)/ len(Y_true)) " + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.0" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rmse(np.array([300_000, 250_000]), np.array([300_000, 250_000]))" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "70799.01129253148" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rmse(np.array([305_000, 250_000]) ,np.array([300_000, 350_000]) )" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "80622.57748298549" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rmse(np.array([300_000, 250_000]), np.array([330_000, 360_000]))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Zadanie - za pomocą rmse policzyć błąd dla baseline (3 minuty)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([357461.18628244, 357461.18628244, 357461.18628244, ...,\n", + " 357461.18628244, 357461.18628244, 357461.18628244])" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.ones_like(Y_train) * Y_train.mean()" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "125698.71268014389" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rmse(Y_train, np.ones_like(Y_train) * Y_train.mean())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Zadanie - za pomocą rmse policzyc błąd dla predykcji (2 minuty)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "123420.02227684396" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rmse(Y_train, Y_train_predicted)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Na jakim zbiorze najlepiej sprawdzać wyniki?\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![RMSE 2](obrazki/7.png)\n", + "\n", + "![RMSE 3](obrazki/8.png)\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "mieszkania_dev = pd.read_csv(DATA_DIR/'dev-0'/'in.tsv', sep = '\\t', names = names)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [], + "source": [ + "with open(DATA_DIR/'dev-0'/'expected.tsv','r') as dev_exp_f:\n", + " Y_dev = np.array([float(x.rstrip('\\n')) for x in dev_exp_f.readlines()])" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [], + "source": [ + "mieszkania_dev['price'] = Y_dev" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [], + "source": [ + "X_dev = mieszkania_dev['sqrMetres'].to_numpy()" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "sns.scatterplot(x='sqrMetres',y='price', data = mieszkania_dev, linewidth = 0, s = 5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Zadanie - policzyć rmse dla predykcji ze zbioru deweloperskiego modelu baseline i naszego modelu regresji liniowej" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [], + "source": [ + "Y_dev_predicted = predict_price(X_dev)" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "117309.3154367544" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rmse(Y_dev, np.ones_like(Y_dev) * Y_dev.mean())" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "104227.56492755697" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rmse(Y_dev, Y_dev_predicted)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Przypadek wielowymiarowy" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "sns.scatterplot(x='floor',y='price', data = mieszkania_train, linewidth = 0, s = 5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$Y = w_1 * X_1 + w_2 * X_1 + w_3 * X_3 + w_0$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Zadanie. Napisać analogiczną funkcję predict_price(sqr_metres, floor), policzyć rmse dla takiego modelu ( 7 minut)" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [], + "source": [ + "def predict_price(sqr_metres, floor):\n", + " return 4000* sqr_metres + (-1000)* floor + 100000" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "298000" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "predict_price(50, 2)" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "295000" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "predict_price(50, 5)" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [], + "source": [ + "Y_dev_predicted = predict_price(mieszkania_dev['sqrMetres'], mieszkania_dev['floor'])" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "117436.43511182851" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rmse(Y_dev, np.mean(Y_train))" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "100227.89896326358" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rmse(Y_dev, Y_dev_predicted)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## jak dobrać najlepsze parametry?" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "sns.lmplot(x='sqrMetres',y='price', data = mieszkania_train)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LinearRegression.html" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [], + "source": [ + "lm_model = LinearRegression()" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "LinearRegression()" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "lm_model.fit(mieszkania_train[['isNew','rooms', 'floor', 'sqrMetres']], Y_train)" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [], + "source": [ + "Y_train_predicted = lm_model.predict(mieszkania_train[['isNew','rooms', 'floor', 'sqrMetres']])" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "103308.92502763818" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rmse(Y_train, Y_train_predicted)" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [], + "source": [ + "Y_dev_predicted = lm_model.predict(mieszkania_dev[['isNew','rooms', 'floor', 'sqrMetres']])" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "84157.87889057388" + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rmse(Y_dev, Y_dev_predicted)" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/kuba/anaconda3/envs/zajeciaei/lib/python3.10/site-packages/sklearn/base.py:450: UserWarning: X does not have valid feature names, but LinearRegression was fitted with feature names\n", + " warnings.warn(\n" + ] + }, + { + "data": { + "text/plain": [ + "array([469449.27836213])" + ] + }, + "execution_count": 47, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "lm_model.predict(np.array(([[0, 4, 3, 70]])))" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/kuba/anaconda3/envs/zajeciaei/lib/python3.10/site-packages/sklearn/base.py:450: UserWarning: X does not have valid feature names, but LinearRegression was fitted with feature names\n", + " warnings.warn(\n" + ] + }, + { + "data": { + "text/plain": [ + "array([455982.54297977])" + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "lm_model.predict(np.array(([[0, 4, 3, 60]])))" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 4522.65059749, 73763.4125433 , -78.83243119, 1346.67353824])" + ] + }, + "execution_count": 49, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "lm_model.coef_" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "80364.9778059895" + ] + }, + "execution_count": 50, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "lm_model.intercept_" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "455982.5429800203" + ] + }, + "execution_count": 51, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "0 * 4522.65059749 + 4* 73763.4125433 + 3 * (-78.83243119) + 60 * 1346.67353824 + 80364.97780599032" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [], + "source": [ + "with open(DATA_DIR/'dev-0'/'out.tsv','w') as f_out_file:\n", + " for line in Y_dev_predicted:\n", + " f_out_file.write(str(line))\n", + " f_out_file.write('\\n')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Uwaga - regresja linowa działa dobrze tylko dla danych, gdzie występuje korelacja liniowa" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![RMSE 5](obrazki/9.png)\n", + "\n", + "![6](obrazki/10.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Zadanie domowe\n", + "\n", + "\n", + "- https://gonito.net/challenge/retroc2\n", + "- termin 17.05\n", + "- należy użyć wektoryzacji (np tf-dif)\n", + "- wynik zaliczający to max 50 RMSE dla dev-0 \n", + "- punkty: 60, dla 3 najlepszych wyników na test-A: 80,\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "author": "Jakub Pokrywka", + "email": "kubapok@wmi.amu.edu.pl", + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "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.4" + }, + "subtitle": "7.Regresja liniowa[ćwiczenia]", + "title": "Ekstrakcja informacji", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +}