【发布时间】:2021-06-30 17:47:54
【问题描述】:
在 python 中运行决策树,除了导出树的图形外,一切都完美无缺:
feature_cols = ['buildings_age','cell_id', 'pois:total', 'vertical_density',
'Buildings:total', 'buildings_age:diversity',
'ThirdPlaces:oa_count', 'pois:diversity', 'Roads:diversity',
'Buildings:diversity']
X = data[feature_cols] # Features
y = data.most_present_age # Target variable
# Split dataset into training set and test set
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=1) # 70% training and 30% test
# Create Decision Tree classifier object
clf = DecisionTreeClassifier(criterion='gini', max_depth=3)
# Train Decision Tree Classifier
clf = clf.fit(X_train,y_train)
#Predict the response for test dataset
y_pred = clf.predict(X_test)
print("Accuracy:",metrics.accuracy_score(y_test, y_pred))
dot_data = StringIO()
export_graphviz(clf, out_file=dot_data,
filled=True, rounded=True,
special_characters=True,
feature_names = feature_cols,class_names=[])
graph = pydotplus.graph_from_dot_data(dot_data.getvalue())
graph.write_png('tree.png')
Image(graph.create_png())
给出错误信息:
class_name = self.class_names[np.argmax(value)]
IndexError: list index out of range
这显示来自导入的函数 export_graphviz 类名是 ['0','1'] 我很确定这是正确的,但 feature_cols 列表的长度应该归咎于此吗?或者是班级名称还是我没有学过的东西? 任何帮助将非常感谢,谢谢
【问题讨论】:
标签: python decision-tree pygraphviz