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千円
それっぽい売上金額が予測できました!