这篇内容是实践,会调用一些函数,代码已经在最后展出,可以直接用
在本节,我们用入门深度学习的基础实验之一“鸢尾花分类任务”来进行实践,使用经典学术数据集Iris作为训练数据,实现基于Softmax回归的鸢尾花分类任务。
实践流程主要包括以下7个步骤:数据处理、模型构建、损失函数定义、优化器构建、模型训练、模型评价和模型预测等,
数据处理:根据网络接收的数据格式,完成相应的预处理操作,保证模型正常读取;模型构建:定义Softmax回归模型类;训练配置:训练相关的一些配置,如:优化算法、评价指标等;组装Runner类:Runner用于管理模型训练和测试过程;模型训练和测试:利用Runner进行模型训练、评价和测试。本实践的主要配置如下:
数据:Iris数据集;模型:Softmax回归模型;损失函数:交叉熵损失;优化器:梯度下降法;评价指标:准确率。3.3.1 数据处理3.3.1.1 数据集介绍Iris数据集,也称为鸢尾花数据集,包含了3种鸢尾花类别(Setosa、Versicolour、Virginica),每种类别有50个样本,共计150个样本。其中每个样本中包含了4个属性:花萼长度、花萼宽度、花瓣长度以及花瓣宽度,本实验通过鸢尾花这4个属性来判断该样本的类别。
鸢尾花属性
属性1
属性2
属性3
属性4
sepal_length
sepal_width
petal_length
petal_width
花萼长度
花萼宽度
花瓣长度
花瓣宽度
鸢尾花类别
英文名
中文名
标签
Setosa
Iris
狗尾草鸢尾
Versicolour
Iris
杂色鸢尾
Virginica
Iris
弗吉尼亚鸢尾
鸢尾花属性类别对应预览
sepal_length
sepal_width
petal_length
petal_width
species
5.1
3.5
1.4
0.2
setosa
4.9
3
1.4
0.2
setosa
4.7
3.2
1.3
0.2
setosa
…
…
…
…
…
对数据集中的缺失值或异常值等情况进行分析和处理,保证数据可以被模型正常读取。
代码实现如下:
运行结果:
从输出结果看,鸢尾花数据集中不存在缺失值的情况。
2. 异常值处理通过箱线图直观的显示数据分布,并观测数据中的异常值。
运行结果:
从输出结果看,数据中基本不存在异常值,所以不需要进行异常值处理。
3.3.1.3 数据读取本实验中将数据集划分为了三个部分:
训练集:用于确定模型参数;验证集:与训练集独立的样本集合,用于使用提前停止策略选择最优模型;测试集:用于估计应用效果(没有在模型中应用过的数据,更贴近模型在真实场景应用的效果)。在本实验中,将的数据用于模型训练,的数据用于模型验证,的数据用于模型测试。
代码实现如下:
运行结果:
运行结果:
运行结果:
3.3.2 模型构建使用Softmax回归模型进行鸢尾花分类实验,将模型的输入维度定义为4,输出维度定义为3。
代码实现如下:
3.3.3 模型训练实例化RunnerV2类,使用训练集和验证集进行模型训练,共训练80个epoch,其中每隔10个epoch打印训练集上的指标,并且保存准确率最高的模型作为最佳模型。
代码实现如下:
运行结果:
可视化观察训练集与验证集的准确率变化情况。
运行结果:
使用测试数据对在训练过程中保存的最佳模型进行评价,观察模型在测试集上的准确率情况。
代码实现如下:
运行结果:
3.3.5 模型预测使用保存好的模型,对测试集中的数据进行模型预测,并取出1条数据观察模型效果。
代码实现如下:
运行结果:
首先,我们看一下学习率的影响,这里我们循环一下(为了方便观察,内部代码有些许更改):
运行结果(lr为学习率):
通过调节学习率,我们发现,学习率过低和过高都会造成训练模型变差,当训练模型没有达到预取效果时,我们可以通过调整学习率来改变训练模型,让其向着预期效果学习
训练轮数下面,我们来调节一下训练轮数:
运行结果:
通过调整训练轮数我们发现,当训练轮数少时,误差较大;当训练轮数过多时,误差为0,过拟合了。当我们训练模型差时,可以提高训练轮数;当我们训练模型太好的时候,我们有可能过拟合了。
注: 训练轮数的调节不要从0开始
通过该章的学习,我学会使用Softmax回归和Logistic回归的使用,和实践的应用,了解了训练轮数和学习率对训练模型的影响。加深了实践过程步骤,也更加深刻的了解了深度学习的过程。
内容太多了,如果太多了,可能会没有耐心看完,而且查找也不是很方便。
这里我分成了上中下三篇,分别为基于Logistic回归的二分类任务(上篇),基于Softmax回归的多分类任务(中篇),实践:基于Softmax回归完成鸢尾花分类任务(下篇)。
相关知识
【机器学习】基于KNN算法实现鸢尾花数据集的分类
Knn算法实现鸢尾花分类
KNN算法实现鸢尾花数据集分类
KNN分类算法介绍,用KNN分类鸢尾花数据集(iris)
【机器学习】KNN算法实现鸢尾花分类
kNN 解决鸢尾花和手写数字识别分类问题
原生python实现knn分类算法(鸢尾花数据集)
【机器学习】应用KNN实现鸢尾花种类预测
朴素贝叶斯算法对鸢尾花分类
【python机器学习】KNN算法实现回归(基于鸢尾花数据集)
网址: 基于KNN的鸢尾花分类 https://m.huajiangbk.com/newsview1545222.html
上一篇: 使用pca的降维方法对sklea |
下一篇: LDA算法实现鸢尾花数据集降维 |