線形単回帰分析
機械学習ライブラリの scikit-learn を使って線形回帰モデルを作成い、単回帰分析 を行います。
線形回帰に予測を行うクラスとして linear_model.LinearRegression が用意されています。
このクラスの主なメソッドは下記の通りです。
メソッド | 内容 |
---|---|
fit(X, y [, sample_weight]) | 線形回帰モデルの当てはめを実行。 |
get_params([deep]) | 推定に用いたパラメータを取得。 |
predict(X) | 作成したモデルを利用して予測を実行。 |
score(X, y [, sample_weight]) | 決定係数R2 を出力。 |
set_params(**params) | パラメータを設定。 |
サンプルコード
csvファイルをデータフレームに読み込み、気温と売上数の 単回帰分析 を行うサンプルコードは次の通りです。
x に代入されるデータは、データフレームの Seriesオブジェクト から Numpyの配列(ndarray) に変換する必要があります。
定数 np.newaxis を、インデックスを指定するブラケットの中に置くことで、1次元配列やベクトルに対して 列次元が1の行列 にすることができます。(10行目)
[Google Colaboratory]
1 | # 線形単回帰分析を実行 |
読み込むCSVファイルは以下の通りです。
30日間の最高気温とその日の売上数がまとめられています。
1 | 最高気温,売上数 |
[実行結果]
回帰係数 a と 切片 b が表示されました。
直線の傾きを示す回帰係数は 33.7408 という正の値なので、最高気温が高くなれば売上数が増加するという 正の相関 があることが分かります。
y軸との切片 を表す定数項は -760.877 と負の値となっており、x軸の最高気温が0度のときは y の値が大きくマイナスになることを示しています。
予測
最高気温が 25度、35度 のときの 売上数を予測 してみます。
[Google Colaboratory]
1 | x1 = [[25]] |
[実行結果]
気温が25度のとき 82.642、気温が35度のときは 352.569 と 売上数の予測 を行うことができました。