鱼C论坛

 找回密码
 立即注册
查看: 2487|回复: 2

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

[复制链接]
发表于 2020-8-21 18:57:48 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
代码的功能主要是利用决策树进行分类,并画出决策树
我是用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库。
请各位大神帮帮忙咯!
谢谢

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

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

  14. print(' ')


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

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



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

  22. num = all_inputs.shape[0]
  23. num_train = training_inputs.shape[0]
  24. num_test = num - num_train
  25. acc = sum(y_test_pre == testing_classes) / num_test
  26. print('The accuracy is ', acc)
  27. print(' ')
  28. print('all inputs are : ', all_inputs)
  29. print(' ')
  30. print('all classes are : ', all_classes)
  31. print(' ')
  32. print('feature names are :', feature_name)
  33. print(' ')
  34. print('class names are : ', class_name)
  35. print(' ')

  36. print('feature_name 数据类型 : ', type(feature_name))
  37. print(' ')
  38. print('class_name 数据类型 : ', type(class_name))
  39. print(' ')


  40. print('all_inputs 数据类型 : ', type(all_inputs))
  41. print(' ')
  42. print('all_classes 数据类型 : ', type(all_classes))
  43. class_name_2 = np.array(['0','1','2','3'])    #轴承实验台用
  44. class_name_m = np.array(['0','1'])           #毛博士给的东方所的数据集用
  45. # print('行数:', fourier_feature_data[:-1])
  46. # print('列数:', fourier_feature_data[,:-1])
  47. #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)
  48. dot_data = export_graphviz(dtc, out_file=None, feature_names = feature_name, class_names = class_name_2, filled = True, rounded =True, special_characters = True)
  49. #问题主要出在feature_names  和  class_names

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


复制代码



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


小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-8-23 23:38:33 | 显示全部楼层
求大神帮帮我咯!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-1 22:26:46 | 显示全部楼层
已解决,主要是环境配置的问题。具体环境配置随后我能贴图了的话,贴几个图就可以了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-26 13:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表