有没有办法手动修改从给定数据集中获知的决策树中设置的阈值?

问题描述 投票:2回答:1

我正在尝试使用scikit-learn的模块tree创建决策树模型。生成模型后,我就可以可视化决策树和决策依据。但是,我希望手动修改某些标准中的阈值,以查看相同输出的变化。有什么办法吗?还是任何将决策树从数据集中学习到所需阈值后就将决策树转换为if-else语句的库?

[我知道模块选择的阈值基于一些杂质度量,例如吉尼杂质,信息增益等。但是,我仍然想尝试这些阈值。

谢谢!

python machine-learning scikit-learn decision-tree
1个回答
0
投票

是的,您可以轻松地做到这一点。

sklearn决策树通过tree_属性公开其基础树。除其他事项外,此tree_具有属性threshold,它是一个numpy数组,其中包含所有节点的阈值。您可以修改此数组,从而更改阈值。

例如:

X,y = load_breast_cancer(return_X_y=True)
dt = DecisionTreeClassifier(max_depth=3).fit(X,y)
print(dt.tree_.threshold)     #All the thresholds, size equals "dt.tree_.node_count"
dt.tree_.threshold[3] = 10.0  #Manually modifying a threshold    

[为了验证,如果您在此修改前后比较单独测试集的准确性(假设您已经修改了非叶子节点),您应该注意到一个变化(可能会更糟)。

© www.soinside.com 2019 - 2024. All rights reserved.