incrediblejack 发表于 2020-8-21 18:57:48

关于graphviz库的问题,报错png找不到,

代码的功能主要是利用决策树进行分类,并画出决策树
我是用graphivz第三方库进行化的,但是报错了。报错如下:
pydotplus.graphviz.InvocationException: Program terminated with status: 1. stderr follows: Format: "png" not recognized. Use one of:

Process finished with exit code 1

也不给提示到底用什么格式的图片。
然而这个代码在我之前的旧电脑上是可以运行成功的,但是我换了个新电脑就报错了。我感觉应该是环境配置的问题。
我用的是anaconda的环境,在里面添加了graphviz库。
请各位大神帮帮忙咯!
谢谢

附上代码:
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier, export_graphviz
import pydotplus
from IPython.display import display, Image
import pandas as pd
import numpy as np

fourier_feature_data = pd.read_csv('20200821_time_fre_01.csv',encoding='utf-8')#读取数据集    #该打开方式需要先把原始的文件重新保存为utf-8形式的csv文件。#后面改成numpy.array试试
print('fourier_feature_data 数据类型 : ', type(fourier_feature_data))
print(' ')
fourier_feature_data.columns = ['Apjs', 'Bjfg', 'Cfz', 'Dffz', 'Eqd','Ffzyz','Gmcyz','Hbxyz','Iydyz','Jpxd','Kf1','Lf2','Mf3','Nf4','Of5','Pf6','Qf7','Rf8','Sclass']#表上数据集列名头
feature_name = fourier_feature_data.columns[:-1]
class_name = fourier_feature_data.columns[-1]
print(fourier_feature_data)

print(' ')


#下面是交叉验证
all_inputs = fourier_feature_data[['Apjs', 'Bjfg', 'Cfz', 'Dffz', 'Eqd','Ffzyz','Gmcyz','Hbxyz','Iydyz','Jpxd','Kf1','Lf2','Mf3','Nf4','Of5','Pf6','Qf7','Rf8']].values
all_classes = fourier_feature_data['Sclass'].values

(training_inputs, testing_inputs, training_classes, testing_classes) = train_test_split(all_inputs, all_classes, train_size = 0.70, random_state=1)



dtc = DecisionTreeClassifier(criterion='gini', max_depth=10)
dtc.fit(training_inputs,training_classes)
y_test_pre = dtc.predict(testing_inputs)

num = all_inputs.shape
num_train = training_inputs.shape
num_test = num - num_train
acc = sum(y_test_pre == testing_classes) / num_test
print('The accuracy is ', acc)
print(' ')
print('all inputs are : ', all_inputs)
print(' ')
print('all classes are : ', all_classes)
print(' ')
print('feature names are :', feature_name)
print(' ')
print('class names are : ', class_name)
print(' ')

print('feature_name 数据类型 : ', type(feature_name))
print(' ')
print('class_name 数据类型 : ', type(class_name))
print(' ')


print('all_inputs 数据类型 : ', type(all_inputs))
print(' ')
print('all_classes 数据类型 : ', type(all_classes))
class_name_2 = np.array(['0','1','2','3'])    #轴承实验台用
class_name_m = np.array(['0','1'])         #毛博士给的东方所的数据集用
# print('行数:', fourier_feature_data[:-1])
# print('列数:', fourier_feature_data[,:-1])
#dot_data = export_graphviz(dtc, out_file=None, feature_names = fourier_feature_data.columns[:-1], class_names = fourier_feature_data.columns[-1],filled = True, rounded =True, special_characters = True)
dot_data = export_graphviz(dtc, out_file=None, feature_names = feature_name, class_names = class_name_2, filled = True, rounded =True, special_characters = True)
#问题主要出在feature_names和class_names

graph = pydotplus.graph_from_dot_data(dot_data)
graph.write_png('20200821_jueceshu.png')
#abc = Image(graph.create_png())
image_path = 'C:/Users/rj/PycharmProjects/pythonProject/20200821_jueceshu.png'
Image(filename = image_path)





附上数据集:
https://pan.baidu.com/s/1xpBb4Vtm2bqLPiZKKPN1EQ
提取码 a9xr


incrediblejack 发表于 2020-8-23 23:38:33

求大神帮帮我咯!

incrediblejack 发表于 2020-9-1 22:26:46

已解决,主要是环境配置的问题。具体环境配置随后我能贴图了的话,贴几个图就可以了。
页: [1]
查看完整版本: 关于graphviz库的问题,报错png找不到,