python实现k近邻算法

编程入门 行业动态 更新时间:2024-10-27 17:13:38

很简单的一个分类算法:

根据不同特征值之间的距离方法进行分类

优点:输入高,对异常值不敏感,无数据输入假定

缺点:计算复杂度高,空间复杂度高

适用数据范围:数值型 和 标称型

 

代码实现:

"""K近邻算法"""
"""伪代码:
(1)计算已知数据集的点与当前点之间的欧式距离
(2)按照距离递增顺序进行排序
(3)选取与当前距离最小的K个点
(4)确定前K个点所属类别的出现频率
(5)返回前k个点出现频率最高的类别作为当前点的预测分类
"""
import numpy as np
import operator
"""创建数据集"""
def creatDataset():group = np.array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]])label = ['A','A','B','B']return group,label
def classfy0(inX,dataset,labels,k):"""input:inX——当前点dataset——数据集label——标签k——前K个点"""diffMat = np.tile(inX,(len(dataset),1)) - datasetsqDiffMat = diffMat ** 2sumSqDiffMat = sqDiffMat.sum(axis=1)distance = sumSqDiffMat ** 0.5  #数据集的点与当前点之间的欧式距离sortDistance = distance.argsort()#按照距离递增顺序进行从小到大排序(输出为排序的索引)classcount = {}for i in range(k):votellabel = labels[sortDistance[i]]classcount[votellabel] = classcount.get(votellabel,0) + 1sortclasscount = sorted(classcount.items(),key=operator.itemgetter(1),reverse=True)return sortclasscount[0][0]if __name__ == '__main__':dataset,labels = creatDataset()res = classfy0([0,0],dataset,labels,3)print(res)输出结果:BProcess finished with exit code 0

 

更多推荐

近邻,算法,python

本文发布于:2023-05-27 16:58:38,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/300592.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:近邻   算法   python

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!