模式识别-决策树代码visual studio
决策树代码
·
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split,GridSearchCV #这个库里有分数据集的函数
#决策树
from sklearn import tree
from sklearn.tree import DecisionTreeClassifier
from sklearn import datasets
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score #准确率
#--------------------------------------数据处理部分-------------------------------------------
filepath="C:\\Users\\Administrator\\Desktop\\iris.data" # 读取数据
data=pd.read_csv(filepath,header=0,encoding="gbk") #默认写法,读取的格式
data.dropna(inplace=True) # 设置数据原地替换 inplace函数的作用是,创建一个新对象而不是在原始数据进行更改,然后将缺省的行都删掉
#print("原数据")
#print(data) #从网上直接下载的数据集
# 数据标签化
data.loc[data.iloc[:,4] == 'Iris-setosa', 5] = 0 #第4列为'Iris-setosa'时,就让第五列的value=0,没有第五列会增加一列
data.loc[data.iloc[:,4] == 'Iris-versicolor', 5] = 1
data.loc[data.iloc[:,4] == 'Iris-virginica', 5] = 2
#print("数据标签化之后")
#print(data) #成功在后面加了一列,专门表示类别
# 归一化
for i in range(4): #前四列数字
data.iloc[:,i] =( data.iloc[:,i] - data.iloc[:,i].mean()) /data.iloc[:,i].std() #数值-该列的平均值 /该列的方差
#print("归一化之后")
#print(data)
#划分数据集和训练集
total_X = data.iloc[:,:4] #前四列数字
total_y = data.iloc[:,5].astype(int) #把最后一列的标识用int型表示,作为类别
X_train, X_test, y_train, y_test = train_test_split(total_X, total_y, test_size=0.333333) #0.333333
#得到的训练数据,测试数据,训练类别,测试类别 所要划分的样本特征集 所要划分的样本结果 测试集占总样本的比例,如果是整数的话就是样本的数量
#------------------------------------------------------决策树----------------------------------------------
clf = tree.DecisionTreeClassifier(criterion='entropy') #参数使用熵
clf = clf.fit(total_X,total_y)
pre = clf.predict(X_test) #准确率
print(accuracy_score(y_test,pre))
#训练之中不可以画树 tree.plot_tree(clf)
plt.figure(figsize=(10,12))
picture1=tree.plot_tree(decision_tree=clf,filled=True)
#plt.show() #在这里写的话,窗口会卡在这,只有关闭此窗口,下一个窗口才可以显示,所以还是放到最后再show
plt.figure(figsize=(12,9))
picture2=tree.plot_tree(clf,filled=True,max_depth=1) #最大深度为1
# 树的深度变浅了,树的裁剪
clf2 = DecisionTreeClassifier(criterion='entropy',max_depth=5) #参数使用熵,加入裁剪
clf2 = clf2.fit(total_X,total_y)
pre2 = clf2.predict(X_test) #准确率
print(accuracy_score(y_test,pre2))
plt.figure(figsize=(15,8)) #画图
picture3= tree.plot_tree(clf2,filled=True)
#Gini
# 树的深度变浅了,树的裁剪
clf3 = DecisionTreeClassifier(criterion='gini',max_depth=5)
clf3.fit(X_train,y_train)
pre3 = clf3.predict(X_test)
print(accuracy_score(y_test,pre3))
plt.figure(figsize=(10,8))
picture4 = tree.plot_tree(clf3,filled=True)
plt.show()
更多推荐
已为社区贡献2条内容
所有评论(0)