Lineaarinen regressio - yksi selittävä muuttuja

Koneoppimisen mallit löytyvät sklearn-kirjastosta (scikit-learn). Lue lisää https://scikit-learn.org/stable/

In [1]:
# Tuon kirjastot
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
In [2]:
# Avaan datan
df = pd.read_excel('http://taanila.fi/linreg1.xlsx')
df
Out[2]:
Kuukausi Mainoskulut 1000 € Myynti 1000 €
0 1 1.2 101
1 2 0.8 92
2 3 1.0 110
3 4 1.3 120
4 5 0.7 90
5 6 0.8 82
6 7 1.0 93
7 8 0.6 75
8 9 0.9 91
9 10 1.1 105
In [3]:
# Riippuvuuden tarkastelua seaborn-kirjaston jointoplot-kaavion avulla
sns.jointplot(data=df, x='Mainoskulut 1000 €', y='Myynti 1000 €', kind='reg')
Out[3]:
<seaborn.axisgrid.JointGrid at 0x23ea5129c50>
In [4]:
# Valmistelen datan

X = df['Mainoskulut 1000 €'].to_frame() # feature-matriisi X; huomaa dataframeksi muuntaminen (to_frame)

y = df['Myynti 1000 €'] # target eli selitettävä/ennustettava muuttuja
In [5]:
# Tuon lineaarisen regressiomallin
from sklearn.linear_model import LinearRegression

# Sovitan mallin dataan
malli = LinearRegression().fit(X,y)
In [6]:
malli.coef_ # regressiosuoran kulmakerroin
Out[6]:
array([52.56756757])
In [7]:
malli.intercept_ # regressiosuoran vakiotermi
Out[7]:
46.486486486486505
In [8]:
malli.score(X,y) # selityskerroin
Out[8]:
0.7663982928521625
In [9]:
malli.predict(pd.DataFrame([0.7, 0.8, 0.9])) # myyntiennusteet, jos x = 0.7, 0.8 tai 0.9
Out[9]:
array([83.28378378, 88.54054054, 93.7972973 ])