理论实战K邻近法

【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]   #返回最高投票的类别  
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值