机器学习实战学习笔记(1)

KNN算法学习笔记


KNN算法:

1.计算已知类别数据集中的的点与当前点之间的距离

2.按照距离递增次序排序

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

4.确定与前k个点所在类别的出现频率

5.返回前k个点出现的频率最高的类别作为当前点的预测分类



算法源码:

import numpy

from numpy import *

import operator

def classify0(inX,dataSet,labels,k):

dataSetSize=dataSet.shape[0]        #numpy shape()函数

diffMat=tile(inX,(dataSetSize,1))-dataSet            #numpy tile()函数

sqDiffMat =diffMat**2

sqDistances=sqDiffMat.sum(axis=1)            #sum(axis) axis=0表示按列相加,axis=1表示按照行的方向

distances=sqDistances**0.5

sortedDistIndicies=distances.argsort()           #sortedDistIndicies=[2 3 1 0]     #numpy argsort()函数

classCount={ }

for i in range(k):

voteIlabel=labels[sortedDistIndicies[i]]    # B  B  A

#下面统计出现的次数

classCount[voteIlabel]=classCount.get(voteIlabel,0)+1          #{'B': 1}  {'B': 2}  {'B': 2, 'A': 1}

#此处对上面统计好的次数进行排序

sortedClassCount=sorted(classCount.items( ), key = operator.itemgetter(1),reverse=True)     #[('B', 2), ('A', 1)]

return sortedClassCount[0][0]



#以下为实验数据

b=['A','A','B','B']

a=array([[1,1.1],[1,1],[0,0],[0,0.1]])

asd=classify0([0,0],a,b,3)



KNN算法实例(1)--约会网站数据:

        apache cn讲解

            (1)numpy 切片与索引

            (2)Matplolib入门

KNN算法实例(2)--数字图片识别系统:

         apache cn讲解

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容