机器学习实战笔记(二):K邻近算法

<span style="font-size:12px;">from numpy import *
import operator

def classify0(inX,dataSet,labels,k):   #inX:用于分类的输入向量;dataSet:输入的训练样本集;labels:标签向量(labels的数目与dataSet行数相同);k:选择的最近邻居的数目 
	dataSetSize=dataSet.shape[0]                   #dataSet.shape[0]:读取dataSet矩阵第一维度的长度
	diffMat=tile(inX,(dataSetSize,1))-dataSet     #tile():重复某个数组,这里(dataSetSize,1),是一个元组让inX这个数组重复dataSetSize个变为一个矩阵  分别减去dataSet的
	sqDiffMat=diffMat**2
	sqDistances=sqDiffMat.sum(axis=1)                                   #sum(axis=1)将矩阵的每一行向量相加
	distances=sqDistances**0.5                                             #计算距离
	sortedDistIndicies=distances.argsort()                                  #argsort()返回数组中从小到大的索引值,确定前k个距离的元素所在的分类
	classCount={}
	for i in range(k):
		voteIlabel=labels[sortedDistIndicies[i]]            #输入k总是正整数,sorted()产生一个新的列表,存放前k个距离元素的分类 放到vootellabel中
		classCount[voteIlabel]=classCount.get(voteIlabel,0)+1#在classCount字典中存放这个分类数组,再查看字典中是否有相同的分类,没有返回0,有就返回那个类+1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值