分类算法学习-KNN

        KNN算法的核心思想就像是一句古语:近朱者赤近墨者黑。核心就是根据样本临近的其他样本来判断它属于哪一类,判断标准就是距离,它跟哪一类隔得近(玩的好,关系好)他就归属于哪一类。所以在KNN算法中主要的三个步骤就是:算距离,找邻居,分类。KNN与K-means有些相像,但后者是无监督学习,而KNN属于监督学习。

        在计算距离时常用的距离公式有:欧式距离和曼哈顿距离

注意K代表的含义:类别数,所以K的取值非常重要,K太小时会造成过拟合:假如就只有2个类别,那么样本之间都没有什么区别,预测结果的误差也很小,会把噪声也放进去,所以它的泛化能力就很小。反之K值过大会造成欠拟合。K的取值一般不超过20。

算法一般步骤:

1)计算测试数据与各个训练数据之间的距离;

2)按照距离的递增关系进行排序;

3)选取距离最小的K个点;

4)确定前K个点所在类别的出现频率;

5)返回前K个点中出现频率最高的类别作为测试数据的预测分类。

         从KNN算法的步骤看,当数据特征数量特别多时,这种“蛮力法”一般的算法会显得十分笨拙,就是在重复计算距离,此时选择采用KD树来解决这一问题:KD树主要的三个步骤为:建树、搜索最邻近,预测

        KD树具体构建可查看这一篇笔记:https://www.cnblogs.com/pinard/p/6061661.html

        在python环境下使用KNN算法时,用import导入Knn算法模型 。fit训练数据,socre进行评分,predict进行预测。

from sklearn.neighbors import KNeighborsClassifier #k邻近算法模型
#实例k邻近模型,指定k值=3
knn = KNeighborsClassifier(n_neighbors=3)

#训练数据
knn.fit(feature,target)

#模型评分
knn.score(feature,target)

#预测
print(knn.predict(np.array([[176,71,38]])))

     

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值