【问题标题】:Scikit-Learn manually specifying .max_features in RFECV()-how many features get ranked?Scikit-Learn 在 RFECV() 中手动指定 .max_features - 有多少特征得到排名?
【发布时间】:2016-08-26 12:03:14
【问题描述】:

我在 Python 中遵循了这个 Scikit-Learn example 从森林估计器获取 .feature_importances_。在该示例中,ExtraTreesClassifier() 与其默认值一起使用 超参数设置 - 这意味着max_features='auto'。此示例的输出是 10 个特征的重要性图。

问题 1:

当我使用max_features=2 重新运行此示例时,该图仍显示所有 10 个特征的特征重要性。是否应该只显示 2 个功能的重要性?

问题 2:

现在,我想将ExtraTreesClassifier(max_features=2)RFECV() 一起使用。从RFECV() docs 中,它表明RFECV() 将最佳特征分配为1 - 我们可以在RFECV().ranking_ 属性中看到这一点。但是,如果我将估计器指定为 ExtraTreesClassifier(max_features=2),那么 RFECV() 在其估计器中使用 2 个特征并且只返回 2 个特征的排名吗?还是忽略max_features 并返回所有功能的排名?

【问题讨论】:

    标签: python python-2.7 machine-learning scikit-learn


    【解决方案1】:

    max_features 指定学习算法在决定哪个特征在树的节点中提供最佳分割时查看多少特征。为每个节点随机选择特征。所以决策树仍然使用所有特征。这只是加快学习速度的一种方式。

    【讨论】:

    • 那么max_features 根本没有在RFECV() 中使用吗?
    • 是什么让你这么想?
    • RFECV() 选择特征时,它正在查看排名以选择 rank=1,但在我看来,估计器的 .feature_importances_ 似乎没有在这里考虑。基于此,我会说RFECV() 忽略了max_features 超参数。虽然我可能会误解一些东西......
    • ...如果决策树仍然使用所有特征,那么这就解释了为什么所有特征都用于计算.feature_importances_ 属性。这不是表明max_features_ 参数被RFECV() 忽略了吗?
    • max_features_ 不限制用于整个树的特征数量,但仅限于单个节点。并且每个节点可以使用不同的特征子集来确定使用哪个来分割数据。所以树总是使用所有的特性。什么都不会被忽略。
    猜你喜欢
    • 2017-07-18
    • 2016-04-14
    • 2018-02-17
    • 2015-09-12
    • 2016-02-25
    • 2016-08-31
    • 2019-10-20
    • 2015-11-13
    • 2018-10-27
    相关资源
    最近更新 更多