您的位置:首页 > 其它

《机器学习实战》学习笔记一:k-近邻算法(kNN)

2018-01-18 21:55 447 查看
k-近邻算法(以下简称kNN)是分类算法中比较简单的一种,KNN算法的一般流程为:(1)收集数据,如从文件中导入数据(2)准备数据,将数据转化为适合计算的格式,如矩阵的形式(3)分析数据(4)测试数据,计算分类的错误率(5)应用算法,给定输入,得到相应的输出,指出改数据属于哪一种分类。

kNN算法的过程如下:

(1)计算数据集中各点与当前点(给定数据)之间的距离;

(2)按照距离的递增次序排序;

(3)选取与当前点距离最小的k个点

(4)统计前k个点所在的类别出现的频率

(5)返回频率最高的点所在的类别,此类别为当前点的预测分类

具体实现代码如下:

def classify0(inX, dataSet, labels, k):
dataSetSize = dataSet.shape[0] #返回矩阵的行数
diffMat = tile(inX, (dataSetSize,1)) - dataSet
sqDiffMat = diffMat**2
sqDistances = sqDiffMat.sum(axis=1)#计算两点间的距离
sortedDistIndicies = distances.argsort()
#按照距离从小到大的顺序对下标排序
classCount={}
for i in range(k):
voteIlabel = labels[sortedDistIndicies[i]]
classCount[voteIlabel] = classCount.get(voteIlabel,0) + 1
sortedClassCount = sorted(classCount.items(), key=operator.itemgetter(1), reverse=True)
#统计分类出现的频率,并且按照从高到低排序
# iteritems()是python2.x中的,在python3.x废除了在这里用items
return sortedClassCount[0][0]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  机器学习