【问题标题】:export_graphviz function, IndexError: list index out of rangeexport_graphviz 函数,IndexError:列表索引超出范围
【发布时间】: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


    【解决方案1】:

    您的代码将类名作为一个空列表:class_names=[] 不应该是这种情况。类名应具有每个目标类的名称,按数字升序排列。仅与分类相关,不支持多输出。

    您尚未共享目标变量 (most_present_age) 的 sn-p,但请检查该列中的唯一值。将年龄作为连续变量,您可以将它们分类为年龄:

    18-25 = 1
    26-33 = 2
    34-42 = 3
    43-50 = 4
    51-58 = 5
    59-65 = 6
    # etc  
    

    那么您的班级名称将为class_names = ['1','2','3','4','5','6'] 您的代码应该可以工作。

    这里有一个示例供您参考:link

    【讨论】:

      猜你喜欢
      • 2011-10-31
      • 2015-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多