fit_params不能与XGBoost和Scikit-learn MultiOutputRegressor一起工作。

问题描述 投票:0回答:1

我想使用 MultiOutputRegressor 从scikit-learn来训练一个多输出回归问题的XGB。但是我不能通过一个 fit_params 辞典向 .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)  
python scikit-learn xgboost
1个回答
1
投票

似乎你安装了scikit-learn软件包的版本,其中**fit_params param的fit方法没有在MultiOutputRegressor中实现。你可以使用下面的命令检查安装包的版本。

import sklearn
print(sklearn.__version__)

将scikit-learn软件包升级到0.23.1版本后,你可以在MultiOutputRegressor对象的fit方法中使用**fit_params。你可以用这种方式升级。

pip install --upgrade scikit-learn
© www.soinside.com 2019 - 2024. All rights reserved.