【Python机器学习】KNN进行水果分类和分类器实战(附源码和数据集)
需要源码和数据集请点赞关注收藏后评论区留言私信~~~
KNN算法简介
KNN(K-Nearest Neighbor)算法是机器学习算法中最基础、最简单的算法之一。它既能用于分类,也能用于回归。KNN通过测量不同特征值之间的距离来进行分类。
KNN算法的思想非常简单:对于任意n维输入向量,分别对应于特征空间中的一个点,输出为该特征向量所对应的类别标签或预测值。
KNN算法是一种非常特别的机器学习算法,因为它没有一般意义上的学习过程。它的工作原理是利用训练数据对特征向量空间进行划分,并将划分结果作为最终算法模型。存在一个样本数据集合,也称作训练样本集,并且样本集中的每个数据都存在标签,即我们知道样本集中每一数据与所属分类的对应关系。
输入没有标签的数据后,将这个没有标签的数据的每个特征与样本集中的数据对应的特征进行比较,然后提取样本中特征最相近的数据(最近邻)的分类标签。
一般而言,我们只选择样本数据集中前k个最相似的数据,这就是KNN算法中K的由来,通常k是不大于20的整数。最后,选择k个最相似数据中出现次数最多的类别,作为新数据的分类。
KNN分类算法的分类预测过程十分简单并容易理解:对于一个需要预测的输入向量x,我们只需要在训练数据集中寻找k个与向量x最近的向量的集合,然后把x的类别预测为这k个样本中类别数最多的那一类。
KNN算法中只有一个超参数k,k值的确定对KNN算法的预测结果有着至关重要的影响。接下来,我们讨论一下k值大小对算法结果的影响以及一般情况下如何选择k值。
如果k值比较小,相当于我们在较小的领域内训练样本对实例进行预测。这时,算法的近似误差(Approximate Error)会比较小,因为只有与输入实例相近的训练样本才会对预测结果起作用。
但是,它也有明显的缺点:算法的估计误差比较大,预测结果会对近邻点十分敏感,也就是说,如果近邻点是噪声点的话,预测就会出错。因此,k值过小容易导致KNN算法的过拟合。
同理,如果k值选择较大的话,距离较远的训练样本也能够对实例预测结果产生影响。这时候,模型相对比较鲁棒,不会因为个别噪声点对最终预测结果产生影响。但是缺点也十分明显:算法的近邻误差会偏大,距离较远的点(与预测实例不相似)也会同样对预测结果产生影响,使得预测结果产生较大偏差,此时模型容易发生欠拟合。
因此,在实际工程实践中,我们一般采用交叉验证的方式选取k值。通过以上分析可知,一般k值选得比较小,我们会在较小范围内选取k值,同时把测试集上准确率最高的那个确定为最终的算法超参数k。
使用KNN进行水果分类
部分数据如下
预测结果和精确度如下
部分代码如下
from sklearn import datasets
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
import pandas as pd
#导入水果数据并查看数据特征
fruit = pd.read_csv('fruit_data.txt','\t')
# 获取属性
X = fruit.iloc[:,1:]
# 获取类别
Y = fruit.iloc[:,0].T
# 划分成测试集和训练集
fruit_train_X,fruit_test_X,fruit_train_y,fruit_test_y=train_test_split(X,Y,test_size=0.2, random_state=0)
#分类eighborsClassifier()
#对训练集进行训练
knn.fit(fruit_train_X, fruit_train_y)
#对测试集数据的水果类型进行预测
predict_result = knn.predict(fruit_test_X)
print('测试集大小:',fruit_test_X.shape)
print('真实结果:',fruit_test_y)
print('预it_test_y))
绘制KNN分类器图
分类结果如下 可以看到鸢尾花数据集大致分为三类
部分代码如下
import numpy as np
from sklearn import neighbors, datasets
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap# 建立KNN模型,使用前两个特征
iris = datasets.load_iris()
irisData = iris.data[:, :2] # Petal length、Petal width特征
irisTarget = iris.target
clf = neors.KNeighborsClassifier(5) # K=5
clf.fit(irisData, irisTarget)#绘制plot
ColorMp = ListedColormap(['#005500', '#00AA00', '#00FF00'])
X_min, X_max = irisData[:, 0].min(), irisData[:, 0].max()
Y_min
label = clf.predict(np.c_[X.ravel(), Y.ravel()])
label = label.reshape(X.shape)
#绘图并显示
plt.figure()
plt.pcolormesh(X,Y,label,cmap=ColorMp)
plt.show()
创作不易 觉得有帮助请点赞关注收藏~~~
【Python机器学习】KNN进行水果分类和分类器实战(附源码和数据集)相关推荐
- 径向基神经网络(RBFNN)的实现(Python,附源码及数据集)
文章目录 一.理论基础 1.径向基神经网络结构 2.前向传播过程 3.反向传播过程 4.建模步骤 二.径向基神经网络的实现 1.训练过程(RBFNN.py) 2.测试过程(test.py) 3.测试结 ...
- python画圣诞帽_使用Python给头像加上圣诞帽或圣诞老人小图标附源码
随着圣诞的到来,想给给自己的头像加上一顶圣诞帽.如果不是头像,就加一个圣诞老人陪伴. 用Python给头像加上圣诞帽,看了下大概也都是来自2017年大神的文章:https://zhuanlan.zhi ...
- python画圣诞老人_使用Python给头像加上圣诞帽或圣诞老人小图标附源码
随着圣诞的到来,想给给自己的头像加上一顶圣诞帽.如果不是头像,就加一个圣诞老人陪伴. 用Python给头像加上圣诞帽,看了下大概也都是来自2017年大神的文章:https://zhuanlan.zhi ...
- 【Python机器学习】决策树、逻辑回归、神经网络等模型对电信用户流失分类实战(附源码和数据集)
需要源码和数据集请点赞关注收藏后评论区留言私信~~~ 电信用户流失分类 该实例数据来自kaggle,它的每一条数据为一个用户的信息,共有21个有效字段,其中最后一个字段Churn标志该用户是否流失 1 ...
- 《机器学习实战》源码和数据集的下载
<机器学习实战>这本书对于我们了解机器学习原理和代码实现提供了很大的帮助,源码和数据集可在其英文版的官方网站进行下载: https://www.manning.com/books/ma ...
- Python基于民航业知识图谱的自动问答系统(附源码)
一.开发环境 Windows 10 x64 Python 3.7 Neo4j community 3.5.20 二.项目运行 1.确保安装所需依赖 pip install -r requirement ...
- php水果百科动态网站毕业设计-附源码060917
目 录 摘要 1 绪论 1.1 开发意义 1.2研究现状 1.3论文结构与章节安排 2水果百科动态网站系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 数据增加流程 2.2.2 数据修 ...
- 年赚百万游戏主播,玩转Python后:几行代码轻松“吃鸡” 附源码
大吉大利,准备吃鸡! 你是否玩儿了好几个月的吃鸡,依旧是落地成盒? 是否常常不得知自己如何被打.莫名其妙的挂了? 还没有吃过鸡/(ㄒoㄒ)/~~总是不明不白的就被别的玩家杀了 !!!∑(゚Д゚ノ)ノ能 ...
- python网络爬虫技术 江吉彬下载 pdf_精通Python网络爬虫:核心技术、框架与项目实战 附源码 中文pdf完整版[108MB]...
精通Python网络爬虫这是一本实战性的网络爬虫秘笈,不仅讲解了如何编写爬虫,而且还讲解了流行的网络爬虫的使用. 全书分为4个部分:第壹部分对网络爬虫做了概要性的介绍,主要介绍了网络爬虫的常识和所涉及 ...
最新文章
- 适配器模式:我真的不难
- win10显示隐藏文件_如何在Mac上显示隐藏文件?苹果mac显示隐藏文件夹方法
- 13 款 JavaScript 模板引擎
- 关于纯HTML格式写入word
- 机器学习——贝叶斯分类器
- 从入门到入土:Python爬虫学习|实例练手|爬取百度产品列表|Xpath定位标签爬取|代码注释详解
- windows 2003系列之搭建域环境
- python日期,时间函数
- 为什么不建议吃小绿叶_为什么看了那么多食谱,还是不知道给宝宝吃什么?
- 华为HCIE云计算培训笔记第一天
- 阿里云弹性计算首席架构师分享云上应用架构演进三大方向
- SQL 配置管理器找不到了
- 关于diskpart的命令问题记录
- dirver时区_时区问题
- html div 自动滚动到底部,javascript让DIV的滚动自动滚动到最底部-4种方法
- 【北大/上交/浙大/中科大/山大】公布复试分数线!【34所自划线】
- sqlite常用语句
- Asp.net Core 6.0 之动态修改Cshtml(发布篇)
- 显示技术介绍(1)_概述
- mysql当前读和一致性读_数据库 一致性读当前读
热门文章
- 第一位美国科学院华裔院士-王晓东的科研思路追踪
- iCloud7_Next Steps
- pytorch 解决图片文字识别, 输入图片的代码
- c语言 按字节异或,C语言位数算,按位异或.只知道按位异或原理 不知道这题怎么做...
- 光伏电站发电量上网电量售电量远程无线数据采集方案
- 江苏省C语言二级备考(5/20)
- Mac电脑安装及终端命令使用mysql
- 为 GPU 而来,焱融科技推出新一代全闪分布式文件存储产品
- 小米5 Android 8.0解bl,小米解BL锁超详细的图文教程
- 【21CSPJ普及组】网络连接(network)