ここでは、Excelでお気楽「重回帰分析」というサイトに掲載されているサンプルデータを利用してPythonで重回帰分析を行ってみる。
まず、サンプルデータを下図に示す。
| 図1.サンプルデータ |
サンプルデータ(ファイル名:kenshu_data_20201114.xlsx)をダウンロードしてGoogleドライブのマイドライブ内にあるColab Notebooksフォルダ内に保存する。
以下のコードでサンプルデータをデータフレームに読み込む。
import pandas as pd path = '/content/drive/MyDrive/Colab Notebooks/kenshu_data_20201114.xlsx' df = pd.read_excel(path, header=1, index_col=0, usecols=[1, 2, 3, 4, 5]) df.columns = ['x1', 'x2', 'x3', 'y'] x = df[['x1','x2','x3']].values y = df['y'].values
リスト1 サンプルデータの読み込み
Pandasのread_excelでExcelファイルをデータフレームdfに読み込むが、その際、B列~F列までを読み込むためにusecolsパラメタで1~5列を指定している(usecolsの先頭列は0から始まることに注意)。その際、index_col=0というパラメタを指定してB列をインデックスとして設定している。また、header=1として2行目をヘッダとして設定している。ただし、その後、df.columnsを設定してヘッダを'x1', 'x2', 'x3', 'y'に書き換えている。
最後に説明変数'x1'~'x3'の値を2次元配列として取り出して変数 x に、目的変数'y'を1次元配列として取り出して変数 y に代入している。
重回帰分析のコードを以下に示す。
# 重回帰
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(x, y)
print(f'モデル関数の回帰変数 w:{model.coef_}')
print(f'モデル関数の切片 b: {model.intercept_:.1f}')
print('決定係数 R^2: ', model.score(x, y))
リスト2 scikit-learnを用いた重回帰分析
実行結果は以下のようになる。
モデル関数の回帰変数 w:[ 351.91580045 -3114.68394171 31731.9682103 ] モデル関数の切片 b: 495788.1 決定係数 R^2: 0.2628038898225983
0 件のコメント:
コメントを投稿