python 机器学习 K-近邻算法

  本人想边写文章,边学习,用的是 网上最火的《机器学习实战》machine learning in action 来做一次实践。

希望在过程中理顺思路之余,也有分享自己的一些理解,学习。加油。

 source code下载  https://www.manning.com/books/machine-learning-in-action
网上也有在线阅读 机器学习实战

 

K-近邻算法的具体思想如下:
(1)计算已知类别数据集中的点与当前点之间的距离
(2)按照距离递增次序排序
(3)选取与当前点距离最小的k个点
(4)确定前k个点所在类别的出现频率
(5)返回前k个点中出现频率最高的类别作为当前点的预测分类
优点:精度高、对异常值不敏感、无数据输入假定。缺点:计算复杂度高、空间复杂度高。 ?适用数据范围:数值型和标称型。

***【 在样本中 最 邻近的 K 个数据中,频数最多最似的 tag 为 新样 的分类。】

难点 数据初收集,数据比较问题,样本特定tag计频排序

学习性,准确性,
【缺点,要数据有监督有分类,而且数据的生成不易】
算法实现    关键代码
sqDiffMat = diffMat ** 2
sqDistances = sqDiffMat.sum(axis=1)
distances = sqDistances ** 0.5
sortedDistances = distances.argsort() //求距离 并排序
for i in range(k):
numOflabel = labels[sortedDistances[i]]
classCount[numOflabel] = classCount.get(numOflabel, 0) + 1 计算分类频率
sortedClassCount =sorted(classCount.items(), key=lambda asd: asd[1], reverse=True) 排序

 

posted @ 2017-03-13 14:56  半块饼干  阅读(275)  评论(0)    收藏  举报