lightgbmを使い、回帰予測を行うのが目的です。
Lightgbmプログラムでのエラーメッセージはありません。
しかし、予測データがうまく回帰できません。
ご助言等をお願いいたします。
1.該当コード
python3 # ライブラリのインポート %matplotlib inline import lightgbm as lgb import matplotlib.pyplot as plt import numpy as np #from sklearn.ensemble import lightgbmLGBMRegressor from sklearn.model_selection import train_test_split from sklearn.metrics import mean_squared_error from sklearn.metrics import r2_score import pandas as pd #データベース関連等のコードについては(略) #GridSearchのコード import sklearn print(sklearn.__version__) from sklearn.model_selection import GridSearchCV params = {'n_estimators': [10, 50, 100,1000], 'max_depth': [5, 10, 50]} gb = lgb.LGBMRegressor(random_state=0) gscv = GridSearchCV(gb, param_grid=params, verbose=1, cv=3, scoring='neg_mean_squared_error') gscv.fit(X_train, y_train) gb= lgb.LGBMRegressor(n_estimators=gscv.best_params_['n_estimators'], max_depth=gscv.best_params_['max_depth'], random_state=0) gb.fit(X_train, y_train) y_pred2 = gb.predict(X_test) rf_mse = mean_squared_error(y_test, y_pred2) # 勾配ブースティング回帰のモデルを作成 model = lgb.LGBMRegressor(n_estimators=gscv.best_params_['n_estimators'],criterion='mse', max_depth=gscv.best_params_['max_depth'],random_state=0) # モデルの訓練 model.fit(X_train, y_train) y_train_pred = model.predict(X_train) y_test_pred = model.predict(X_test) # 残差プロット plt.figure(figsize=(8,4)) #プロットのサイズ指定 plt.scatter(y_train_pred, y_train_pred - y_train, c='red', marker='o', edgecolor='white', label='Training data') plt.scatter(y_test_pred, y_test_pred - y_test, c='blue', marker='s', edgecolor='white', label='Test data') plt.xlabel('Predicted values') plt.ylabel('Residuals') plt.legend(loc='upper left') plt.hlines(y=0, xmin=-10, xmax=50, color='black', lw=2) plt.xlim([-10, 50]) plt.tight_layout() plt.show()
3.プロットデータの出力結果のコメント
プロットデータの出力結果に見られるように、8~9と18くらいの2通りしか予測
されていない、波曲線(sinカーブのようなもの)のデータに対してを予測しており、
連続での予測値が出ないとおかしい。
4.補足情報(FW/ツールのバージョンなど)
開発環境:Google Colaboratory
バージョン:python3
OS:windows10 Home
CPU:Intel(R) Core(TM) i7-7500U CPU@2.70GHz 2.90GHz
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/27 05:16 編集
2021/02/27 08:45
2021/02/28 22:17