python可视化实现KNN算法-创新互联

简介

公司主营业务:网站设计、网站制作、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联推出泽库免费做网站回馈大家。

这里通过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

当前标题:python可视化实现KNN算法-创新互联
新闻来源:http://myzitong.com/article/diegog.html