KNN算法总结

KNN算法即在一个训练数据集中来了一个新的输入实例,在训练集中找到与这个新的实例最近的K个邻居,在k的邻居中,有多个实例属于已知的类,那么把这个已知的类作为这个新实例所属的类别。也就是用投票法(少数服从多数)。由于用投票法,所以k值一般取奇数。

但是K值得大小选取有要求:
首先,如果k值选取太小,就相当于以待分类的实例为中心,在较小的邻域内,以该邻域内的邻居的类别来为新实例分类,那么就意味着我们的整体模型会比较复杂,容易发生过拟合,也就是说如果有噪声,则会影响分类效果。如果取k=1这种极端情况,来解释模型的复杂性以及过拟合现象。
在这里插入图片描述
如图所示,K值太小,受噪声的影响较大,如果把K值取大,那么受噪声影响就比较小

但是也不能去太大,如果太大,模型就会变得简单,就会根据整体哪个类别多新来的数据就属于哪个类别。

因此一般通过交叉验证法来选取最优值,即把数据集分成均等份,每一组数据集当一次预测值。剩下的几组当训练值来得到最优K值。
通常采用叉验证法来选取最优的k值就是比较不同k值时的交叉验证平均误差率,选择误差率最小的那个大值。例如选择k= 1,2.3.对每个k=i做若干次交叉验证,计算出平均误差,然后比较、选出最小的那个
KNN算法总结:
1.思想:给定一个训练数据集,计算每个训练集与新的实例之间的距离,对这些距离从小到大排序,取前K个距离,K个训练实例多的所属类即为新的待预测的新的实例类别
2.一般距离有多种形式,比如曼哈顿距离,欧氏距离,等等。这里选取欧氏距离,也就是我们常用的距离,即两点间的距离。
3…在进行距离计算时,为了保证实例的每个特征同等重要,因此,需要进行归一化(又称标准化)处理,一般采用最小最大归一化。

neighbors-based (基于邻居的) 监督学习分为两种: classification (分类)针对的是具有离散标签的数据,regression (回归)针对的是具有连续标签的数据。
三要素:K如何选择、距离如何度量、分类决策的规则

最近邻分类
sklearn.neighbors.KNeighborsClassifier(n_neighbors=5, weights=‘uniform’, algorithm=‘auto’, leaf_size=30, p=2, metric=‘minkowski’, metric_params=None, n_jobs=1, **kwargs)
参数

n_neighbors: k值
algorithm:指定计算最近邻的算法
‘auto’:自动决定最合适的
‘ball_tree’:BallTree算法
‘kd_tree’:KDTree算法
‘brute’:暴力搜索法
leaf_size:int,指定BallTree/KDTree叶节点规模,影响树的构建和查询速度
metric:指定距离度量,参考文档距离表示
p:指定在minkowski距离上的指数p,p=1 对应曼哈顿距离,p=2 对应欧式距离

归一化处理:最值归一化
把所有的数据映射到0~1之间
在这里插入图片描述
适用于有明显的边界,受outlier极端值影响较大,比如收入的分布

归一化方式二:均值-方差归一化
把所有数据归一到均值为0方差为1的分布中
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值