lightgbm

データをカテゴリーにしておく必要がある
for col in ["都道府県名", "地区名", "最寄駅:名称", "間取り", "建物の構造", "用途", "今後の利用目的", "都市計画", "改装", "取引の事情等"]:
df[col] = df[col].astype("category")

import lightgbm as lgb
#学習データと検証データ分ける
from sklearn.model_selection import train_test_split  
#平均絶対誤差
from sklearn.metrics import mean_absolute_error as mae
#学習データと検証データを分ける  8割:2割
df_train, df_val =train_test_split(df, test_size=0.2)
#目的変数と説明変数に分ける
col = "取引価格(総額)_log"
train_y = df_train[col]
train_x = df_train.drop(col, axis=1)

val_y = df_val[col]
val_x = df_val.drop(col, axis=1)

trains = lgb.Dataset(train_x, train_y)
valids = lgb.Dataset(val_x, val_y)
#回帰なのでregression  評価指標 平均絶対誤差 mae
params = {
"objective": "regression",
"metrics": "mae"
}

#num_boost_roun  デフォ10 何回繰り返すか
early_stopping_rounds 過学習を防ぐために止める
model = lgb.train(params, trains, valid_sets=valids, num_boost_round=1000, early_stopping_rounds=100)

vals = model.predict(val_x)
mae(vals, val_y)

df_test = pd.read_csv("test.csv", index_col=0)
df_test = data_pre(df_test) #データ加工する

predict = model.predict(df_test) #テストデータに予測値を
df_test["取引価格(総額)_log"] = predict
df_test[["取引価格(総額)_log"]].to_csv("submit_test.csv")

この記事が気に入ったらサポートをしてみませんか?