黑马程序员技术交流社区
标题: 【上海校区】k-近邻算法的总结 [打印本页]
作者: 梦缠绕的时候 时间: 2018-8-13 09:17
标题: 【上海校区】k-近邻算法的总结
该函数的功能是使用k近邻算法将每组数据划分到某个类中,其伪代码如下:
对未知类别属性的数据集中的每个点依次执行以下操作:
(1)计算已知类别数据集中的点与当前点之间的距离;
(2)按照距离递增次序排序;
(3)选取与当前点距离最小的k个点;
(4)确定前k个点所在类别的出现频率;
(5)返回前k个点出现频率最高的类别作为当前点的预测分类。
Python函数classi fy0 ()如程序清单2-1所示。
def classify0(inX,dataSet,labels,k):
'''
inX:用于分类的输入向量(带分类的向量)
labels:训练集对应的标签向量
K:最近邻居数量
'''
dataSetSize = dataSet.shape[0]#数据集数据的函数
print(tile(inX,(dataSetSize,1)))
diffMat = tile(inX,(dataSetSize,1)) - dataSet
sqDiffMat = diffMat**2
sqDistances=sqDiffMat.sum(axis=1)
distances = sqDistances**(1/2)
sortedDistIndicies = distances.argsort()
classCount={}
for i in range(k):
voteIlabel = labels[sortedDistIndicies]
classCount[voteIlabel] = classCount.get(voteIlabel,0)+1
sortedClassCount = sorted(classCount.items(),key=operator.itemgetter(1),reverse=True)
return sortedClassCount[0][0]
小结:
k-近邻算法是分类数据最简单最有效的算法,本章通过两个例子讲述了如何使用k近邻算法构造分类器。k-近邻算法是基于实例的学习,使用算法时我们必须有接近实际数据的训练样本数据。k-近邻算法必须保存全部数据集,如果训练数据集的很大,必须使用大量的存储空间。此外,由于必须对数据集中的每个数据计算距离值,实际使用时可能非常耗时。
k-近邻算法的另一个缺陷是它无法给出任何数据的基础结构信息,因此我们也无法知晓平均实例样本和典型实例样本具有什么特征。
作者: 不二晨 时间: 2018-8-16 17:00
奈斯
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |