首页 > 分享 > 基于KNN的鸢尾花分类

基于KNN的鸢尾花分类

目录:第3章 线性分类3.3 实践:基于Softmax回归完成鸢尾花分类任务3.3.1 数据处理3.3.1.1 数据集介绍3.3.1.2 数据清洗1. 缺失值分析2. 异常值处理3.3.1.3 数据读取3.3.2 模型构建3.3.3 模型训练3.3.4 模型评价3.3.5 模型预测下篇需要的包1. op.py2. opitimizer.py3. metric.py4. RunnerV2.py5. activation.py6. 该篇所有代码习题尝试调整学习率和训练轮数等超参数,观察是否能够得到更高的精度学习率训练轮数总结

第3章 线性分类

这篇内容是实践,会调用一些函数,代码已经在最后展出,可以直接用

3.3 实践:基于Softmax回归完成鸢尾花分类任务

在本节,我们用入门深度学习的基础实验之一“鸢尾花分类任务”来进行实践,使用经典学术数据集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






3.3.1.2 数据清洗1. 缺失值分析

对数据集中的缺失值或异常值等情况进行分析和处理,保证数据可以被模型正常读取。

代码实现如下:

运行结果:

从输出结果看,鸢尾花数据集中不存在缺失值的情况。

2. 异常值处理

通过箱线图直观的显示数据分布,并观测数据中的异常值。

运行结果:

从输出结果看,数据中基本不存在异常值,所以不需要进行异常值处理。

3.3.1.3 数据读取

本实验中将数据集划分为了三个部分:

训练集:用于确定模型参数;验证集:与训练集独立的样本集合,用于使用提前停止策略选择最优模型;测试集:用于估计应用效果(没有在模型中应用过的数据,更贴近模型在真实场景应用的效果)。

在本实验中,将的数据用于模型训练,的数据用于模型验证,的数据用于模型测试。

代码实现如下:

运行结果:

运行结果:

运行结果:

3.3.2 模型构建

使用Softmax回归模型进行鸢尾花分类实验,将模型的输入维度定义为4,输出维度定义为3。

代码实现如下:

3.3.3 模型训练

实例化RunnerV2类,使用训练集和验证集进行模型训练,共训练80个epoch,其中每隔10个epoch打印训练集上的指标,并且保存准确率最高的模型作为最佳模型。

代码实现如下:

运行结果:

可视化观察训练集与验证集的准确率变化情况。

运行结果:

3.3.4 模型评价

使用测试数据对在训练过程中保存的最佳模型进行评价,观察模型在测试集上的准确率情况。

代码实现如下:

运行结果:

3.3.5 模型预测

使用保存好的模型,对测试集中的数据进行模型预测,并取出1条数据观察模型效果。

代码实现如下:

运行结果:

下篇需要的包

1. op.py2. opitimizer.py3. metric.py4. RunnerV2.py5. activation.py6. 该篇所有代码

习题

尝试调整学习率和训练轮数等超参数,观察是否能够得到更高的精度学习率

首先,我们看一下学习率的影响,这里我们循环一下(为了方便观察,内部代码有些许更改):

运行结果(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算法实现鸢尾花数据集降维