kNN-k 近邻算法(K-Nearest Neighbors)

kNN-k 近邻算法(K-Nearest Neighbors)

kNN-k 近邻算法(K-Nearest Neighbors)

思想极度简单


应用数学知识少(近乎为零)


效果好


可以解释机器学习算法使用过程中的很多细节问题


更完整的刻画机器学习应用的流程


k - 近邻 (KNN) 算法步骤

计算已知类别数据集中的点与当前点之间的距离(KNN算法中使用的是欧式距离);


按照距离递增次序排序;


选取与当前点距离最小的 k 个点;


确定前 k 个点所在类别的出现频率;


返回前 k 个点所出现频率最高的类别作为当前点的预测分类


简单来说,KNN 的原理就是当预测一个新的值 x 的时候,根据它距离最近的 K 个点是什么类别来判断 x 属于哪个类别




KNN 算法优点

简单易用,相比其他算法,KNN 算是比较简洁明了的算法。


模型训练时间快,KNN 是一种非参的,惰性的算法模型。。


预测效果好。


对异常值不敏感


KNN 算法缺点

对内存要求较高,因为该算法存储了所有训练数据


预测阶段可能很慢


对不相关的功能和数据规模敏感。


当需要使用分类算法,且数据比较大的时候就可以尝试使用KNN算法进行分类了。


sklearn 实现



from sklearn.neighbors import KNeighborsClassifier

import numpy as np


data_x=[[3.393533211,2.3312733811],

        [3.110073483,1.7815396381],

        [1.343808831,3.368360954],

        [3.582294042,4.679179110],

        [2.280362439,2.866990263],

        [7.423436942,4.6965228751],

        [5.745051997,3.533989803],

        [9.172168622,2.5111010451],

        [7.792783481,3.424088941],

        [7.939820817,0.791637231]

        ]

data_y=[0,0,0,0,0,1,1,1,1,1]

x=np.array(data_x)

y=np.array(data_y)

knn=KNeighborsClassifier(n_neighbors=6)

knn.fit(x,y)

new_x=np.array([1.093607318,3.3657315141])

x_predict=new_x.reshape(1,-1)

knn.predict(x_predict)



  • 发表于 2020-10-07 19:47
  • 阅读 ( 459 )

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
admin
admin

7 篇文章

作家榜 »

  1. admin 7 文章
  2. superstar 0 文章