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

2017-11-02  本文已影响0人  coder_flag

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讲解

上一篇 下一篇

猜你喜欢

热点阅读