理论实战K邻近法

来源:互联网 发布:js跨域上传文件 编辑:程序博客网 时间:2024/04/19 18:00

【Supervised learing(有监督学习):classification分类,regression回归。分类的任务是将一个样本通过距离计算的方法欧式距离等方法划归到某一个已知类别,每个样本的类别信息在训练时要给定,人脸识别检测,动作行为识别,目标检测都属于分类。回归的任务是预测一个数值,在Ng课程中是预测房价。
Unsupervised learning(无监督学习)是:聚类(Clustering)和密度估计(density estimation),聚类是把一组数据聚成若干组,没有类别信息,密度估计是估计一堆的统计参数信息来描述数据,eg:深度学习的RBM。

第一单元:K近邻法(K Nearest Neighbors-KNN)
K-NN是有监督学习,原理:假设我们有一堆数据,分好累表示每个样本都一个对于的已知类标签,当来一个测试样本要表示我们的判断它的类别是,就分别计算到每个样本的距离,让后选取测试样本最近的前K个样本标签累计投票,得票数最多的那个标签样本为测试样本的标签。

[python] view plain copy 01.from numpy import *  02.import operator  03.from os import listdir  04.  05.  06.def classify0(inX, dataSet, labels, k):  07.    dataSetSize = dataSet.shape[0]    #获取一条样本大小  08.    diffMat = tile(inX, (dataSetSize,1)) - dataSet  #计算距离  09.    sqDiffMat = diffMat**2    #计算距离  10.    sqDistances = sqDiffMat.sum(axis=1)   #计算距离  11.    distances = sqDistances**0.5   #计算距离  12.    sortedDistIndicies = distances.argsort()  #距离排序  13.    classCount={}            14.    for i in range(k):  15.        voteIlabel = labels[sortedDistIndicies[i]]    #前K个距离最近的投票统计  16.        classCount[voteIlabel] = classCount.get(voteIlabel,0) + 1  #前K个距离最近的投票统计  17.    sortedClassCount = sorted(classCount.iteritems(), key=operator.itemgetter(1), reverse=True)  #对投票统计进行排序  18.    return sortedClassCount[0][0]   #返回最高投票的类别  
0 0
原创粉丝点击