ライブラリを読み込む
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] #予測値の計算
コメント