kaggle のラーニングを受けて理解を深めるための記事
マシンラーニング初心者向け
使用データHousing Prices Competition for Kaggle Learn Users
https://www.kaggle.com/c/home-data-for-ml-course
まずは基本のデータ読み込み、モデル作成、予測、評価、投稿データ作成について
データ読み込み
test.csv train.csvのみでまずは十分
使用ライブラリ
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_absolute_error
データの読み込み
X_full = pd.read_csv('train.csv', index_col='Id')
X_test_full = pd.read_csv('test.csv', index_col='Id')
X_test_full はあとで使うのでとりあえず放置
X_full で予測、評価まで実施
X_fullのなかからSalePriceをyに入れ込む、
これをトレーニングデータの予測値とする
y = X_full.SalePrice
予測データ作成
今回はお試しの予想なので、数値データの都合のいいものだけ抜き出し。
features = ['LotArea', 'YearBuilt', '1stFlrSF', '2ndFlrSF', 'FullBath', 'BedroomAbvGr', 'TotRmsAbvGrd']
この7つを抜き出し訓練データXとして使う
X = X_full[features]
Featuresの中に7個の列名が入っているのでこれでXに抜き出されたデータ格納
X_train, X_valid, y_train, y_valid = train_test_split(X, y, train_size=0.8, test_size=0.2,random_state=0)
訓練データを分割して訓練データ、テストデータとする
モデル作成及びトレーニング
model = RandomForestRegressor(n_estimators=50, random_state=0)
model.fit(X_train, y_train)
preds = model.predict(X_valid)
ここでmodelとしているが名前は何でもいい、fit,modelの前の名前があっていればOK
今回はランダムフォレスト使用(なんでもいいがまずはお手頃な)
詳しい説明はこちら
https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestRegressor.html
n_estimatorsなどいろいろあるが、慣れたらここら辺のパラメータも使用
これでPredsの中に訓練データで学習したデータからテストデータのXを用いて予測したyが出力される。
※スコア評価
今回はMAEを使用、要は予想した値と実際の値を引いて、全データ足し合わせたやつ
mean_absolute_error(y_valid, preds)
これでだいたい24000くらい、いいか悪いかはおいておいてこの数字。
0になるのが一番いい予想
本当はいろいろな比較をして最終的なデータを使用するが、
今回はランダムフォレストの枝が50のデータで予測
Predictの部分を一番初めに入れた予測データに置き換え
preds_test = my_model.predict(X_test)
これがKaggleで要求されている提出フォーマット
output = pd.DataFrame({'Id': X_test.index,
'SalePrice': preds_test})
output.to_csv('submission.csv', index=False)
このCSVを提出すれば結果が出てくる。