小编Cha*_*eae的帖子

信息使用Scikit-learn计算收益

我正在使用Scikit-learn进行文本分类.我想针对(稀疏)文档 - 术语矩阵中的类计算每个属性的信息增益.信息增益定义为H(类) - H(类|属性),其中H是熵.

使用weka,可以使用InfoGainAttribute完成.但我还没有在scikit-learn中找到这个措施.

但是,有人建议上面的信息增益公式与互信息相同.这也与维基百科中的定义相匹配.

是否可以在scikit中使用特定设置来交互信息 - 学习完成此任务?

python machine-learning feature-selection scikit-learn text-classification

19
推荐指数
1
解决办法
2万
查看次数

scikit learn - 在决策树中进行特征重要性计算

我试图了解如何计算sci-kit学习中的决策树的特征重要性.之前已经问过这个问题,但我无法重现算法提供的结果.

例如:

from StringIO import StringIO

from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
from sklearn.tree.export import export_graphviz
from sklearn.feature_selection import mutual_info_classif

X = [[1,0,0], [0,0,0], [0,0,1], [0,1,0]]

y = [1,0,1,1]

clf = DecisionTreeClassifier()
clf.fit(X, y)

feat_importance = clf.tree_.compute_feature_importances(normalize=False)
print("feat importance = " + str(feat_importance))

out = StringIO()
out = export_graphviz(clf, out_file='test/tree.dot')
Run Code Online (Sandbox Code Playgroud)

导致特征重要性:

feat importance = [0.25       0.08333333 0.04166667]
Run Code Online (Sandbox Code Playgroud)

并给出以下决策树:

决策树

现在,这个答案对一个类似问题建议的重要性计算公式为

formula_a

其中G是节点杂质,在这种情况下是基尼杂质.据我所知,这是杂质减少.但是,对于功能1,这应该是:

formula_b

这个答案表明重要性由到达节点的概率加权(通过到达该节点的样本的比例来近似).同样,对于功能1,这应该是:

formula_c

两个公式都提供了错误的结果.如何正确计算特征重要性?

python decision-tree feature-selection scikit-learn

11
推荐指数
2
解决办法
1万
查看次数