|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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库。
请各位大神帮帮忙咯!
谢谢
附上代码:
- 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[0]
- num_train = training_inputs.shape[0]
- 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
|
|