aitech-eks-pub-22/cw/07_regresja_liniowa.ipynb
Jakub Pokrywka aa437c1964 add 7
2022-04-26 14:03:39 +02:00

1087 lines
120 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n",
"<div class=\"alert alert-block alert-info\">\n",
"<h1> Ekstrakcja informacji </h1>\n",
"<h2> 7. <i>Regresja liniowa</i> [ćwiczenia]</h2> \n",
"<h3> Jakub Pokrywka (2021)</h3>\n",
"</div>\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": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>isNew</th>\n",
" <th>rooms</th>\n",
" <th>floor</th>\n",
" <th>location</th>\n",
" <th>sqrMetres</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>False</td>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>Centrum</td>\n",
" <td>78</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>False</td>\n",
" <td>3</td>\n",
" <td>2</td>\n",
" <td>Sołacz</td>\n",
" <td>62</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>False</td>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Sołacz</td>\n",
" <td>15</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>False</td>\n",
" <td>4</td>\n",
" <td>0</td>\n",
" <td>Sołacz</td>\n",
" <td>14</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>False</td>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Sołacz</td>\n",
" <td>15</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"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": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>isNew</th>\n",
" <th>rooms</th>\n",
" <th>floor</th>\n",
" <th>location</th>\n",
" <th>sqrMetres</th>\n",
" <th>price</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>False</td>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>Centrum</td>\n",
" <td>78</td>\n",
" <td>476118.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>False</td>\n",
" <td>3</td>\n",
" <td>2</td>\n",
" <td>Sołacz</td>\n",
" <td>62</td>\n",
" <td>459531.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>False</td>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Sołacz</td>\n",
" <td>15</td>\n",
" <td>411557.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>False</td>\n",
" <td>4</td>\n",
" <td>0</td>\n",
" <td>Sołacz</td>\n",
" <td>14</td>\n",
" <td>496416.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>False</td>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>Sołacz</td>\n",
" <td>15</td>\n",
" <td>406032.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1652</th>\n",
" <td>True</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>Grunwald</td>\n",
" <td>51</td>\n",
" <td>299000.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1653</th>\n",
" <td>True</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>Centrum</td>\n",
" <td>53</td>\n",
" <td>339000.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1654</th>\n",
" <td>True</td>\n",
" <td>3</td>\n",
" <td>4</td>\n",
" <td>Stare</td>\n",
" <td>65</td>\n",
" <td>320000.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1655</th>\n",
" <td>True</td>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>Nowe</td>\n",
" <td>67</td>\n",
" <td>364000.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1656</th>\n",
" <td>True</td>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>Grunwald</td>\n",
" <td>50</td>\n",
" <td>209000.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>1657 rows × 6 columns</p>\n",
"</div>"
],
"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": [
"<AxesSubplot:xlabel='sqrMetres', ylabel='price'>"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 720x360 with 1 Axes>"
]
},
"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": [
"<AxesSubplot:xlabel='sqrMetres', ylabel='price'>"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 720x360 with 1 Axes>"
]
},
"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": [
"<AxesSubplot:xlabel='floor', ylabel='price'>"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 720x360 with 1 Axes>"
]
},
"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": [
"<seaborn.axisgrid.FacetGrid at 0x7fbaa0c46760>"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 360x360 with 1 Axes>"
]
},
"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
}