Ниже приведена подробная информация о моем коде, который, я думаю, имеет отношение к моему вопросу.
- Я создал целевую двоичную переменную 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
Ниже приведен код модели. Цель состоит в том, чтобы предсказать вероятность ИСТИНА, поскольку большинство моделей делают
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)
Затем я визуализирую модель, как показано ниже (я намеренно оставил пустые имена элементов, поскольку она длинная)
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 документацию и руководство пользователя. Не нашел способов заставить его предсказать вероятность ИСТИНА. Я неправильно понял Class = False?