【机器学习】k近邻算法-01
k临近算法(解决分类问题):
已知数据集,以及该数据对应类型
给出一个数据x,在已知数据集中选择最接近x的k条数据,根据这k条数据的类型判断x的类型
具体实现:
from numpy import * import operator def createDataSet(): group = array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]]) #已知数据集 labels = ['A','A','B','B'] #已知数据集对应的类型 return group,labels def classify0(inX,dataSet,lables,k): dataSetSize=dataSet.shape[0] #dataset是4*2的二维数组,shape[0]=4,shape[1]=2 diffMat=tile(inX,(dataSetSize,1))-dataSet #tile(inX,(dataSetSize,1))=[inX,inX,inX,inX],1代表每行inX重复一次 sqDiffMat=diffMat**2 #数组中每个值都**2 sqDistances=sqDiffMat.sum(axis=1) #sum(axis=?)第?个维度的相加,可理解为第?层[]里的元素相加 distances=sqDistances**0.5 #数组中每个值都**0.5 sortedDistIndicies=distances.argsort() #argsort()从小到大返回索引 classCount={} #花括号{}:代表dict字典数据类型 for i in range(k): voteIlabel=labels[sortedDistIndicies[i]] #前i小的类型 classCount[voteIlabel]=classCount.get(voteIlabel,0)+1 #dict.get(key, default=None) key找不到返回default sortedClassCount=sorted(classCount.items(),key=operator.itemgetter(1),reverse=True) #按字典第2个值排序,True表示从大到小排序 return sortedClassCount[0][0] #{(B,2),(A,1)} [0][0]代表B group,labels=createDataSet() print(classify0([0,0],group,labels,3))
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix