ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ ΡΠ΅Π²ΡΡΠ΅ΡΠ°
ΠΡΠΈΠ²Π΅Ρ, ΠΠ½ΡΠΎΠ½! ΠΠ΅Π½Ρ Π·ΠΎΠ²ΡΡ ΠΠΈΠΊΡΠΎΡΠΈΡ ΠΠ»ΡΠΈΠ½Π°, ΠΈ Ρ Π±ΡΠ΄Ρ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΡΠ²ΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ. ΠΡΠ΅Π΄Π»Π°Π³Π°Ρ ΠΎΠ±ΡΠ°ΡΡΡΡ Π½Π° "ΡΡ", Π½ΠΎ Π΅ΡΠ»ΠΈ ΡΠ΅Π±Π΅ Π±ΡΠ΄Π΅Ρ Π½Π΅ ΠΊΠΎΠΌΡΠΎΡΡΠ½ΠΎ, ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎΠΎΠ±ΡΠΈ ΠΈ ΠΌΡ ΠΏΠ΅ΡΠ΅ΠΉΠ΄Π΅ΠΌ Π½Π° "Π²Ρ".
ΠΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ ΡΠ΅Π»Ρ - Π½Π΅ ΡΠΊΠ°Π·Π°ΡΡ Π½Π° ΡΠΎΠ²Π΅ΡΡΡΠ½Π½ΡΠ΅ ΡΠΎΠ±ΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠΈ, Π° ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ ΡΠ²ΠΎΠΈΠΌ ΠΎΠΏΡΡΠΎΠΌ ΠΈ ΠΏΠΎΠΌΠΎΡΡ ΡΠ΅Π±Π΅ ΡΡΠ°ΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΠΎΠΌ ΠΏΠΎ Data Science. Π’Ρ ΡΠΆΠ΅ ΠΏΡΠΎΠ΄Π΅Π»Π°Π» Π±ΠΎΠ»ΡΡΡΡ ΡΠ°Π±ΠΎΡΡ Π½Π°Π΄ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ, Π½ΠΎ Π΄Π°Π²Π°ΠΉ ΡΠ΄Π΅Π»Π°Π΅ΠΌ Π΅Π³ΠΎ Π΅ΡΡ Π»ΡΡΡΠ΅. ΠΠΈΠΆΠ΅ ΡΡ Π½Π°ΠΉΠ΄ΡΡΡ ΠΌΠΎΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ - ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, Π½Π΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΠΉ, Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠΉ ΠΈ Π½Π΅ ΡΠ΄Π°Π»ΡΠΉ ΠΈΡ . Π― Π±ΡΠ΄Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠ²Π΅ΡΠ°, ΡΡΠΎΠ±Ρ Π±ΡΠ»ΠΎ Π»Π΅Π³ΡΠ΅ Π²ΠΎΡΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΌΠΎΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ:
ΠΠ°Π²Π°ΠΉ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π°Π΄ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ Π² Π΄ΠΈΠ°Π»ΠΎΠ³Π΅: Π΅ΡΠ»ΠΈ ΡΡ ΡΡΠΎ-ΡΠΎ ΠΌΠ΅Π½ΡΠ΅ΡΡ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΈΠ»ΠΈ ΠΎΡΠ²Π΅ΡΠ°Π΅ΡΡ Π½Π° ΠΌΠΎΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ - ΠΏΠΈΡΠΈ ΠΎΠ± ΡΡΠΎΠΌ. ΠΠ½Π΅ Π±ΡΠ΄Π΅Ρ Π»Π΅Π³ΡΠ΅ ΠΎΡΡΠ»Π΅Π΄ΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, Π΅ΡΠ»ΠΈ ΡΡ Π²ΡΠ΄Π΅Π»ΠΈΡΡ ΡΠ²ΠΎΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ:
ΠΠ°Π²Π°ΠΉ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΡΡΠΎ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ!
Π‘ΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅
- 1Β Β ΠΠ°Π³ΡΡΠ·ΠΊΠ° Π΄Π°Π½Π½ΡΡ
- 2Β Β Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΡ
- 2.1Β Β Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΡΠ°ΡΡΠ΅ΠΉ ΠΈ ΡΠ΅ΡΡΠΎΠ²ΠΎΠΉ Π²ΡΠ±ΠΎΡΠΊΠΈ
- 2.2Β Β ΠΠΎΠ΄Π΅Π»Ρ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ ΡΠ΅Π³ΡΠ΅ΡΡΠΈΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠΎΡΠΌΡΠ»
- 2.3Β Β ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ ΠΌΠ΅ΡΡΠΈΠΊΠΈ
- 2.4Β Β Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ ΡΠ΅Π³ΡΠ΅ΡΡΠΈΠΈ ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ sklearn.linear_model
- 2.5Β Β Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠ΅Π²Π΄ΠΎΡΠ°Π½Π΄ΠΎΠΌΠ½ΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΡ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΌΠ΅ΡΡΠΈΠΊ
- 3Β Β ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ
- 4Β Β ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°
- 5Β Β Π§Π΅ΠΊ-Π»ΠΈΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ
ΠΠ°ΡΠΈΡΠ° ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ²ΒΆ
ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ Π·Π°ΡΠΈΡΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² ΡΡΡΠ°Ρ ΠΎΠ²ΠΎΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Β«Π₯ΠΎΡΡ ΠΏΠΎΡΠΎΠΏΒ». Π Π°Π·ΡΠ°Π±ΠΎΡΠ°ΠΉΡΠ΅ ΡΠ°ΠΊΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ , ΡΡΠΎΠ±Ρ ΠΏΠΎ Π½ΠΈΠΌ Π±ΡΠ»ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ. ΠΠ±ΠΎΡΠ½ΡΠΉΡΠ΅ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΡ Π΅Π³ΠΎ ΡΠ°Π±ΠΎΡΡ.
ΠΡΠΆΠ½ΠΎ Π·Π°ΡΠΈΡΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅, ΡΡΠΎΠ±Ρ ΠΏΡΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ Π½Π΅ ΡΡ ΡΠ΄ΡΠΈΠ»ΠΎΡΡ. ΠΠΎΠ΄Π±ΠΈΡΠ°ΡΡ Π½Π°ΠΈΠ»ΡΡΡΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ.
ΠΠ°Π³ΡΡΠ·ΠΊΠ° Π΄Π°Π½Π½ΡΡ ΒΆ
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
import random
from sklearn.model_selection import train_test_split
from sklearn.metrics import r2_score, mean_squared_error
from sklearn.linear_model import LinearRegression
df = pd.read_csv('/datasets/insurance.csv')
display(df.head())
print()
print(f'ΠΡΠΎΠΏΡΡΠΊΠΈ \n \n{df.isna().sum()}')
sns.heatmap(df.drop('ΠΠΎΠ»', axis=1).corr(method = 'spearman'), annot =True)
plt.title('ΠΠ°ΡΡΠΈΡΠ° ΠΊΠΎΡΡΠ΅Π»ΡΡΠΈΠΈ', color='brown')
| ΠΠΎΠ» | ΠΠΎΠ·ΡΠ°ΡΡ | ΠΠ°ΡΠΏΠ»Π°ΡΠ° | Π§Π»Π΅Π½Ρ ΡΠ΅ΠΌΡΠΈ | Π‘ΡΡΠ°Ρ ΠΎΠ²ΡΠ΅ Π²ΡΠΏΠ»Π°ΡΡ | |
|---|---|---|---|---|---|
| 0 | 1 | 41.0 | 49600.0 | 1 | 0 |
| 1 | 0 | 46.0 | 38000.0 | 1 | 1 |
| 2 | 0 | 29.0 | 21000.0 | 0 | 0 |
| 3 | 0 | 21.0 | 41700.0 | 2 | 0 |
| 4 | 1 | 28.0 | 26100.0 | 0 | 0 |
ΠΡΠΎΠΏΡΡΠΊΠΈ ΠΠΎΠ» 0 ΠΠΎΠ·ΡΠ°ΡΡ 0 ΠΠ°ΡΠΏΠ»Π°ΡΠ° 0 Π§Π»Π΅Π½Ρ ΡΠ΅ΠΌΡΠΈ 0 Π‘ΡΡΠ°Ρ ΠΎΠ²ΡΠ΅ Π²ΡΠΏΠ»Π°ΡΡ 0 dtype: int64
Text(0.5, 1.0, 'ΠΠ°ΡΡΠΈΡΠ° ΠΊΠΎΡΡΠ΅Π»ΡΡΠΈΠΈ')
df.info()
<class 'pandas.core.frame.DataFrame'> RangeIndex: 5000 entries, 0 to 4999 Data columns (total 5 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 ΠΠΎΠ» 5000 non-null int64 1 ΠΠΎΠ·ΡΠ°ΡΡ 5000 non-null float64 2 ΠΠ°ΡΠΏΠ»Π°ΡΠ° 5000 non-null float64 3 Π§Π»Π΅Π½Ρ ΡΠ΅ΠΌΡΠΈ 5000 non-null int64 4 Π‘ΡΡΠ°Ρ ΠΎΠ²ΡΠ΅ Π²ΡΠΏΠ»Π°ΡΡ 5000 non-null int64 dtypes: float64(2), int64(3) memory usage: 195.4 KB
df.describe()
df.hist(bins= 50, figsize=(9,9))
array([[<AxesSubplot:title={'center':'ΠΠΎΠ»'}>,
<AxesSubplot:title={'center':'ΠΠΎΠ·ΡΠ°ΡΡ'}>],
[<AxesSubplot:title={'center':'ΠΠ°ΡΠΏΠ»Π°ΡΠ°'}>,
<AxesSubplot:title={'center':'Π§Π»Π΅Π½Ρ ΡΠ΅ΠΌΡΠΈ'}>],
[<AxesSubplot:title={'center':'Π‘ΡΡΠ°Ρ
ΠΎΠ²ΡΠ΅ Π²ΡΠΏΠ»Π°ΡΡ'}>,
<AxesSubplot:>]], dtype=object)
y_line = df.groupby('Π‘ΡΡΠ°Ρ
ΠΎΠ²ΡΠ΅ Π²ΡΠΏΠ»Π°ΡΡ').count()['ΠΠΎΠ»'].index
x_line = df.groupby('Π‘ΡΡΠ°Ρ
ΠΎΠ²ΡΠ΅ Π²ΡΠΏΠ»Π°ΡΡ').count()['ΠΠΎΠ»']
plt.plot(x_line,y_line)
plt.grid(True)
plt.title('Π§Π°ΡΡΠΎΡΠ° ΡΡΡΠ°Ρ
ΠΎΠ²ΡΡ
Π²ΡΠΏΠ»Π°Ρ')
plt.ylabel('ΠΠΎΠ»-Π²ΠΎ Π²ΡΠΏΠ»Π°Ρ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡ')
plt.xlabel('ΠΠΎΠ»-Π²ΠΎ Π²ΡΠΏΠ»Π°Ρ')
plt.show()
sns.pairplot(data = df, hue = 'Π‘ΡΡΠ°Ρ
ΠΎΠ²ΡΠ΅ Π²ΡΠΏΠ»Π°ΡΡ', palette='hls', diag_kind='hist')
<seaborn.axisgrid.PairGrid at 0x7fd899a95760>
ΠΡΠ²ΠΎΠ΄: ΠΡΠΎΠ±Π»Π΅ΠΌ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ Π½Π΅ Π½Π°Π±Π»ΡΠ΄Π°Π΅ΡΠ°. Π’ΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ, ΠΏΡΠΎΠΏΡΡΠΊΠΎΠ² Π½Π΅Ρ, Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΉ ΡΠ°ΠΊ-ΠΆΠ΅ Π½Π΅ Π·Π°ΠΌΠ΅ΡΠΈΠ»ΠΈ.
Π§Π°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ Π²ΡΠΏΠ»Π°ΡΡ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π»ΡΠ΄ΠΈ ΠΈΠ· ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ Π²ΠΎΠ·ΡΠ°ΡΡΠ° ΠΎΡ 40 Π΄ΠΎ 55 Π»Π΅Ρ ΠΈ ΠΊΠΎΠ»-Π²ΠΎ Π΄Π΅ΡΠ΅ΠΉ 1-2.
Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΡΒΆ
Π ΡΡΠΎΠΌ Π·Π°Π΄Π°Π½ΠΈΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ ΡΠΎΡΠΌΡΠ»Ρ Π² Jupyter Notebook.
Π§ΡΠΎΠ±Ρ Π·Π°ΠΏΠΈΡΠ°ΡΡ ΡΠΎΡΠΌΡΠ»Ρ Π²Π½ΡΡΡΠΈ ΡΠ΅ΠΊΡΡΠ°, ΠΎΠΊΡΡΠΆΠΈΡΠ΅ Π΅Ρ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ Π΄ΠΎΠ»Π»Π°ΡΠ° \$; Π΅ΡΠ»ΠΈ ΡΠ½Π°ΡΡΠΆΠΈ β Π΄Π²ΠΎΠΉΠ½ΡΠΌΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ \$\$. ΠΡΠΈ ΡΠΎΡΠΌΡΠ»Ρ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π½Π° ΡΠ·ΡΠΊΠ΅ Π²ΡΡΡΡΠΊΠΈ LaTeX.
ΠΠ»Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΌΡ Π·Π°ΠΏΠΈΡΠ°Π»ΠΈ ΡΠΎΡΠΌΡΠ»Ρ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ ΡΠ΅Π³ΡΠ΅ΡΡΠΈΠΈ. ΠΠΎΠΆΠ΅ΡΠ΅ ΠΈΡ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΠΎΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ, ΡΡΠΎΠ±Ρ ΡΠ΅ΡΠΈΡΡ Π·Π°Π΄Π°ΡΡ.
Π Π°Π±ΠΎΡΠ°ΡΡ Π² LaTeX Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ.
ΠΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ:
$X$ β ΠΌΠ°ΡΡΠΈΡΠ° ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠ² (Π½ΡΠ»Π΅Π²ΠΎΠΉ ΡΡΠΎΠ»Π±Π΅Ρ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π΅Π΄ΠΈΠ½ΠΈΡ)
$y$ β Π²Π΅ΠΊΡΠΎΡ ΡΠ΅Π»Π΅Π²ΠΎΠ³ΠΎ ΠΏΡΠΈΠ·Π½Π°ΠΊΠ°
$P$ β ΠΌΠ°ΡΡΠΈΡΠ°, Π½Π° ΠΊΠΎΡΠΎΡΡΡ ΡΠΌΠ½ΠΎΠΆΠ°ΡΡΡΡ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΈ
$w$ β Π²Π΅ΠΊΡΠΎΡ Π²Π΅ΡΠΎΠ² Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ ΡΠ΅Π³ΡΠ΅ΡΡΠΈΠΈ (Π½ΡΠ»Π΅Π²ΠΎΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠ°Π²Π΅Π½ ΡΠ΄Π²ΠΈΠ³Ρ)
ΠΡΠ΅Π΄ΡΠΊΠ°Π·Π°Π½ΠΈΡ:
$$ a = Xw $$
ΠΠ°Π΄Π°ΡΠ° ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ:
$$ w = \arg\min_w MSE(Xw, y) $$
Π€ΠΎΡΠΌΡΠ»Π° ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ:
$$ w = (X^T X)^{-1} X^T y $$
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΡΠ°ΡΡΠ΅ΠΉ ΠΈ ΡΠ΅ΡΡΠΎΠ²ΠΎΠΉ Π²ΡΠ±ΠΎΡΠΊΠΈΒΆ
features = df.drop(['Π‘ΡΡΠ°Ρ
ΠΎΠ²ΡΠ΅ Π²ΡΠΏΠ»Π°ΡΡ'],axis = 1)
target = df['Π‘ΡΡΠ°Ρ
ΠΎΠ²ΡΠ΅ Π²ΡΠΏΠ»Π°ΡΡ']
(features_train,
features_test,
target_train,
target_test) = train_test_split(features,target, test_size=0.25, random_state=12345)
ΠΠΎΠ΄Π΅Π»Ρ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ ΡΠ΅Π³ΡΠ΅ΡΡΠΈΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠΎΡΠΌΡΠ»ΒΆ
class LinearRegressionW:
def fit(self, train_features, train_target):
X = np.concatenate((np.ones((train_features.shape[0], 1)), train_features), axis=1)
y = train_target
w = np.linalg.inv(X.T.dot(X)).dot(X.T).dot(y)
self.w = w[1:]
self.w0 = w[0]
def predict(self, test_features):
return test_features.dot(self.w) + self.w0
ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ ΠΌΠ΅ΡΡΠΈΠΊΠΈΒΆ
def our_model(features_train, target_train, features_test, target_test):
model = LinearRegressionW()
model.fit(features_train, target_train)
predictions = model.predict(features_test)
print(f'MSE: {mean_squared_error(predictions,target_test)}')
print(f'R2_score: {r2_score(target_test, predictions)}')
return
our_model(features_train, target_train, features_test, target_test)
MSE: 0.11660517472525564 R2_score: 0.4352275712702667
Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ ΡΠ΅Π³ΡΠ΅ΡΡΠΈΠΈ ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ sklearn.linear_modelΒΆ
def linear(features_train, target_train,features_test,target_test):
model = LinearRegression()
model.fit(features_train, target_train)
predictions = model.predict(features_test)
print(f'MSE: {mean_squared_error(predictions,target_test)}')
print(f'R2_score: {r2_score(target_test, predictions)}')
return
linear(features_train, target_train,features_test,target_test)
MSE: 0.11660517472525592 R2_score: 0.43522757127026546
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠ΅Π²Π΄ΠΎΡΠ°Π½Π΄ΠΎΠΌΠ½ΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΡ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΌΠ΅ΡΡΠΈΠΊΒΆ
try:
NRP = np.random.RandomState(74)
matrix = NRP.normal(size=(4,4))
np.linalg.inv(matrix)
except:
print('Π§ΡΠΎ-ΡΠΎ ΠΏΠΎΡΠ»ΠΎ Π½Π΅ ΡΠ°ΠΊ')
features_train_matrix = features_train.dot(matrix)
features_test_matrix = features_test.dot(matrix)
features_test_matrix.head()
| 0 | 1 | 2 | 3 | |
|---|---|---|---|---|
| 3183 | -24340.078639 | 13228.787599 | -2675.892113 | 42616.147010 |
| 1071 | -26888.197875 | 14611.067074 | -2947.500968 | 47114.176875 |
| 2640 | -26270.401463 | 14277.005126 | -2891.489548 | 46010.123653 |
| 2282 | -21724.729702 | 11809.249534 | -2401.447248 | 38015.976829 |
| 1595 | -24958.876056 | 13563.702447 | -2737.818074 | 43717.928372 |
linear(features_train_matrix, target_train,features_test_matrix,target_test)
MSE: 0.1166051747252743 R2_score: 0.4352275712701763
our_model(features_train_matrix, target_train,features_test_matrix,target_test)
MSE: 0.11660517725362907 R2_score: 0.43522755902419274
ΠΡΠ²Π΅Ρ: ΠΠ°ΡΠ΅ΡΡΠ²ΠΎ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ ΡΠ΅Π³ΡΠ΅ΡΡΠΈΠΈ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ "Π½Π°ΡΡ" ΠΌΠΎΠ΄Π΅Π»Ρ ΠΈ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΠΎΠ΄ΠΈΠ½Π°Π½ΠΊΠΎΠ²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΡΡΠΈΠΊ Π΄Π»Ρ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΡ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠ² ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΡΡ .
ΠΠ±ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠ΅: ΠΠ°ΡΠ΅ΡΡΠ²ΠΎ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ ΡΠ΅Π³ΡΠ΅ΡΡΠΈΠΈ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Ρ.ΠΊ. ΠΌΡ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ ΠΌΠ΅Π½ΡΠ΅ΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΈ (Π½Π΅ ΡΠ΅Π»Π΅Π²ΡΠ΅). ΠΠ΅Π»Π°Π΅ΠΌ ΠΌΡ ΡΡΠΎ ΠΏΡΡΠ΅ΠΌ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΡΡ Π΄Π°Π½Π½ΡΡ Π½Π° ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΡ(ΠΈ ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΎΠ±ΡΠ°ΡΠΈΠΌΡΡ!) ΠΌΠ°ΡΡΠΈΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΉ ΡΠΈΡΠΈΠ½ΠΎΠΉ.
ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΡΠ°Π±ΠΎΡΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ:
* Π’ΡΠ°Π½ΡΠΏΠΎΠ½ΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΠΌΠ°ΡΡΠΈΡΠ° ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠ² ΡΠΌΠ½ΠΎΠΆΠ°Π΅ΡΡΡ Π½Π° ΡΠ΅Π±Ρ
* ΠΡΡΠΈΡΠ»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ°ΡΠ½Π°Ρ ΠΊ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΌΠ°ΡΡΠΈΡΠ°
* ΠΠ±ΡΠ°ΡΠ½Π°Ρ ΡΠΌΠ½ΠΎΠΆΠ°Π΅ΡΡΡ Π½Π° ΡΡΠ°Π½ΡΠΏΠΎΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΌΠ°ΡΡΠΈΡΡ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠ²
* Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠΌΠ½ΠΎΠΆΠ°Π΅ΡΡΡ Π½Π° Π²Π΅ΠΊΡΠΎΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠ΅Π»Π΅Π²ΠΎΠ³ΠΎ ΠΏΡΠΈΠ·Π½Π°ΠΊΠ°
ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡΒΆ
ΠΠ»Π³ΠΎΡΠΈΡΠΌ
Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΡΠ΅Π²Π΄ΠΎΡΠ°Π½Π΄ΠΎΠΌΠ½ΡΡ ΠΌΠ°ΡΡΠΈΡΡ(Π²Π΅Π΄Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π½Π°ΠΌ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠ³ΠΎΠ΄ΠΈΡΡΡ) ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΉ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΠΈ.
Π£ΠΌΠ½ΠΎΠΆΠ°Π΅ΠΌ Π΄Π°Π½Π½ΡΠ΅ Π½Π° ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΌΠ°ΡΡΠΈΡΡ.
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ: Π²Π½Π΅ΡΠ΅ΠΌ ΡΠ΄Π²ΠΈΠ³ ΠΏΡΡΠ΅ΠΌ Π΄ΠΎΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π½Π° ΡΠΈΡΠ»ΠΎ.
ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ ΠΌΠ΅ΡΡΠΈΠΊΠΈ
...
ΠΠ±ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠ΅
ΠΡΡΠ΅ ΠΌΡ ΡΠΆΠ΅ ΡΠ±Π΅Π΄ΠΈΠ»ΠΈΡΡ, ΡΡΠΎ Π΄ΠΎΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΎΠ±ΡΠ°ΡΠΈΠΌΡΡ ΠΌΠ°ΡΡΠΈΡΡ Π½Π΅ Π²Π½ΠΎΡΠΈΡ ΡΠ΅ΡΡΠ΅Π·Π½ΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ Π² Π°Π»Π³ΠΎΡΠΈΡΠΌΡ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·Π°Π½ΠΈΡ. ΠΠ΅ΡΡΠΈΠΊΠΈ ΠΎΡΡΠ°Π»ΠΈΡΡ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½Π½Ρ. Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ Π½Π°Ρ ΡΠ²Π΅Π»ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ $w_0$, ΡΡΠΎ Π½ΠΈ ΠΊΠ°ΠΊ Π½Π΅ ΠΎΡΡΠ°Π·ΠΈΡΡΡ Π½Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅, Π½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π·Π°ΡΠΈΡΡ Π΄Π°Π½Π½ΡΡ .
...
ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°ΒΆ
ΠΠ΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌ ΠΌΠ°ΡΡΠΈΡΡΒΆ
try:
NRP = np.random.RandomState(42)
matrix = NRP.normal(size=(4,4))
np.linalg.inv(matrix)
except:
print('Π§ΡΠΎ-ΡΠΎ ΠΏΠΎΡΠ»ΠΎ Π½Π΅ ΡΠ°ΠΊ')
ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡΒΆ
features_train_matrix = features_train.dot(matrix) * 42
features_test_matrix = features_test.dot(matrix) * 42
features_test_matrix.head()
| 0 | 1 | 2 | 3 | |
|---|---|---|---|---|
| 3183 | -769282.931077 | 888067.406490 | -757179.178060 | -761896.136118 |
| 1071 | -850313.930676 | 981489.787749 | -835707.253714 | -841499.619134 |
| 2640 | -830487.290444 | 958965.345633 | -816801.210921 | -822182.324923 |
| 2282 | -686380.451317 | 792809.084661 | -676004.761050 | -680065.962646 |
| 1595 | -789079.530820 | 910776.258303 | -776112.105652 | -781198.927699 |
Π‘ΡΡΠΎΠΈΠΌ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ ΠΌΠ΅ΡΡΠΈΠΊΠΈΒΆ
X = np.concatenate((np.ones((features_train_matrix.shape[0], 1)), features_train_matrix), axis=1)
y = target_train
w = np.linalg.inv(X.T.dot(X)).dot(X.T).dot(y)
a = features_test_matrix.dot(w[1:]) + w[0]
R2_score_m=r2_score(target_test, a)
MSE_m=mean_squared_error(a, target_test)
print("R2_score:",R2_score_m)
print("MSE:", MSE_m)
R2_score: 0.435227573546044 MSE: 0.11660517425538956
ΠΡΠΎΠ²Π΅ΡΠΈΠΌ ΠΊΠ°ΠΊ Π²ΠΎΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ΒΆ
print(f'ΠΡΡ
ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π² ΠΎΠ±ΡΡΠ°ΡΡΠ΅ΠΉ Π²ΡΠ±ΠΎΡΠΊΠ΅:\n{features_train}\n\n')
print('ΠΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅:\n', round((features_train_matrix.dot(np.linalg.inv(matrix))/42)))
ΠΡΡ
ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π² ΠΎΠ±ΡΡΠ°ΡΡΠ΅ΠΉ Π²ΡΠ±ΠΎΡΠΊΠ΅:
ΠΠΎΠ» ΠΠΎΠ·ΡΠ°ΡΡ ΠΠ°ΡΠΏΠ»Π°ΡΠ° Π§Π»Π΅Π½Ρ ΡΠ΅ΠΌΡΠΈ
3369 1 43.0 36200.0 1
1441 1 34.0 57600.0 0
571 0 32.0 41100.0 1
225 0 36.0 45100.0 1
2558 0 33.0 50600.0 2
... ... ... ... ...
3497 0 42.0 32100.0 0
3492 0 28.0 22700.0 4
2177 1 41.0 44700.0 1
3557 0 22.0 50100.0 4
4578 0 19.0 40800.0 0
[3750 rows x 4 columns]
ΠΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅:
0 1 2 3
3369 1.0 43.0 36200.0 1.0
1441 1.0 34.0 57600.0 0.0
571 0.0 32.0 41100.0 1.0
225 0.0 36.0 45100.0 1.0
2558 0.0 33.0 50600.0 2.0
... ... ... ... ...
3497 0.0 42.0 32100.0 0.0
3492 0.0 28.0 22700.0 4.0
2177 1.0 41.0 44700.0 1.0
3557 0.0 22.0 50100.0 4.0
4578 0.0 19.0 40800.0 0.0
[3750 rows x 4 columns]
ΠΠ±ΡΠΈΠΉ Π²ΡΠ²ΠΎΠ΄:
ΠΡ Π½Π°Ρ ΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΎΡΡ Π·Π°ΡΠΈΡΠΈΡΡ Π»ΠΈΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠ΅ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΡ. ΠΠ΄Π΅ 1 ΠΌΠ°ΡΡΠΈΡΠ° ΡΡΠΎ Π½Π°ΡΠΈ Π΄Π°Π½Π½ΡΠ΅, Π° 2 ΠΌΠ°ΡΡΠΈΡΠ° ΡΡΠΎ ΠΎΠ±ΡΠ°ΡΠΈΠΌΠ°Ρ ΠΌΠ°ΡΡΠΈΡΠ° ΡΠΎΠΎΡΠ²Π΅ΡΡΠ²ΡΡΡΠ΅ΠΉ ΡΠΈΡΠΈΠ½Ρ. ΠΡΠΎΡΠ°Ρ ΠΌΠ°ΡΡΠΈΡΠ° Π²ΡΡΡΡΠΏΠ°Π΅Ρ Ρ Π½Π°Ρ Π² ΡΠΎΠ»ΠΈ ΠΊΠ»ΡΡΠ° ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ. Π’Π°ΠΊ-ΠΆΠ΅ ΠΌΡ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠΈΡΠ»ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΌΠ°ΡΡΠΈΡΡ, ΠΊΠ°ΠΊ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΌΠ΅ΡΡ ΠΏΡΠΈ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠΈ.
ΠΡΠΎΠ²Π΅ΡΠΈΠ² ΠΌΠ΅ΡΡΠΈΠΊΠΈ MSE ΠΈ R2 Π΄ΠΎ ΠΈ ΠΏΠΎΡΠ»Π΅ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΌΡ ΡΠ±Π΅Π΄ΠΈΠ»ΠΈΡΡ ΡΡΠΎ ΠΌΠ΅ΡΡΠΈΠΊΠΈ ΠΎΡΡΠ°Π»ΠΈΡΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ, Π° ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠ²ΠΎΠΈΠΌΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠΌΠΈ ΠΌΡ Π½Π΅ Π²Π½Π΅ΡΠ»ΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΈ ΠΏΡΠΈ ΡΡΠΎΠΌ Π΄Π°Π½Π½ΡΠ΅ Π·Π°ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½Π½Ρ. ΠΡΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΌΠ΅ΡΡΠΈΠΊ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ ΡΠ΅Π³ΡΠ΅ΡΡΠΈΠΈ ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π½Π° ΡΠ΅ΠΎΡΠΈΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ Π΄ΡΠ±Π»ΠΈΡΠΎΠ²Π°Π»ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΌΠΎΠ΄Π΅Π»ΡΡ ΠΈΠ· ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Sklearn.
ΠΡΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΡΡΠΎ Π΄Π°Π½Π½ΡΠ΅ Π·Π°ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½Π½Ρ, Π½ΠΎ ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π·Π½Π°Ρ ΠΌΠ°ΡΡΠΈΡΡ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π»ΠΈ.
Π§Π΅ΠΊ-Π»ΠΈΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈΒΆ
ΠΠΎΡΡΠ°Π²ΡΡΠ΅ 'x' Π² Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π½ΡΡ ΠΏΡΠ½ΠΊΡΠ°Ρ . ΠΠ°Π»Π΅Π΅ Π½Π°ΠΆΠΌΠΈΡΠ΅ Shift+Enter.
- Jupyter Notebook ΠΎΡΠΊΡΡΡ
- ΠΠ΅ΡΡ ΠΊΠΎΠ΄ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π±Π΅Π· ΠΎΡΠΈΠ±ΠΎΠΊ
- Π―ΡΠ΅ΠΉΠΊΠΈ Ρ ΠΊΠΎΠ΄ΠΎΠΌ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Ρ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ
- ΠΡΠΏΠΎΠ»Π½Π΅Π½ ΡΠ°Π³ 1: Π΄Π°Π½Π½ΡΠ΅ Π·Π°Π³ΡΡΠΆΠ΅Π½Ρ
- ΠΡΠΏΠΎΠ»Π½Π΅Π½ ΡΠ°Π³ 2: ΠΏΠΎΠ»ΡΡΠ΅Π½ ΠΎΡΠ²Π΅Ρ Π½Π° Π²ΠΎΠΏΡΠΎΡ ΠΎΠ± ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΌΠ°ΡΡΠΈΡ
- Π£ΠΊΠ°Π·Π°Π½ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΎΡΠ²Π΅ΡΠ°
- ΠΠ°ΡΠΈΠ°Π½Ρ ΠΎΠ±ΠΎΡΠ½ΠΎΠ²Π°Π½
- ΠΡΠΏΠΎΠ»Π½Π΅Π½ ΡΠ°Π³ 3: ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ
- ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΠΎΠΏΠΈΡΠ°Π½
- ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΠΎΠ±ΠΎΡΠ½ΠΎΠ²Π°Π½
- ΠΡΠΏΠΎΠ»Π½Π΅Π½ ΡΠ°Π³ 4: Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½
- ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½
- ΠΡΠΎΠ²Π΅Π΄Π΅Π½ΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π΄ΠΎ ΠΈ ΠΏΠΎΡΠ»Π΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ
ΠΠΎ ΡΠΊΠΎΡΠΎΠΉ Π²ΡΡΡΠ΅ΡΠΈ, Π΅ΡΠ»ΠΈ Ρ ΡΠ΅Π±Ρ Π΅ΡΡΡ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ Π²ΠΎΠΏΡΠΎΡΡ, ΡΠΎ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΈΡΠΈ =)
ΠΠ±Π·ΠΎΡΡ ΠΏΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΠΈ Π² ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠΌ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠΈ: https://arxiv.org/pdf/1902.04109.pdf, https://www.researchgate.net/publication/342746786_Some_Applications_of_Machine_Learning_in_Cryptography
ΠΠ΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΎΠ±Π·ΠΎΡ Π½Π° Π¨ΠΈΡΡ Π₯ΠΈΠ»Π»Π°: https://habr.com/ru/post/595281/
ΠΡΡ ΠΏΠ°ΡΠ° ΡΡΠ°ΡΠ΅ΠΉ Π½Π° ΡΡΡ ΡΠ΅ΠΌΡ:
- https://medium.com/intuit-engineering/machine-learning-on-encrypted-data-no-longer-a-fantasy-58e37e9f31d7
- https://towardsdatascience.com/cryptography-crash-course-for-the-intimidated-892b7889528a
- https://towardsdatascience.com/homomorphic-encryption-machine-learning-new-business-models-2ba6a4f185d
ΠΡΠΈΠΌΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ Π°Π»Π³Π΅Π±ΡΡ Π² ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠΌ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠΈ: https://machinelearningmastery.com/examples-of-linear-algebra-in-machine-learning/
ΠΠ»Ρ ΡΠ΅Π³ΠΎ Π½ΡΠΆΠ½Π° ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠ° Π² ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠΌ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠΈ? https://proglib.io/p/dlya-chego-nuzhen-matematicheskiy-analiz-v-mashinnom-obuchenii-2021-02-15
ΠΠΎΠ»ΡΡΠ°Ρ ΡΡΠ°ΡΡΡ ΠΏΠΎ Π²Π΅ΠΊΡΠΎΡΠ°ΠΌ: https://neptune.ai/blog/understanding-vectors-from-a-machine-learning-perspective
ΠΠΎΠΆΠ½ΠΎ Π΅ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π»Π΅ΠΊΡΠΈΠΈ ΠΎΡ ΠΠ€Π’Π https://www.youtube.com/playlist?list=PLk4h7dmY2eYHHTyfLyrl7HmP-H3mMAW08
ΠΠ»Π°ΡΡΠ½Π°Ρ ΡΠ΅ΡΠΈΡ ΡΠΎΠ»ΠΈΠΊΠΎΠ² ΠΏΠΎ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ Π°Π»Π³Π΅Π±ΡΠ΅ Π½Π° Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠΌ (ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡΡΠΈΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΡΡΠΊΠΈΠ΅ ΡΡΠ±ΡΠΈΡΡΡ): https://www.youtube.com/playlist?list=PLRDl2inPrWQW1QSWhBU0ki-jq_uElkh2a
Π£Π΄Π°ΡΠΈ Π² Π±ΡΠ΄ΡΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ ΠΈ ΡΠ°Π±ΠΎΡΠ΅, Π²ΡΡ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ!