fit_params 不适用于 XGBoost 和 Scikit-learn MultiOutputRegressor
fit_params doesn't work with XGBoost and Scikit-learn MultiOutputRegressor
我想使用 scikit-learn 中的 MultiOutputRegressor
在多输出回归问题上训练 XGB。但是我无法将 fit_params
字典传递给 MultiOutputRegressor
的 .fit
方法。貌似不认识里面的参数...
我收到此错误:
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)
您似乎已经安装了 scikit-learn 包版本,其中 **fit_params fit 方法的参数没有为 MultiOutputRegressor 实现。您可以使用以下命令检查已安装包的版本:
import sklearn
print(sklearn.__version__)
将 scikit-learn 包升级到 0.23.1 版本后,您可以在 MultiOutputRegressor 对象的 fit 方法中使用 **fit_params。您可以通过以下方式升级它:
pip install --upgrade scikit-learn
我想使用 scikit-learn 中的 MultiOutputRegressor
在多输出回归问题上训练 XGB。但是我无法将 fit_params
字典传递给 MultiOutputRegressor
的 .fit
方法。貌似不认识里面的参数...
我收到此错误:
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)
您似乎已经安装了 scikit-learn 包版本,其中 **fit_params fit 方法的参数没有为 MultiOutputRegressor 实现。您可以使用以下命令检查已安装包的版本:
import sklearn
print(sklearn.__version__)
将 scikit-learn 包升级到 0.23.1 版本后,您可以在 MultiOutputRegressor 对象的 fit 方法中使用 **fit_params。您可以通过以下方式升级它:
pip install --upgrade scikit-learn