重回帰分析をPythonで実装する

スポンサーリンク

ライブラリを読み込む

import pandas as pd
import seaborn as sns #データ可視化ライブラリ
from sklearn.linear_model import LinearRegression #機械学習ライブラリ>線形回帰関数
from sklearn.model_selection import train_test_split #機械学習ライブラリ>データ分割関数

データをダウンロードする

UCI(University of California, Irvine)で配布されているmachine-learning-databasesのhousing.dataを使用します。

CSVに変換して、ヘッダー行を追加したファイルを配布していますので、ダウンロードしてください。

学習データを読み込む

df=pd.read_csv("housing.csv")

学習データを確認する

df.head() #先頭5行を表示
len(df) #レコード数の確認
df.describe() #統計量の確認
sns.distplot(df["y"], bins=30) #分布の確認
df.corr() #相関係数の確認
sns.pairplot(df) #相関係数を可視化

説明変数と目的変数を分割する

#df.iloc[行, 列]
X=df.iloc[:, :-1] #全ての行、最後以外の列を取得
y=df.iloc[:, -1] #全ての行、最後の列を取得

モデルの構築と検証する

model=LinearRegression() #モデルの宣言
model.fit(X,y) #モデルの学習
model.score(X,y) #決定係数の確認

訓練データと検証データを分割する

50%を訓練、50%を検証データとして設定します。random_stateで乱数のシードを固定します。

#訓練データと検証データの分割
X_train, X_test, y_train, y_test=train_test_split(X, y, test_size = 0.5, random_state=1)

#訓練データでモデルの学習
model.fit(X_train, y_train)

# 訓練データを検証
model.score(X_train, y_train)

#検証
model.score(X_test, y_test)

予測値を計算する

x=X.iloc[0, :] #Xから1行目のデータを取得
y_pred=model.predict([x])[0] #予測値の計算

コメント

タイトルとURLをコピーしました