buto > /dev/null

だいたい急に挑戦してゴールにたどり着かずに飽きる日々です

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)

f:id:butorisa:20201020132649p:plain

# 説明変数 分析は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

f:id:butorisa:20201020132704p:plain

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

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

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