重回帰分析を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] #予測値の計算

コメント

  1. ivistroy.ru より:

    I’m impressed, I must say. Rarely do I encounter a blog that’s equally educative and entertaining, and let me tell you, you have hit the nail on the head. The issue is something that not enough folks are speaking intelligently about. I’m very happy that I stumbled across this in my search for something relating to this.

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