K_NN算法


一:什么是机器学习


机器学习的方法是基于数据产生的 “模型”(model)的算法,也称 “学习算法”(learning algorithm)。包括有监督学习(supervised learning)、无监督学习(unsupervised learning)、半监督学习(semi-supervised learning)、强化学习(reinforcement learning)。
1.有监督学习
指对数据的若干特征与若干标签(类型)之间的关联性进行建模的过程;只要模型被确定,就可以应
用到新的未知数据上。这类学习过程可以进一步分为「分类」(classification)任务和「回归」
(regression)任务。在分类任务中,标签都是离散值;而在回归任务中,标签都是连续值。

2.无监督学习
指对不带任何标签的数据特征进行建模,通常被看成是一种 “让数据自己介绍自己” 的过程。这类
模型包括「聚类」(clustering)任务和「降维」(dimensionality reduction)任务。聚类算法可
以讲数据分成不同的组别,而降维算法追求用更简洁的方式表现数据。

3.半监督学习
另外,还有一种半监督学习(semi-supervised learning)方法, 介于有监督学习和无监督学习
之间。通常可以在数据不完整时使用。

4.强化学习
强化学习不同于监督学习,它将学习看作是试探评价过程,以 “试错” 的方式进行学习,并与环境进
行交互已获得奖惩指导行为,以其作为评价。此时系统靠自身的状态和动作进行学习,从而改进行动
方案以适应环境。


二:算法


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

k-近邻算法就是通过距离来解决分类问题。这里我们解决的二分类问题,整个算法结构如下:
1.算距离
给定测试对象 ????,计算它与训练集中每个对象的距离。依据公式计算 ???? 与 ? 1 ,?2 ,……? *j之间的相似度,得到 ??? (????,? 1) , ??? (????,?2) , ???9 ????,? 3)。
2.找邻居
圈定距离最近的k个训练对象,作为测试对象的近邻。将??? ????,? & , ??? ????,? ( , ??? ????,? * 排序,若是超过相似度阈值?,则放入邻居集合??.
3. 做分类
根据这k个近邻归属的主要类别,来对测试对象进行分类。自邻居集合??中取出前k名,查看它们的标签,对这k个点的标签求和,以多数决,得到????可能类别。

距离类模型中距离的确认
k-NN算法基本思想我们已经知道了,其模型的表示形式是整个数据集。除了对整个数据集进行存储之外,k-NN没有其他模型。因此,k-NN不具有显式的学习过程,在做「分类」时,对新的实例,根据其 k 个最近邻的训练实例的类别,通过多数表决等方式进行预测。k-近邻法实际上利用了训练数据集对特征向量空间进行划分,并作为其分类的 “模型” 。该算法的「距离」在二维坐标轴就表示两点之间的距离,计算距离的公式有很多,我们常用欧拉公式,即“欧氏距离”。回忆一下,一个平面直角坐标系上,如何计算两点之间的距离?一个立体直角坐标系上,又如何计算两点之间的距离?
在这里插入图片描述
这就是 k-NN 算法的数学原理,似不似也很简单?只要计算出样本点与样本集中的每个样本的坐标距离,然后排序筛选出距离最短的 k 个点,统计这 k个点所属类别,数量占多的就是新样本所属的酒类。
根据欧拉公式,我们可以用很基础的 Python 代码实现~


三:Python代码实现(葡萄酒例子)


1.例子代码实现
在这里插入图片描述
运行上图代码可得到如图:
在这里插入图片描述

在这里插入图片描述
2.sklearn实现
在这里插入图片描述

3.数据集
在这里插入图片描述
在这里插入图片描述
4.学习曲线
在这里插入图片描述
今天的介绍就到这里,希望对大家有多帮助!!!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值