Python实现KNN算法


前言

KNN算法是最简单的分类算法之一,且KNN算法是有监督学习的算法

一、KNN是什么?

1、KNN(全称K Nearest Neighbors)算法,也叫K-近邻算法,通俗理解就是找K个最近的“邻居”,也就是如果一个样本在特征空间中的k个最相似的样本中的大多数属于某一个类别,则该样本也属于这个类别。

2、工作原理:给一个已知标签类别的训练数据集,输入没有标签的新数据后,在训练集中找到与新数据最相近的k个实例,若这k个实例多数属于某个类别,那么这个新数据就属于某个类别。

举例:用K-近邻算法分类未知电影属于什么类型影片

图一

上述1-9号电影都属于已知标签类别的训练集,从而判断10号电影类别。那么度量10号电影与其他电影的相关性,就要用到距离度量,换句话说就是在二维平面中计算两点之间的距离,但若是多维空间,就可以用到欧式距离,计算公式:

由图一可知,10号电影和8号电影距离最近,所以可以判定为10号电影为喜剧片,但是注意的是K-近邻算法中这个K的意义,若K=4,就需要将离10号电影距离按照升序排序,再从前四个电影中看电影属于那种类别所占比列最高,就说10号电影属于什么类别。

二、KNN算法流程

1、解决问题:分类问题(标签值是离散的),回归问题(标签值是连续的

分类问题结果对就是对,错就是错:回归问题是对真实值的逼近预测

流程:

注:两者本质区别就是决策的方式不同,分类是选择多数表决,回归则是选择平均法

2、K值的大小

K过小可以理解为,你在更小的范围内进行判别,比如刚才判别电影类型,若K=1,那么只能选择一个已知标签电影作为参考,那么未知电影被判别的类型误差就会更大,容易发生过拟合。同理K值过大,样本变得简单,会欠拟合

因此要找到一个合适的K值,对K超参数(就是人为设置)调优,可通过交叉验证网格搜索

1、KNN算法API使用

1、KNN分类API

2、KNN回归API

结果

总结

未完待续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值