如果为true,决策树分类器将输出“ Male”,如果为false,则输出“ Male”?

时间:2018-12-07 08:07:45

标签: python machine-learning scikit-learn decision-tree

我正在与决策树分类器一起尝试根据演出类型预测男性或女性。一旦使用graphviz可视化了决策树,该图就会将Male输出为True和False。我在这个问题上遇到了麻烦。

有可能不是我的代码错误,而是我的功能和目标变量。 这是jupyter笔记本代码块中的代码:

Male = tmp[tmp['gender'] == 'M']
Female = tmp[tmp['gender'] == 'F' ]
X = tmp.loc[:, ['Fantasy', 'Romance']]
# 'Cars', 'Drama', 'Game','SliceofLife','Music', 'Psychological', 'Fantasy', 'Horror','Historical','Space','Sci-Fi', 'Magic', 'Adventure', 'Samurai', 'ShounenAi', 'Mecha', 'Thriller', 'Demons', 'Kids', 'Romance', 'Sports', 'Seinen', 'School', 'ShoujoAi', 'Comedy']]
y = tmp['gender']

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)

model_dtc = DecisionTreeClassifier() 
model_dtc = model_dtc.fit(X_train, y_train)
y_pred = model_dtc.predict(X_test)

df_dtc = pd.DataFrame({'Actual': y_test, 'Predicted': y_pred})  

tree.export_graphviz(model_dtc, out_file='gender_classifier.dot', feature_names=['Fantasy', 'Romance'],class_names=tmp['gender'] ,filled=True, rounded=True,special_characters=True)

dot_data = tree.export_graphviz(model_dtc, out_file=None, feature_names = ['Fantasy','Romance'], class_names = tmp['gender'] , filled=True, rounded=True, special_characters=True)
graph = graphviz.Source(dot_data)
graph 

graphviz输出 graphviz output

任何想法或建议都将非常有帮助!

1 个答案:

答案 0 :(得分:0)

我认为这不是完整的树。您是在说预测方法始终输出Male吗?

从图中我做了几个观察:

  1. 也许我错了,但是如果您的数据有两个类,那么图中的 value 数组应该只包含2个值,我看到了3个。
  2. 您尚未设置任何max_depth参数吗?如果不是这样,则树应扩展到节点纯净为止,在这里不是这种情况。

也许尝试将其转换为png? 用这个 - dot -Tpng tree.dot -o tree.png