删除功能时,Sklearn中的递归功能消除了简历



我正在使用Sklearn中的RFECV模块找到最佳的功能,以在2倍上产生最高的交叉验证。我正在使用脊回归器作为我的估计器。

rfecv = RFECV(estimator=ridge,step=1, cv=KFold(n_splits=2))
rfecv.fit(df, y)

我的数据集中有5个功能,这些功能使用标准标准器进行了标准化。

我将在数据上运行RFECV,它会说2个功能是最佳的。但是,当我删除具有最低回归系数的功能并重新运行RFECV时,它现在说3个功能是最佳的。

当我一次浏览所有功能时(如递归应该这样做)时,我发现3实际上是最佳的。

我已经使用其他数据集对此进行了测试,并发现最佳功能数量在我一次删除一个功能和重新运行RFECV时会发生变化。

我可能会缺少一些东西,但这不是RFECV应该解决的问题吗?感谢RFECV的任何其他见解。

这实际上是有道理的。RFECV根据可用数据建议了一定数量的功能。删除功能时,您会更改评分范围。

来自文档:

# Determine the number of subsets of features by fitting across
# the train folds and choosing the "features_to_select" parameter
# that gives the least averaged error across all folds.

...

n_features_to_select = max(
    n_features - (np.argmax(scores) * step),
    n_features_to_select)

n_features_to_select用于确定在RFE中应使用多少个特定迭代(RFECV/insusthood)的功能。

rfe = RFE(estimator=self.estimator,
          n_features_to_select=n_features_to_select,
          step=self.step, verbose=self.verbose)

,因此直接连接到您在初始rfecv.fit()步骤中包含的功能数量。

此外,以最低的回归系数删除功能并不是修剪功能的最佳方法。系数反映了其对因变量的影响不一定是模型的准确性。

相关内容

  • 没有找到相关文章

最新更新