重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
简介
公司主营业务:网站设计、网站制作、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联推出泽库免费做网站回馈大家。这里通过python的绘图工具Matplotlib包可视化实现机器学习中的KNN算法。
需要提前安装python的Numpy和Matplotlib包。
KNN–最近邻分类算法,算法逻辑比较简单,思路如下:
1.设一待分类数据iData,先计算其到已标记数据集中每个数据的距离,例如欧拉距离sqrt((x1-x2)^2+(y1-y2)^2);
2.然后根据离iData最近的k个数据的分类,出现次数最多的类别定为iData的分类。
KNN——最近邻算法python代码
代码实现:
import numpy as np import matplotlib as mpl import matplotlib.pyplot as plt def KNNClassify(labelData,predData,k): #数据集包含分类属性 #labelData 是已经标记分类的数据集 #predData 未分类的待预测数据集 labShape = labelData.shape for i in range(predData.shape[0]): #以predData的每行数据进行遍历 iData = predData[i] iDset = np.tile(iData,(labShape[0],1)) #将iData重复,扩展成与labelData同形的矩阵 #这里用欧拉距离sqrt((x1-x2)^2+(y1-y2)^2) diff = iDset[...,:-1] - labelData[...,:-1] diff = diff**2 distance = np.sum(diff,axis=1) distance = distance ** 0.5 #开根号 sortedIND = np.argsort(distance) #排序,以序号返回。 classCount = { } for j in range(k): #计算距离最近的前k个标记数据的类别 voteLabel = labelData[sortedIND[j],-1] classCount[voteLabel] = classCount.get(voteLabel,0)+1 maxcls = max(classCount,key=classCount.get) #类别最多的,返回键名(类别名) predData[i][...,-1] = maxcls return predData