版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单元4k-NN算法机器学习电气与信息工程系CONTENTS
目录010203任务4.1Seeds数据集导入与数据预处理任务4.2训练k-NN模型任务4.3模型评估引例描述
(a)(b)(a:该怎么判断这粒种子是哪种小麦种子呢?b:很简单,看这粒种子和以上三种种子中的哪种比较像,就分成哪个吧!)图4-1情景描述任务4.1Seeds数据集导入与数据预处理任务4.1—任务情景k-NN算法是一种直观的、应用广泛的分类方式,在图像识别、推荐算法、分类算法中有着广泛的应用。
本任务旨在使用k-NN算法进行小麦种子分类前对其进行简单的数据集导入和数据预处理,分离出需要使用的训练集与测试集、标签值与特征值。我们采用的数据集来自加利福尼亚大学(UCI)提供的Seeds数据集。
在Seeds数据集中,存放了不同品种小麦种子的区域、周长、压实度、籽粒长度、籽粒宽度、不对称系数、籽粒腹沟长度及类别数据。在该数据集中,总共有210条记录、7个特征、1个标签,标签分为3类。数据集如图所示。数据集图示任务4.1—任务情景
在处理Seeds数据集时,首先应该分离出训练集和测试集,训练集包括小麦种子的特征值、标签值,不同条的特征值对应不同的标签Kama、Rosa、Canadian。若用A(a1,
a2,
a3,…)表示测试集中A种子的特征值,用B(b1,
b2,
b3,…)表示测试集中B种子的特征值,以此类推。在本单元中,要判断新的种子数据以X(x1,
x2,
x3,…)为例为哪种类别的种子,就要先计算出新数据与训练数据的欧氏距离DXA,
DXB,…,再从中选取k条距离最近的训练数据,通过多数投票制选择k条训练数据中出现次数最多的标签,该标签则为最终的预测类别,小麦种子预测流程图如图所示。小麦种子预测流程图任务4.1—任务布置
在Python中,实现数据集导入和数据预处理,提取特征值和标签值,随机选取测试集与训练集。导入的Seeds数据集的部分数值如图所示。导入的Seeds数据集的部分数值任务4.1—任务情景导入的Seeds数据集的部分数据信息如图所示。(a)导入的Seeds数据集的部分特征值(b)Seeds数据集部分标签值导入的Seeds数据集的部分数据信息任务4.1—知识准备1.用read_csv()函数读取文件csv是目前十分常用的数据保存格式,pandas库为数据处理过程中数据的读取提供了强有力的支持。pandas读取csv文件是通过read_csv()函数进行的。读取本地文件夹内的students.csv文件。importpandasaspdstu=pd.read_csv(“./student.csv”)该函数不仅可以读取本地文件,也可以读取统一资源定位器(URL)指向的文件。读取URL上的文件importpandasaspdstu=pd.read_csv(“http://localhost/student.csv”)任务4.1—知识准备2.数据切分sklearn库包含将数据集划分成训练集与测试集的函数train_test_split(),其中,test_size参数为分数时表示测试集样本的占比,test_size参数为整数时表示测试样本选取的数量。选取数据集的十分之一作为测试集X_train,X_test,y_train,y_test=train_test_split(data,target,test_size=0.1)任务4.1—任务实施
Step1:引入相关模块,NumPy模块是Python中用于提供大量高级的数值编程工具的模块,pandas库可以对各种类型的文件进行处理。Step2:用read_csv()函数导入数据集,并使用loc函数取数据集前7列作为特征值,取数据集第8列作为标签值。Step3:进行数据切分,分出训练集与测试集。将测试集的数量设置为数据集的10%。(a)测试集特征值(b)测试集标签值划分出的测试集数据任务4.2训练k-NN模型任务4.2—任务情景任务4.2—任务情景k-NN是一种直观的、应用广泛的分类方式,其在图像识别、推荐算法、分类算法中有着广泛的应用。本任务旨在使读者了解k-NN的算法原理,模型的搭建,并使读者学会使用Python搭建k-NN模型,训练集为Seeds数据集,调整参数得到较好的效果。Seeds数据集图示如图所示。Seeds数据集图示任务4.2—任务布置要求通过训练出的k-NN模型预测测试集,并理解距离度量的变化、k值的变化对结果造成的影响。不同距离度量及k值的结果展示如图所示。不同距离度量及k值的结果展示在本案例中,距离度量选择曼哈顿距离与欧氏距离的结果相同,同学们可以选择其他案例进行测试。任务4.2—知识准备—1.k-NN算法k-NN算法最初由Cover和Hart于1968年提出,是一种直观的分类或回归算法。给定一个拥有标签值和特征值的训练集例,如新闻信息训练集。对于一条新输入的新闻实例,用k-NN算法计算与该新闻实例最邻近(相似)的k个训练新闻实例,假如,这个新闻实例多数属于时政新闻,就把新的实例分类给时政新闻;假如k个新闻实例多数属于娱乐新闻,就把新的实例分类给娱乐新闻。任务4.2—知识准备—1.k-NN算法假设训练集为式中,n为训练集样本的个数;为数据集中实例i的特征向量;表示为数据集中实例i的标签值;若输入一个新的实例x,根据给定的距离度量方法,在训练集S中找出由距离x最近的k个点组成的集合表示为类别的总数为q。根据k-NN算法分类规则,实例x所属的分类y可以由集合
的出现概率最大的标签获得。
任务4.2—知识准备—1.k-NN算法k-NN模型图示如图所示,方形和三角形表示两个类别的训练数据,圆形表示待预测的新实例。当k=3时,可以发现,在距离圆形较近的三个点中,三角形有两个,方形有一个,三角形居多,因此会将新实例分类给三角形这一类别;当k=4时,可以发现,在距离圆形较近的五个点中,三角形有两个,方形有三个,方形居多,因此会将实例分类给方形这一类别。
k-NN模型图示k-NN算法中的一个特殊情况为
的情况,表示选择距离新实例最近的一个实例的标签作为新实例的标签。此时,这种算法被称为最近邻算法。任务4.2—知识准备—2.k-NN模型前面说过,k-NN模型的建立具有三个要素:①如何计算两个节点之间的距离,也就是距离度量的选择。②k值的选择。③分类决策的规则。1)距离度量的选择k-NN模型的建立需要考虑距离度量的选择,在选择距离实例较近的k个点时,在特征空间中,可以采取多种距离度量方法,一般采用的是p=2时的闵可夫斯基距离,也就是欧氏距离。实例特征向量和的欧氏距离的定义式为式中,,表示是n维向量。任务4.2—知识准备—2.k-NN模型
距离度量不仅可以选择欧氏距离,也可以选择曼哈顿距离、马氏距离、流形距离等。其中最常用的是欧氏距离与曼哈顿距离。欧氏距离就是空间中两个节点之间的最短距离,曼哈顿距离是两个节点之间每个维度的距离之和。距离度量如图所示,两个节点之间的绿色线条表示的是直线距离,也就是欧氏距离,而红色、蓝色、黄色线条表示的是曼哈顿距离。距离度量图示不同距离度量方法选择的最近邻点也是不同的。在本单元中,我们默认选择欧氏距离度量方法。任务4.2—知识准备—2.k-NN模型课堂随练4-4选择曼哈顿距离度量方法训练k-NN模型。knn=KNeighborsClassifier(n_neighbors,weights,algorithm,p=1,metric='minkowski')metrix=‘minkowski’
表示选择闵可夫斯基距离度量,p(整数)是Minkowski距离的幂参数。p=1表示选择曼哈顿距离度量,p=2表示选择欧氏距离度量。任务4.2—知识准备—2.k-NN模型2)k值的选择k-NN模型的建立需要考虑k值的选择,会对k-NN算法的结果产生较大的影响。k值越小,选择的近邻集合元素就越少,如果近邻集合中刚好出现了噪声点,那么预测结果就很容易出错,因此容易出现过拟合现象。如图所示为k=1时模型的选择,如果k值过小(为1),尽管新实例四周方形居多,但最近一个节点为圆形,因此很容易被噪声节点影响而被分给错误的类别。k=1时模型的选择任务4.2—知识准备—2.k-NN模型k值越大,选择的近邻集合元素就越多,这时对新实例影响较小的训练实例也会被考虑在内,如图所示。很明显,新实例应分给方形的类别,但当k值选择得特别大时,新实例的分类会被大量的不相关属性支配,最后新实例就会被错误地分类给圆形的类别。k值选取过大时模型的分类情况任务4.2—知识准备—2.k-NN模型因此,k值的选择过程也是准确率和过拟合程度均衡的过程。在实际案例中,k值一般选择较小的数值。如果想要取得最佳k值,一般采用CV法,从k=1开始,观察分类准确率,重复这个过程,每次k值增加1,允许增加一个近邻,将准确率最高的k值作为最佳k值,k值的选择如图所示,当k=1时,新实例被分类给方形的类别;当k=2时,新实例被分类给三角形的类别;当k=3时,新实例被分类给方形的类别,依次增加计算。在一般数据集中,k的取值不超过20,但若数据集增大,则k的取值也应该增大。k值的选择任务4.2—知识准备—2.k-NN模型3)分类决策的规则在k-NN算法中,分类决策一般采用多数投票制,即在与新实例相近的k个实例中,哪个类别的实例较多,就把新实例分类给哪类。随着k-NN算法的发展,衍生出针对传统k-NN算法的许多改进算法,如距离加权最近邻算法,对k个近邻的贡献加权,根据它们相对新实例的距离,将较大的权重赋给较近的近邻。本单元基于传统的k-NN算法来建模。任务4.2—知识准备—2.k-NN模型k-NN模型是一种消极(惰性)模型,那么什么是消极模型呢?首先,利用算法通过建立模型然后将测试数据应用于模型的方法就是积极的学习方式,积极的模型在训练模型的过程中已经考虑到了所有训练样本的数据,在决策时基本不需要时间。而消极的模型推迟对训练数据的建模,虽然训练时间短,但是在最后预测分类时,仍需要考虑训练样本的情况,例如k-NN需要在分类时依次计算测试样本与训练样本的距离,这种延迟的建模技术叫作消极的学习方法。之所以称k-NN为消极模型,并不是因为k-NN模型简单,而是因为其只对训练数据进行保存和“记忆”,没有从训练样本中学到真正的模型,除非测试样本“来了”,才会开始学习。任务4.2—知识准备—3.k-NN算法的优缺点分析1)k-NN算法的优点(1)k-NN算法简单直观,易于理解,对数学基础要求较低。(2)预测精度高,对异常值不敏感。(3)k值的选择流程表明:k-NN算法适用于多样本分类。(4)k-NN模型为惰性模型,因此模型训练阶段用时较短。2)k-NN算法的缺点(1)内存占用较多,需要在内存中存储所有训练数据。(2)因为需要在预测阶段依次计算测试样本与训练样本的距离,所以预测阶段用时较长。(3)k值的选择对结果影响较大,且k值不好选择。任务4.2—任务实施Step1:引入相关模块。Step2:使用sklearn库自带的KNeighborsClassifier()函数创建k-NN模型,参数选择模型默认参数(也可传入空参数),即k值选择5,选择的距离度量为欧氏距离。Step3:根据训练数据训练模型。任务4.3模型评估任务4.3—任务布置
模型评估是模型训练中必不可少的一部分,要评估k-NN模型的优劣,不仅需要对已知数据进行预测,还需要对未知数据进行预测。在本任务中,我们通过Python中的工具对模型进行评估,并寻找合适的方法对评估结果进行可视化,以便更好地观察模型表现。预测集的准确率如图所示图测试集的准确率任务4.3—任务布置
通过一个交叉表观察k-NN模型对小麦种子的预测情况。预测出的测试样本的热图展示如图所示。预测出的测试样本的热图展示预测出的测试样本的交叉表任务4.3—知识准备1.测试集预测利用sklearn库中的predict()函数对测试集进行预测假设测试集的特征值为X={x1,x2,…,xn},模型为k-NN(已训练)。Y
=knn.predict(X)#predeic函数中的参数是待预测特征值,Y表示预测标签值由knn.score()函数可以直接得到k-NN模型的预测准确率。它的两个参数为待预测特征值与已知待预测值的标签值。假设测试集的特征值为X={x1,x2,…,xn},测试集的标签值为Y={y1,y2,…,yn}模型为k-NN(已训练)。求模型对测试集预测的准确率。acc=knn.score(X,Y)print("测试集的准确率为",acc)任务4.3—知识准备2.交叉表展示pandas库中的crosstab()函数具有强大的展示功能,crosstab()函数中的参数index和columns分别表示取其交叉表的两个变量,rownames参数与colnames参数可以分别设置为行与列的名称。通过交叉表可以看到同时属于两种变量的样本的个数。课堂随练—practice-1针对如图所示的学生信息文件students.csv,画出成绩与专业交叉表。学生信息文件students.csv任务4.3—知识准备importnumpyasnpimportpandasaspddata=np.array(pd.read_csv('./students.csv'))score=data[:,2]major=data[:,3]#画交叉表cross_table=pd.crosstab(index=score,columns=major,rownames=['Predicted'],colnames=['True'],margins=True)print(cross_table)交叉表案例任务4.3—知识准备crosstab()函数还可以与.heatmap()函数搭配使用,画出更美观的热图。课堂随练—practice-2画出如图交叉表的热图importmatplotlib.pyplotaspltimportseabornassnsa=pd.crosstab(index=score,columns=major,rownames=['Predicted'],colname
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年长期商业秘密保护合同书
- 手术器械的清洗与消毒
- 卤代烃【教学课件】 2025-2026学年高二下学期化学人教版选择性必修3
- 2025年初级会计考试历年真题及答案
- 防水涂料工程验收标准
- Unit 2 Good habits教学设计小学英语六年级下册牛津译林版
- 网架结构工程施工材料管理保证措施
- 铁路营业线施工安全质量监督员考试试题及答案
- Unit 1 Communities.教学设计中职英语拓展模块高教版
- 护理心理与支持
- 人教版五年级下册道德与法治专项训练测试题(附答案)
- 2026石河子泽众水务有限公司部分岗位社会招聘37人笔试备考题库及答案解析
- 2026国盛证券股份有限公司选聘广西分公司负责人1人备考题库附答案详解(能力提升)
- 2026湖北供销集团有限公司招聘66人考试备考题库及答案解析
- 2026年餐厅装修设计需求说明书
- 2026年上海军转干部安置考试行政管理知识点归纳
- 【 道法 】国家监察机关的职责课件-2025-2026学年统编版道德与法治八年级下册
- 江苏省兴化市2026届中考数学模拟预测题含解析
- TSG08-2026《特种设备使用管理规则》全面解读课件
- 降低心脏植入型电子器械(CIED)植入术住院死亡率策略探讨
- 老龄政策课件
评论
0/150
提交评论