机器学习实验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
画图工具
上一篇:
通过多线程提高代码的执行效率例子