估计器 RegressorChain 的无效参数 learning_rate(base_estimator=XGBRegressor
Invalid parameter learning_rate for estimator RegressorChain(base_estimator=XGBRegressor
我正在尝试在 RegressorChain XGBoost 模型上应用 RandomizedSearchCV,但出现错误:估算器 RegressorChain(base_estimator=XGBRegressor.Invalid parameter learning_rate 无效。
如果我在 grid dict 中注释所有值,它会工作,否则它不接受任何参数。
相同的模型(XGBRegressor 和 RegressorChain)单独运行良好。 RandomizedSearchCV 不接受网格字典中的参数
# Setup the parameters grid
grid = {
'n_estimators': [100, 500, 1000],
'max_depth': [5, 10, 20, 30],
'max_features': ["auto", "sqrt"],
'eta': [0.09, 0.1, 0.2],
'booster': ["dart", "gblinear"]
}
clf = XGBRegressor(objective='reg:squarederror')
chain = RegressorChain(base_estimator=clf, order=[0, 1, 2, 3, 4,5])
# Setup RandomizedSearchCV
rs_clf = RandomizedSearchCV(estimator=chain,
param_distributions=grid,
n_iter=10, # number of models to try
cv=5,
verbose=1,
random_state=42,
refit=True)
# Fit the RandomizedSearchCV version of clf
rs_clf.fit(X_train, y_train) # 'rs' is short
由于 XGBRegressor
是 RegressorChain
的 base_estimator
,XGBRegressor
的参数变得嵌套并且必须用 base_estimator__xxx
:
grid = {
'base_estimator__n_estimators': [100, 500, 1000],
'base_estimator__max_depth': [5, 10, 20, 30],
'base_estimator__max_features': ["auto", "sqrt"],
'base_estimator__eta': [0.09, 0.1, 0.2],
'base_estimator__booster': ["dart", "gblinear"]
}
我正在尝试在 RegressorChain XGBoost 模型上应用 RandomizedSearchCV,但出现错误:估算器 RegressorChain(base_estimator=XGBRegressor.Invalid parameter learning_rate 无效。 如果我在 grid dict 中注释所有值,它会工作,否则它不接受任何参数。
相同的模型(XGBRegressor 和 RegressorChain)单独运行良好。 RandomizedSearchCV 不接受网格字典中的参数
# Setup the parameters grid
grid = {
'n_estimators': [100, 500, 1000],
'max_depth': [5, 10, 20, 30],
'max_features': ["auto", "sqrt"],
'eta': [0.09, 0.1, 0.2],
'booster': ["dart", "gblinear"]
}
clf = XGBRegressor(objective='reg:squarederror')
chain = RegressorChain(base_estimator=clf, order=[0, 1, 2, 3, 4,5])
# Setup RandomizedSearchCV
rs_clf = RandomizedSearchCV(estimator=chain,
param_distributions=grid,
n_iter=10, # number of models to try
cv=5,
verbose=1,
random_state=42,
refit=True)
# Fit the RandomizedSearchCV version of clf
rs_clf.fit(X_train, y_train) # 'rs' is short
由于 XGBRegressor
是 RegressorChain
的 base_estimator
,XGBRegressor
的参数变得嵌套并且必须用 base_estimator__xxx
:
grid = {
'base_estimator__n_estimators': [100, 500, 1000],
'base_estimator__max_depth': [5, 10, 20, 30],
'base_estimator__max_features': ["auto", "sqrt"],
'base_estimator__eta': [0.09, 0.1, 0.2],
'base_estimator__booster': ["dart", "gblinear"]
}