机器学习实验2------决策树模型实现

机器学习实验2------决策树模型实现

一、实验目的

    理解决策树相关原理和概念。 能够使用决策树模型解决相关问题。 熟练使用Scikit-learn 中决策树相关模块。

二、实验内容

    使用决策树模型解决鸢尾花分类问题。

三、实验要求

    对问题进行描述并给出决策树模型解决问题的原理。 将问题相关数据集划分成训练集和测试集。 给出决策树模型解决鸢尾花分类问题的代码。 通过调整模型参数实现类似剪枝的操作。

四、实验分析及代码

引入鸢尾花数据,划分训练集和测试集

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
iris=load_iris()
X=iris.data
Y=iris.target

setosa_X=X[:50]
setosa_Y=Y[:50]
varsicolor_X=X[50:100]
varsicolor_Y=Y[50:100]
virginica_X=X[100:150]
virginica_Y=Y[100:150]           #分类划分

setosa_X_train,setosa_X_test,setosa_Y_train,setosa_Y_test=train_test_split(X,Y,test_size=0.3)
varsicolor_X_train,varsicolor_X_test,varsicolor_Y_train,varsicolor_Y_test=train_test_split(X,Y,test_size=0.3)
virginica_X_train,virginica_X_test,virginica_Y_train,virginica_Y_test=train_test_split(X,Y,test_size=0.3)

X_train=list(setosa_X_train)+list(varsicolor_X_train)+list(virginica_X_train)
X_test=list(setosa_X_test)+list(varsicolor_X_test)+list(virginica_X_test)
Y_train=list(setosa_Y_train)+list(varsicolor_Y_train)+list(virginica_Y_train)
Y_test=list(setosa_Y_test)+list(varsicolor_Y_test)+list(virginica_Y_test)                            #整合

引入模块建立模型

from sklearn.tree import DecisionTreeClassifier
model=tree.DecisionTreeClassifier(criterion=entropy)

模型训练,预测,返回结果验证

model.fit(X_train,Y_train)     #模拟训练                                                           
Y_predict=model.predict(X_test)    #预测                                                       
score=model.score(X_test ,Y_test )   #评估                                                     
print(score)

剪枝操作

from sklearn import tree
d=model.get_depth()   #获取深度
model= DecisionTreeClassifier(criterion=entropy,min_samples_split=2,min_samples_leaf=1,max_depth=d-1)
model.fit(X_train, Y_train)
score1= model.score(X_test, Y_test)
print(score1)

打印决策树操作

with open("D:/DecisionTree/tree.dot", w) as f:
    dot_data = tree.export_graphviz(model, out_file=None)
    f.write(dot_data)

命令cmd窗口模式下:dot -Tpdf D:DecisionTree	ree.dot -o D:/DecisionTree/tree.pdf

画图工具

经验分享 程序员 微信小程序 职场和发展