首页 > 解决方案 > Graphviz 似乎认为第一列中的每一行都是一个属性,无法解决

问题描述

我对数据科学很陌生,并且上过一些关于 codecademy 和 sololearn 的课程。我在使用 graphviz 和 sklearn 时遇到问题。似乎当它对我的数据执行决策树时,它会将第一列中的每一行作为一个属性引用,即使我自己指定了这些属性。我现在不关心统计数据本身,我只是想学习如何正确编写代码来处理数据。

我一直收到的错误是:特征名称的长度,303 与特征数量不匹配,6。

任何帮助表示赞赏!

编辑:应该补充说我正在使用这个数据集进行练习:https ://www.kaggle.com/ronitf/heart-disease-uci

def warn(*args, **kwargs):
   pass
import warnings
warnings.warn = warn

from sklearn import tree
import pandas as pd
from sklearn.model_selection import train_test_split
import sklearn.linear_model
import matplotlib
import pydotplus
import numpy as np
from IPython.display import Image

csv = pd.read_csv('heart 2.csv', header=0, index_col=False)
dataframe = pd.DataFrame(csv)
labels = dataframe[['cp']]
attributes = dataframe[['sex','trestbps','chol','slope','oldpeak','age']]
attributes_array = np.array(attributes)
labels_array = np.array(labels)

training_data,test_data,training_labels,test_labels = train_test_split(attributes_array,labels_array, test_size=0.2)

model = sklearn.tree.DecisionTreeClassifier(random_state = 1)
model.fit(training_data,training_labels)
print(model.predict_proba(test_data))

dot_data = tree.export_graphviz(model,out_file=None,feature_names=labels,class_names=attributes)
graph = pydotplus.graph_from_dot_data(dot_data)
Image(graph.create_png())
graph.write_pdf("heart.pdf")

标签: python-3.xpandasscikit-learngraphviz

解决方案


推荐阅读