Python 具有ExtraTreesClassifier的特征重要性返回全零

Python 具有ExtraTreesClassifier的特征重要性返回全零,python,machine-learning,feature-selection,Python,Machine Learning,Feature Selection,我想使用ExtraTreesClassifier计算给定数据集的特征重要性。我的目标是为进一步的分类过程找到高分的特征。X数据集的大小为10000,50,其中50列为特征,此数据集仅表示从一个用户(即来自同一类)收集的数据,Y为标签,均为零 但是,输出将所有功能的重要性返回为零 代码: 输出: 有人能告诉我为什么所有功能的重要性分数都为零吗?您可以尝试: print(sorted(zip(model.feature_importances_, X.columns), reverse=True))

我想使用ExtraTreesClassifier计算给定数据集的特征重要性。我的目标是为进一步的分类过程找到高分的特征。X数据集的大小为10000,50,其中50列为特征,此数据集仅表示从一个用户(即来自同一类)收集的数据,Y为标签,均为零

但是,输出将所有功能的重要性返回为零

代码: 输出: 有人能告诉我为什么所有功能的重要性分数都为零吗?

您可以尝试:

print(sorted(zip(model.feature_importances_, X.columns), reverse=True))

如果类标签都具有相同的值,则要素重要性都将为0

我对算法不太熟悉,无法从理论上解释为什么重要度返回为0而不是nan或类似值:

您正在使用一个ExtraTreesClassifier,它是决策树的集合。这些决策树中的每一个都将试图通过在sklearn额外树的情况下以某种方式最小化杂质基尼或熵来区分目标中不同类别的样本。当目标仅包含单个类别的样本时,杂质已经达到最小值,因此决策树不需要拆分来进一步减少杂质。因此,不需要特性来减少杂质,因此每个特性的重要性为0

从另一个角度考虑这一点。每个特征与目标的关系与任何其他特征完全相同:目标为0,无论特定样本的特征值是什么,目标完全独立于特征。因此,每个特征都不提供有关目标的新信息,因此没有进行预测的价值

print(sorted(zip(model.feature_importances_, X.columns), reverse=True))