python - 如何从 scikit-learn DecisionTreeClassifier 获取信息增益?

标签 python machine-learning classification scikit-learn

我看到 DecisionTreeClassifier 接受 criterion='entropy',这意味着它必须使用信息增益作为 split 决策树的标准。 我需要的是在即将 split 根节点时,根级别的每个特征的信息增益。

最佳答案

您只能访问已用作拆分节点的特征的信息增益(或基尼杂质)。属性 DecisionTreeClassifier.tree_.best_error[i] 保存第 i 个节点在特征 DecisionTreeClassifier.tree_.feature[i] 上 split 的熵。如果您想要到达第 i 个节点的所有示例的熵,请查看 DecisionTreeClassifier.tree_.init_error[i]

有关更多信息,请参阅此处的文档:https://github.com/scikit-learn/scikit-learn/blob/dacfd8bd5d943cb899ed8cd423aaf11b4f27c186/sklearn/tree/_tree.pyx#L64

如果您想访问每个特征的熵(在某个拆分节点)- 您需要修改函数 find_best_split https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/tree/_tree.pyx#L713

关于python - 如何从 scikit-learn DecisionTreeClassifier 获取信息增益?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16392872/

相关文章:

python - 我应该如何将文本/纯数据传递给 python 的 requests.post?

python - 将下划线与命名元组一起使用

python - django 1.8.3 python manage.py 迁移 Linux

machine-learning - 远程监督: how to connect named entities to freebase (KB) relations

matlab - mat文件到weka文件

python - 为什么此方法会在参数数量方面引发错误?

matlab - 线性判别分析matlab

RtunerRF不稳定,如何优化?

python - 在 Streamlit 中按下按钮时无法增加值

machine-learning - 如何处理这种不平衡类倾斜的数据集?