sklearn.tree.DecisionTreeClassifier停留在预测最频繁的类别上吗?

时间:2019-10-30 15:39:30

标签: python scikit-learn decision-tree

下面是我认为与我的问题相关的代码的详细信息。

  1. 我创建了这样的目标二进制变量PP,并附加了PP的分布。如您所见,False/0〜66%和True/1 = 34%
pandas_df['PP'] =(pandas_df['DET'].fillna(0) <1).astype('str')  

False    48114
True     25089
Name: FP, dtype: int64
  1. 下面是型号代码。目标是像大多数模型一样预测TRUE的概率
X= pandas_df[predictors]
y2= pandas_df.PP
tree_clf =DecisionTreeClassifier(max_depth=3, random_state=42,min_samples_leaf=500)
tree_clf.fit(X, y2)
  1. 然后我将模型可视化如下(由于很长,我特意留了空白的feature_name)
 dot_data2 =tree.export_graphviz(tree_clf,out_file=None,feature_names=(),....                                           

 pydot_graph = pydotplus.graph_from_dot_data(dot_data2)
 pydot_graph.set_size('"0.5,0.5!"')
 pydot_graph.write_png('resized_tree.png')
 DTgraph=graphviz.Source(dot_data2)
 DTgraph  

该代码无错误。图看起来很有意义。

但是:在显示的每个叶/节点中,其显示为Class=False。我通过创建另一个变量PP2将PP 0翻转为1和1翻转为0进行了测试。然后它说Class = True,因为在PP2中它是True,即66%。

我可以忍受PP2,稍微扭一下头就可以正确理解它。但是噩梦把这棵树呈现给商业观众。我通读了sklearn文档和用户指南。没有找到强制其预测TRUE概率的方法。我误读了Class = False吗?

0 个答案:

没有答案