前提
Pythonにおいて、LightGBMを用いて「回帰問題」を解くためのプログラムを実装しようとしています。
ですが、説明変数が一つしか考慮されず、その原因、および解決方法がわかりません。
実現したいこと
正しいLightGBMのモデルを作成する。
該当のソースコード
Python
#データフレームの初めから最後の一つ前までのカラムを説明変数とするX_train = df_stamp_2019.iloc[:, :df_stamp_2019.shape[1]-1].values y_train = df_stamp_2019.iloc[:, df_stamp_2019.shape[1]-1].values X_test = df_stamp_2020.iloc[:, :df_stamp_2020.shape[1]-1].values y_test = df_stamp_2020.iloc[:, df_stamp_2020.shape[1]-1].values train_set = lgb.Dataset(X_train, y_train)valid_set = lgb.Dataset(X_test, y_test) params = { 'task': 'train', 'boosting_type': 'gbdt', 'objective': 'regression', # 目的 : 回帰 'metric': {'rmse'}, # 評価指標 : rsme(平均二乗誤差の平方根) } model_lgbm = lgb.train( params = params, train_set = train_set, valid_sets = [train_set, valid_set], num_boost_round = 100) y_pred = model_lgbm.predict(X_test) lgb.plot_importance(model_lgbm)
「df_stamp_2019」の先頭5行は以下のようになっており、「predict」以外を説明変数、「predict」を目的変数に設定しています。
「count_ago」以外はワンホットエンコーディングにより生成した変数になります。
また、「df_stamp_2019」の情報(df_stamp_2020も同様)は以下のようになっています。
実行結果
特徴量重要度をプロットすると以下のようになり、18個目のカラム「count_ago」だけが考慮されてしまいます。
0 コメント