【问题标题】:how to pass fit parameters of estimator to RFECV's fit?如何将估计器的拟合参数传递给 RFECV 的拟合?
【发布时间】:2021-05-23 02:49:40
【问题描述】:

我有一个包含一些功能的数据框,我想使用 RFECV 选择重要的数据框。但是,当我尝试像这样将 xgboost 的 fit 参数发送到 RFECV 的 fit 方法时:

# initialising xgboost
xgb_rfe = XGBClassifier(objective='multi:softmax', num_class=3, use_label_encoder=False,
                        random_state=100, n_estimators=10_000, n_jobs=-1)

# initialising RFECV
rfe = RFECV(estimator=xgb_rfe, min_features_to_select=2, verbose=2, n_jobs=2, cv=3, scoring=log_loss_rfe)

# fitting it
rfe.fit(X=X_train, y=y_train, estimator__early_stopping_rounds=3_000)

我得到TypeError 是这样的:

---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

<ipython-input-17-a1b4fc8b7d71> in <module>()
      1 rfe = RFECV(estimator=xgb_rfe, min_features_to_select=2, verbose=2, n_jobs=2, cv=3, scoring=log_loss_rfe)
----> 2 rfe.fit(X=X_train, y=y_train, early_stopping_rounds=3_000)

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

并且在初始化期间将early_stopping_rounds 直接传递给XGBClassifier 不起作用。

如何在拟合期间将估算器的参数传递给 RFECV?

【问题讨论】:

    标签: python machine-learning scikit-learn xgboost rfe


    【解决方案1】:

    无法将估算器的fit 参数传递给rfe.fit,因为这个方法does not accept keyword arguments

    def fit(self, X, y, groups=None)
    

    您必须修改 RFECV 的源代码才能做到这一点。

    顺便说一句,您可以在 does accept keyword argumentsfit 方法中看到例如 GridSearchCV 的区别(GridSearchCV 继承自 BaseSearchCV)。

    猜你喜欢
    • 2021-08-08
    • 2012-04-27
    • 2021-02-25
    • 1970-01-01
    • 2017-05-23
    • 2017-11-22
    • 2016-07-21
    • 2021-07-28
    • 2015-09-30
    相关资源
    最近更新 更多