scikit-learnで単回帰分析

回帰分析とは

予測に使う分析のこと 「y=ax+b」で表される

  • y:目的変数(予測したい値)
  • x:説明変数(予測に使う値)
  • a:回帰係数(傾き)
  • b:切片(y軸と接している値)

目的変数を売上金額、説明変数を気温とすると・・・
最高気温が変化すると売上金額はどう変化する? → 目的変数と説明変数の関係がわかる
目的変数と説明変数の関係をつかって目的変数(売上金額)を予測することを回帰分析といいます  

単回帰分析とは

1つの説明変数で分析を行う回帰分析のこと
説明変数が2つ以上の場合は、重回帰分析といいます
回帰分析(単回帰分析)をわかりやすく徹底解説!

Pythonで単回帰分析してみる

データ分析のライブラリ、scikit-learnを使って簡単な単回帰分析をしてみます
最高気温(x)から売上金額(y)を求めます

# データ読み込み  
import pandas as pd  
# 単回帰分析の実施  
from sklearn import linear_model  
# グラフを表示  
import matplotlib.pyplot as plt  
%matplotlib inline  

# csvデータを表示  
data = pd.read_csv('./data_choco.csv', header=0)  
df = pd.DataFrame(data)  
pd.DataFrame(data)  

# 説明変数 分析はDataFlame型で実施するので[[column]]を使う  
x = data[['highest_temperature']]  
# 目的変数  
y = data[['sales_amount']]  

# 単回帰分析を実施  
clf = linear_model.LinearRegression()  
clf.fit(x,y)  

print('回帰係数:{}'.format(clf.coef_[0]))  
print('切片:{}'.format(clf.intercept_))  

回帰係数:-15.805978115825992
切片:517.4933279957299

# グラフを表示  
plt.scatter(x, y)  
plt.plot(x, clf.predict(x), color='red')  
plt.xlabel('highest_temperature')  
plt.ylabel('sales_amount')  
plt.show  


赤線が目的変数と説明変数の関係です(回帰直線というらしい)
最高気温が低いほうが売上金額が高くなっています

上記の結果から「y=-15.8x+517.4」が気温と売上金額の関係になります
この式に当てはめて売上金額を予測します(ここは手動)

  • 最高気温:25℃  売上金額:122.4千円
  • 最高気温:10.5℃ 売上金額:351.5千円

それっぽい売上金額が予測できました!