编程语言
首页 > 编程语言> > 使用决策树算法进行鸢尾花数据分类

使用决策树算法进行鸢尾花数据分类

作者:互联网

使用决策树算法进行鸢尾花数据分类(学习笔记)

决策树算法介绍

准备数据以及划分训练集和测试集

加载数据以及调用所需的包
代码:

from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
import seaborn as sns
from sklearn.metrics import accuracy_score
iris = load_iris()
print('特征名称:',iris.feature_names)
print('类别:',iris.target_names)

输出结果:

特征名称: ['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']
类别: ['setosa' 'versicolor' 'virginica']

数据处理
代码:

X = iris.data
y = iris.target
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=1/4,random_state=0)
print('数据集样本数:{},训练样本数:{},测试集样本数:{}'.format(len(X),len(X_train),len(X_test)))

输出结果:

数据集样本数:150,训练样本数:112,测试集样本数:38

建立模型,训练模型,测试模型

建立模型
代码:

dt_model = DecisionTreeClassifier(max_depth=3)

训练模型
代码:

dt_model.fit(X_train,y_train)

测试模型
代码:

y_pred = dt_model.predict(X_test)

acc = accuracy_score(y_test,y_pred)

print('准确率:',acc)

输出结果:

准确率: 0.9736842105263158

我们在建立模型的时候设置的最大深度参数为3,我们看接下来看一看超参数对于模型的影响

我们分别将参数设置为2,3,4来对比一下训练集和测试集上的准确率

代码:

max_depth_values = [2,3,4]

for max_depth_val in max_depth_values:
    dt_model = DecisionTreeClassifier(max_depth=max_depth_val)
    dt_model.fit(X_train,y_train)

    print('max_depth = ',max_depth_val)
    print('训练集上的准确率:{:.3f}'.format(dt_model.score(X_train,y_train)))
    print('测试集上的准确率:{:.3f}'.format(dt_model.score(X_test,y_test)))

得到结果:

max_depth =  2
训练集上的准确率:0.964
测试集上的准确率:0.895
max_depth =  3
训练集上的准确率:0.982
测试集上的准确率:0.974
max_depth =  4
训练集上的准确率:1.000
测试集上的准确率:0.974

由此可见当参数设置为4时在训练集和测试集上的准确率是最高的,那我们也可以再试着将参数加大看一看会有什么变化

标签:max,算法,准确率,depth,train,test,鸢尾花,集上,决策树
来源: https://blog.csdn.net/CavalierJHC/article/details/121744221