深入了解KNN算法原理

  1. 什么是KNN算法?
    答:所谓的KNN算法就是:每个样本都可以用它最接近的k个邻居来代表。

例如:我们要判断绿色的点属于哪一类的时候
当k=3的时候,距离它最近的三个点里面有红色点1个,蓝色点2个,所以他属于蓝色点
当k=5的时候,距离它最近的五个点里面有红色点3个,蓝色点2个,所以他属于红色点

在这里插入图片描述

  1. 但是我们用少数服从多数的投票方法真的合理吗?
    答:不合理,我们要根据情况来进行选择
    (1)在进行分类预测时,一般采用多数表决(即:每一个点的权重都为1)
    (2)在进行回归预测的时候,一般采用加权平均值法

  2. 怎么判断什么时候权重值为1,什么时候不为1,以及权重的计算?
    答:我们知道在KNN算法中,KNeighborsClassifier有一个参数叫做weights
    weights=‘uniform’的时候,说明每个样本的权重是一样的
    weights=‘distance’的时候,则需要计算每一个样本所占的权重

我们不妨取一组二维的数据,A,B,C是一类,D,E是一类
在这里插入图片描述
我们知道,二维的时候,我们所谓的距离是欧氏距离,但是数据是n维的时候,关于距离的计算用的就是明可夫斯基距离:
明可夫斯基距离公式:
在这里插入图片描述
这个时候就引入了一个新的超参数p,当weights=‘distance’的时候,才会有超参数,而超参数p对我们的测试结果是有影响的,所以我们需要寻找到最优的超参数p

  1. 参数k和超参数p的查找
    我们通过网格搜索的方式来实现简单的找出k和p
from datetime import datetime

from sklearn.model_selection import GridSearchCV
from sklearn import datasets
from sklearn.model_selection 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值