我有一个具有多个输出的数据集,并试图使用梯度推进一次预测所有的值。我引进了多输出分离器,因此可以一次预测多个输出;我可以让它为默认的梯度增强函数工作。然而,当我试图为每个输出优化梯度增强函数时,我遇到了一个错误
from sklearn.ensemble import GradientBoostingRegressor
from sklearn.multioutput import MultiOutputRegressor
from sklearn import ensemble
params = {'max_depth': 3, 'n_estimators': 100, 'learning_rate': 0.1}
gradient_regressor = MultiOutputRegressor(ensemble.GradientBoostingRegressor(**params))
GradBoostModel = gradient_regressor.fit(X_train, y_train)
prediction_GradBoost = GradBoostModel.predict(X_test)
LR = {'learning_rate':[0.15, 0.125, 0.1, 0.75, 0.05], 'n_estimators':[50, 75, 100, 150, 200, 250, 300, 400]}
tuning = GridSearchCV(estimator = GradBoostModel, param_grid = LR, scoring = 'r2')
tuning.fit(X_train, y_train)
tuning.best_params_, tuning.best_score_
我试图使用GridSearchCV循环浏览列出的学习率和估计数,以找到最佳值。但是,我得到了以下错误:
Invalid parameter learning_rate for estimator MultiOutputRegressor.
Check the list of available parameters with `estimator.get_params().keys()`
我想我理解这个错误的原因:当我试图优化梯度增强参数时,它们会通过多输出分离器,而多输出分离器无法识别它们。是这样吗?另外,如何更改代码,以便为每个输出优化这些参数
实际上,params的前缀是
estimator__
,一般来说,为了找出在管道下游使用哪些params,请在模型上使用.get_params().keys()
方法,例如:linnerud数据集的完整工作示例:
相关问题 更多 >
编程相关推荐