机器学习算法之1:k-NN 算法

k-NN算法基于距离判断样本相似性,通过多数投票原则进行分类。算法包括算距离、找邻居和做分类三个步骤。欧氏距离是常用的计算距离方式。Python中可以使用sklearn库实现k-NN算法,应用于葡萄酒分类等场景。
摘要由CSDN通过智能技术生成

k-NN 算法

k-NN 算法(k-Nearest Neighbor),也叫k 近邻算法。
学会k-NN 算法,只需要三步:

  1. 了解k-NN的算法思想
  2. 掌握背后的数学原理
  3. 代码实现

算法思想:多数表决

k-近邻算法,它的本质是通过距离判断两个样本是否相似,如果距离够近就认为他们足够相似属于同一类别。
当然只对比一个样本是不够的,误差会很大,我们需要找到离其最近的k个样本,并将这些样本称之为「近邻」(nearest neighbor)。对这k个近邻,查看它们的都属于何种类别(这些类别我们称作「标签」(labels))。
然后根据“少数服从多数,一点算一票”原则进行判断,数量最多的的标签类别就是新样本的标签类别。其中涉及到的原理是“越相近越相似”,这也是KNN的基本假设。

数学原理

可以看到k-近邻算法就是通过距离来解决分类问题。这里我们解决的二分类问题,整个算法结构如下:

算距离

给定测试对象????,计算它与训练集中每个对象的距离。
依据公式计算???? 与?1,?2,…,?j之间的相似度,得到???(????,?1) , ???(????,?2) , …, ??? (????,?j).

距离类模型中距离的确认:常用欧氏距离

k-NN模型的表示形式是整个数据集。除了对整个数据集进行存储之外,k-NN没有其他模型。因此,k-NN不具有显式的学习过程,在做「分类」时,对新的实例,根据其k 个最近邻的训练实例的类别,通过多数表决等方式进行预测。k-近邻法实际上利用了训练数据集对特征向量空间进行划分,并作为其分类的"模型" 。
该算法的「距离」在二维坐标轴就表示两点之间的距离,计算距离的公式有很多,我们常用欧拉公式,即“欧氏距离”。
在n维空间中,有两个点A 和B,它们的坐标分别为:
?(?&1, ?(1, ?21,……?31), ?(?&6, ?(6, ?26,……?36)
则A和B两点之间的欧氏距离的基本计算公式如下:
在这里插入图片描述
在机器学习中,坐标轴上的值?&, ?(,…… ?3 正是我们样本数据上的n个特征。

找邻居

圈定距离最近的训练对象,作为测试对象的近邻。
将???(????,?1) , ???(????,?2) , …, ??? (????,?j)排序,若是超过相似度阈值?,则放入邻居集合??.

做分类

根据这k个近邻归属的主要类别,来对测试对象进行分类。
自邻居集合??中取出前k名,查看它们的标签,对这k个点的标签求和,以多数决,就得到了????可能的类别。

代码实现

下面,以葡萄酒分类预测为例,用python代码及其机器学习库sklearn自带的K-NN算法模块实现:

#导包
import numpy as np
import pandas as pd
#为方便验证,使用字典dict格式构建数据集,然后转为DataFrame查看
rowdata = {
   '颜色深度':
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值