fit_params 不适用于 XGBoost 和 Scikit-learn MultiOutput

我想使用MultiOutputRegressorscikit-learn 在多输出回归问题上训练 XGB。但是我不能将fit_params字典传递给 a 的.fit方法MultiOutputRegressor。貌似不认识里面的参数。。。


我收到此错误:


from sklearn.multioutput import MultiOutputRegressor

from xgboost.sklearn import XGBRegressor

XGB = XGBRegressor(n_jobs=1, max_depth=10, n_estimators=100, learning_rate=0.2)  

fit_params = {'early_stopping_rounds':5,

                'eval_set':[(X_holdout,Y_holdout)],

                'eval_metric':'mae',

                'verbose':False}

multi = MultiOutputRegressor(XGB, n_jobs=-1)    

multi.fit(X_train,Y_train,**fit_params) 


Traceback (most recent call last):


  File "<ipython-input-16-e245db56e1be>", line 9, in <module>

    multi.fit(X_train,Y_train,**fit_params)


TypeError: fit() got an unexpected keyword argument 'early_stopping_rounds'

奇怪的是它与RandomizedSearchCV


from sklearn.model_selection import RandomizedSearchCV

XGB_cv = RandomizedSearchCV(XGB, params, cv=5, n_jobs=-1, verbose=1, n_iter=1000, scoring='neg_mean_absolute_error')  

XGB_cv.fit(X_train, Y_train,**fit_params)  


呼如林
浏览 428回答 1
1回答

慕妹3146593

看来您已经安装了 scikit-learn 包版本,其中未为 MultiOutputRegressor 实现 fit 方法的 **fit_params 参数。您可以使用以下命令检查已安装包的版本:import&nbsp;sklearn print(sklearn.__version__)将 scikit-learn 包升级到版本 0.23.1 后,您可以在 MultiOutputRegressor 对象的 fit 方法中使用 **fit_params。您可以使用以下方式升级它:pip&nbsp;install&nbsp;--upgrade&nbsp;scikit-learn
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python