机器学习(2)--邻近算法(KNN)

KNN(k-Nearest Neighbor)是一种基于监督学习的简单分类技术。算法通过计算预测数据与训练集中所有点的距离,选取最近的k个邻居来决定预测数据的类别。虽然KNN算法易懂且实现直观,但其主要缺点在于计算量大,特别是在预测阶段。本文以鸢尾花数据集为例,阐述KNN的工作原理,并介绍如何划分训练集和测试集以评估模型的准确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

KNN(k-NearestNeighbor)是监督学习的分类技术中最简单的方法之一,K指k个最近的邻居的意思,

简单的说:就是物以类聚,当有一条预测数据要看他属于哪个类别时,在训练数据集中,找出K个最近的点,看这k个最近的邻居都是什么类别,最终确定这条预测数据归属什么类别

优点:思想简单,算法简单,易于理解,没有像别的算法那些需要运用矩阵、概率,核心就是算距离

缺点:计算量大,可以理解为平时不努力,临阵磨枪,

别的机器学习算法,如神经网络,是对训练数据进行计算后,得到一个模型,当要预测数据时只要将预测数据套入模型计算一下就可以得到结果,虽然在这个计算模型过程的计算量还是非常大(平时努力学习),但预测时还是非常快的,

可参考 机器学习(1)--神经网络初探

而KNN基本没有训练这一说,只有在预测某条数据时,计算与所有训练数据的点的距离,所以说平时不努力,临阵磨枪,

本例使用数据集简介:以鸢尾花的特征作为数据,共有数据集包含150个数据集,

分为3类setosa(山鸢尾), versicolor(变色鸢尾), virginica(维吉尼亚鸢尾)

每类50个数据,每条数据包含4个属性数据 和 一个类别数据.

本例程序流程简述:随机抽取一定比例(预设70%)做为训练集,剩下的做为测试集,最终统计出测试的正确率

#-*- coding:utf-8 -*-  
data='''5.1,3.5,1.4,0.2,Iris-setosa
        4.9,3.0,1.4,0.2,Iris-setosa
        4.7,3.2,1.3,0.2,Iris-setosa
        4.6,3.1,1.5,0.2,Iris-setosa
        5.0,3.6,1.4,0.2,Iris-setosa
        5.4,3.9,1.7,0.4,Iris-setosa
        4.6,3.4,1.4,0.3,Iris-setosa
        5.0,3.4,1.5,0.2,Iris-setosa
        4.4,2.9,1.4,0.2,Iris-setosa
        4.9,3.1,1.5,0.1,Iris-setosa
        5.4,3.7,1.5,0.2,Iris-setosa
        4.8,3.4,1.6,0.2,Iris-setosa
        4.8,3.0,1.4,0.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值