【发布时间】:2020-12-01 00:37:22
【问题描述】:
我有 2 个回归器:
import lightgbm as lgb
from sklearn.model_selection import GridSearchCV
params = {
'num_leaves': [7, 14, 21, 28, 31, 50],
'learning_rate': [0.1, 0.03, 0.003],
'max_depth': [-1, 3, 5],
'n_estimators': [50, 100, 200, 500],
}
grid = GridSearchCV(lgb.LGBMRegressor(random_state=0), params, scoring='r2', cv=5)
grid.fit(X_train, y_train)
reg = lgb.LGBMRegressor(random_state=0)
如您所见,我为两个回归器定义了一个random_state。 GridSearchCV 必须为估算器找到最佳参数以增加其 scroring。但是
r2_score(y_train, grid.predict(X_train)) # output is 0.69
r2_score(y_train, reg.predict(X_train)) # output is 0.84
那么,如何找到LGBMRegressor 的最佳参数?
【问题讨论】:
-
我猜这是一个概念问题。您正在使用相同的数据集进行训练和预测。我会说你有一个有偏见的分类器,交叉验证可以消除这种偏见。
-
R2 相当高。为什么会有偏见?
-
任何模型评估都应该在不同于用于训练的集合中进行。在这里你可以找到一个有趣的讨论:stats.stackexchange.com/questions/130985/…
-
我没有尝试评估模型。
GridSeachCV应该为最高分找到最佳参数。它没有找到他们。这就是问题
标签: python scikit-learn regression linear-regression lightgbm