我使用额外的树分类器来找出数据集中哪些属性更重要。结果,它返回一个分数值(例如每个属性都有一个分数,比如0.037
,0.025
,0.012
等),这个分数到底是什么意思?在
编辑:我实际上在搜索它是如何计算的?哪个公式给我分数?
model = ExtraTreesClassifier()
model.fit(dataValues, dataTargetEncoded)
feat_importances = pd.Series(model.feature_importances_,index=dataValues.columns)
feat_importances.nlargest(25).plot(kind='barh')
plt.show()
在一行中:
分数越高,对应的特征越重要。在
来自Documentation:
作为树中决策节点的特征的相对秩(即深度)可以用来评估该特征相对于目标变量的可预测性的相对重要性。树顶部使用的特征有助于更大比例输入样本的最终预测决策。因此,它们贡献的样本的期望分数可以用来估计特征的相对重要性。在
在scikit-learn中,特征贡献的样本分数与拆分样本所导致的杂质减少相结合,从而对该特征的预测能力进行归一化估计。在
您可以在中找到更多详细信息
从上述论题来看:
根据文档:
根据代码,加权杂质减少方程如下:
其中}都是加权和,
如果
N
是样本总数,N_t
是 samples at the current node,N_t_L
是 left child,N_t_R
是右子元素中的样本数。N
、N_t
、N_t_R
和{sample_weight
被传递。在对于一组树,对所有树的特征重要性进行平均,得到整个模型的特征重要性。在
分数本身在
BaseForest
类的feature_importances_中计算。它们的计算公式为其中} 估计量的
^{pr2}$all_importances
是^{feature_importances_
数组。估计量的个数由的参数n_estimators
定义ExtraTreesClassifier
。默认情况下有10个估计器(n_估计器的默认值将从版本0.20
中的10更改为版本0.22
中的100):所以,
all_importances
看起来像每个估计器的} 类的^{} 方法计算的。它通过迭代树节点的每个节点来计算,并添加到相应的特性:
feature_importances_
是通过在Cython上编写的^{其中
weighted_n_node_samples
和impurity
是具有节点参数的数组:feature_importances_
在计算后被规范化。您可以通过使用参数normalize=False
调用compute_feature_importances
来查看原始值:相关问题 更多 >
编程相关推荐