您现在的位置:鸢尾 > 鸢尾功效 > > KNNSVMMLPKmeans分

KNNSVMMLPKmeans分

2022/7/9 来源:不详

北京治白癜风的中医院 https://jbk.39.net/yiyuanfengcai/yyjs_bjzkbdfyy/

来源:投稿作者:摩卡

编辑:学姐

NO.1数据集简介

实验使用了两个数据集,一个是经典的鸢尾花数据集(iris)另一个是树叶数据集(laf)

鸢尾花数据集(iris):

鸢尾花数据集发布于年7月1日,该数据集共有条数据,分为3个类别,为stosa、vrsicolor、virginica。

每个类别有50条数据,每条数据有4个特征,分别是spal_lngth(范围在4.3-7.9)、spal_width(范围在2.0-4.4)、ptal_lngth(范围在1.0-6.9)、ptal_width(范围在0.1-2.5)。

该数据集没有缺失值,但类别标签是字符串类型,需要进行重新编码(编码时从0开始)

树叶数据集(laf):

树叶数据集发布于年2月24日,该数据集共有条数据,有30个类别(有的是在同一类别下但是有学名有不同),每条数据有15个特征,没有缺失值,类别标签是数字编码无需进行转换。该数据集还提供RGB格式,可以用于计算机视觉任务。

NO.2实验工具介绍

硬件:本实验所使用的CPU型号为intr

i5-U1.6GHz-4.2GHz

软件:所使用的软件为Anaconda+Pycharm

框架:所使用的框架为pytorch、使用机器学习库sklarn、pandas、绘图工具matplotlib

NO.3实验步骤简介01模型简介

选取了KNN、SVM、K-mans、MLP这几个模型进行实验。

K近邻法(k-narstnighbor,k-NN)

KNN是一个基本的分类方法,由Covr和Hart在年提出。

K近邻算法简单直观:

给定一个训练集T={(x1,y1),(x2,y2),(x3,y3),……,(xn,yn)},对于新输入的实例xn+1,在训练集中找到与该实例最相近的k个实例,这k个实例的多数属于某个类,就把该输入实例分到这个类。k-近邻算法可以分为两个部分,一部分是根据训练集构造kd树进行超平面的划分,一部分是根据新输入的实例在kd树中进行搜索来确定新输入实例的类别。

当超平面构造完成,k值选取完毕之后,新实例的标签也就确定了。在进行距离测量时可以选择L1、L2范数,确定新实例所属类别时可以使用多数表决的方法。

支持向量机(supportvctormachins,SVM)

支持向量机(supportvctomachins)由Corts和Vapnik提出,最初只是线性支持向量机,适用于可线性分类的数据。后来Bosr、Guyon、Vapink又引入了核(krnl)的技巧,提出了非线性支持向量机。

图3样本点到平面距离

非线性支持向量机(non-linarsupportvctomachins)

顾名思义该向量机的决策边界(dcisionboundary)可以是非线性的。非线性支持向量机在线性向量机的基础上修改了,将修改为。

是一个特征向量,由每个样本与标记点(landmarks)的相似程度构成。

如图中红色的点为标记点(landmarks),绿色点为当前特征点x,蓝色点为其他特征点x_othrs。是由x与各个标记点的相似程度构成,当使用高斯核时相似程度的度量函数为

K均值聚类(k-mans)

聚类算法针对给定的样本,依据它们特征的相似度或者距离,将其归并到若干“类”或“簇”的分析问题。聚类属于无监督学习,只根据样本的相似度或距离将其进行归类。K-mans聚类算法属于中心聚类方法,通过迭代,将样本分摊到k个类中,使得样本与其所属的中心最近。

k-mans聚类算法分过程为,先随机产生k个聚类中心(cntroid),在训练集中按照样本点距离各中心的距离着色(着色过程也就是分类过程)再根据各类别点计算出均值,作为新聚类中心,如此循环直到聚类结束。

根据上述算法描述可知,K-mans聚类的优化对象是各个样本点到聚类中心的距离,

其中为每个样本点被分配到的类,为k个聚类中心,为每个样本点被分配到的聚类中心。

多层感知机(multilayrprcptron,MLP)

多层感知机也叫做深度前馈网络(dpfdforwardntwork)、前馈神经网络(fdforwardnuralntwork)。神经网络中最基本的单元是神经元(nuron)模型,每个神经元与其他神经元相连接,神经元收到来自n个其他神经元传递过来的输入信号,这些输入信号通过带权重的连接进行传递,神经元接收到的总输入值将与神经元的阈值进行比较,然后通过激活函数(activationfunction)处理以产生神经元的输出。

假设有如下图所示结构的网络,该网络从左至右分别为input层、hiddn1层、hiddn2层、output层。

图13神经网络

约定表示第j层上第i个神经元的激活项,表示第k层的第i个激活项的第j个输入,为激活函数。根据上述前向传播方法可知、、、、为:

图14梯度下降局部最优、全局最优

02鸢尾花数据集处理2.1数据预处理

鸢尾花数据集:

使用saborn库绘制数据集的图像进行分析,根据类别进行分类。得到一下图片。根据下面图像的观察,以花萼长度(spal_lngth)与花萼宽度(spal_width)进行分类时没有很好的将数据分开,所以进行数据清洗的时候将这两个类别清洗掉,以此来提高效率。

图15鸢尾花特征可视化1

进行数据清洗完毕后,进行可视化,得到如下结果。

图16鸢尾花特征可视化2

因为鸢尾花数据集的标签类别项是字符串类型,需要进行编码,使用LablEncodr()将其编码为0(stosa)、1(vrsicolor)、2(virginica)。

使用StandardScalr()进行标准化(使用StandardScalr()进行标准化的数学原理为将数据按其属性减去其均值,然后除以其方差。最后得到的结果是,对每个属性/每列来说所有数据都聚集在0附近,方差值为1)。

2.2划分数据集

将数据集划分为训练集(train_datast)和测试集(tst_datast)两部分,训练集条数据,测试集有30条数据。

03树叶数据集处理3.1数据预处理

树叶(laf)数据集共有14个特征和一个类别属性,计算属性与类别的相关系数,并进行热图的绘制。由下图可知,与类别成正相关的属性由高到底排序为B、M、I、K、C、J、L、N、D、A、E,也可以发现属性H、G、F与属性成负相关。

图17树叶属性热图1

进行数据清洗,除去成负相关的属性H、G、F,得到的热图如下。

图18树叶属性热图2

对树叶的类别进行编码使用LablEncodr()类别编号从0-29。使用StandardScalr()进行标准化。

3.2划分数据据

将数据集划分为训练集(train_datast)和测试集(tst_datast)两部分,训练集有条数据,测试集有条数据。

04鸢尾花数据集分类结果展示4.1KNN

使用KNN模型进行分类,测量邻居间距离使用minkowski距离,邻居个数k=5。预测准确率为97%。

图19KNN分类边界

图20KNN评价指标

4.2SVM

使用SVM进行分类,使用的核函数为高斯核(Gaussiankrnl),超参数C=1.0。预测准确率为97%。

图21SVM分类边界

图22SVM评价指标

4.3K-mans

使用K-mans进行分类,簇的个数n_clustrs=3,最大迭代次数max_itr=。预测准确率为97%

图23K-mans分类边界

图24K-mans评价指标

4.4MLP

使用MLP进行分类,构造全连接神经网络,该网络有1个输入层,1个输出层,3个隐藏层。输入层有2个神经元(在数据预处理前input神经元为4个),隐藏层神经元个数为16个,输出层神经元个数为3个(因为有3个类别,所以输出神经元个数为3)。

隐藏层激活函数为RLu函数,使用交叉熵损失函数,优化方法使用梯度下降法(SGD),学习率lr=0.01,momntum=0.9,最大周期max_poch=50。训练准确率最高为%,预测准确率最高为97%。

图25MLP训练、测试损失曲线

图26MLP评价指标

05树叶数据集分类结果5.1KNN

使用KNN模型进行分类,由于树叶数据集相比于鸢尾花数据集更复杂,参数的选择也更困难,所以使用网格化搜索最优参数。测量邻居间距离使p=1曼哈顿距离,邻居个数k=4,权重wight=“distanc”(权重和距离成反比),预测准确率为65%。

图27KNN评价指标

5.2SVM

使用SVM进行分类,同样使用网格化搜索最优参数。使用的核函数为线性核(Linarkrnl),超参数C=1.0、gamma=0.。预测准确率为77%。

图28SVM评价指标

5.3MLP

使用MLP进行分类,构造全连接神经网络,该网络有1个输入层,1个输出层,3个隐藏层。

输入层有14个神经元(在数据预处理后虽然变成11个但是效果不好),隐藏层神经元个数为23个,输出层神经元个数为30个(因为有30个类别,所以输出神经元个数为30)。

隐藏层激活函数为RLu函数,还在每层上添加了随即失活,失活率p=0.1,使用交叉熵损失函数,优化方法使用梯度下降法(SGD),学习率lr=0.01,momntum=0.9,最大周期max_poch=。训练准确率最高为93.3%,预测准确率最高为82.3%。

图29MLP训练、测试损失曲线

图30MLP评价指标

06实验结果比较6.1鸢尾花数据集

由下图可以看出,MLP、K-mans、SVM、KNN四种方法准确率(acc)均为97%。MLP、K-mans、SVM、KNN四种方法的平均精度(Avg_prcision)均为97%。

MLP、K-mans、SVM、KNN四种方法的平均召回率(Avg_rcall):SVM、KNN、MLP皆为97%,K-mans为95%。

MLP、K-mans、SVM、KNN四种方法的平均召回率(Avg_f1-scor):SVM、KNN、MLP皆为97%,K-mans为96%。

图31指标比较1

6.2树叶数据集

由下图可以看出,MLP准确率最高为82%,SVM其次为77%,最后是KNN为65%。MLP平均准确率(Avg_prcision)率最高为85%,SVM其次为79%,最后是KNN为69%。

MLP平均准确率(Avg_rcall)率最高为82%,SVM其次为77%,最后是KNN为65%。MLP平均准确率(Avg_f1-scor)率最高为82%,SVM其次为76%,最后是KNN为66%。

图32指标比较2

07实验结果分析7.1鸢尾花数据集

通过上面4个模型的accuracy、Avg_prcision、Avg_racll、Avg_f1-scor4个指标的对比可以发现,4个模型对鸢尾花数据集的各项指标都很高。在特征工程部分,将鸢尾花的4个属性进行清洗,只保留了2个重要的属性,使得噪声减少,提高了识别准确率等各项指标。

表1鸢尾花数据集

7.2树叶数据集

通过上面3个模型的accuracy、Avg_prcision、Avg_racll、Avg_f1-scor4个指标的对比,可以发现,相比于鸢尾花数据集,模型的各项指标都有大幅度的下降。这是由于树叶数据集比鸢尾花数据集更加复杂:类别多(30类)、特征多(14个)。并且在MLP、SVM、KNN三个模型中,MLP表现最好,识别率为82%,其余三项指标也都在82%左右。

表2树叶数据集

08总结

选择了两个数据集进行实验,先在特征较少,数据量较小的鸢尾花数据集上进行实验,所用4个模型均取得较好结果。注意一点,K-mans属于无监督学习方法,所以在进行评估的时候将K-mans模型预测出来的标签不一定与数据集的标签编码对应。多进行几次聚类,绘制出图像,根据图像选择。

在进行树叶数据集的分类时,因为数据集的特征数较多,想到使用PCA进行数据压缩,将14个特征压缩到10和特征,但是效果并不理想。也采用了计算相关系数的方法,效果也不好。

所以只在原数据的基础上进行了标准化。在MLP、SVM、KNN三个模型中,显然MLP的实验效果更好。在更开始训练MLP时出现过拟合现象,在每一个隐藏层前都添加了随即失活(p=0.1)来避免过拟合的出现。

—转发拿奖品—

往期精彩阅读

??kaggl比赛baslin合集

??经典论文推荐合集

??人工智能必读书籍

??本专科硕博学习经验

点这里??

转载请注明:
http://www.3g-city.net/gjyzz/723.html
  • 上一篇文章:

  • 下一篇文章:
    • 没有热点文章
    • 没有推荐文章
    网站首页 版权信息 发布优势 合作伙伴 隐私保护 服务条款 网站地图 网站简介

    温馨提示:本站信息不能作为诊断和医疗依据
    版权所有2014-2024 冀ICP备19027023号-6
    今天是: