您的位置:首页 > 编程语言 > Python开发

k近邻算法

2016-06-15 16:02 399 查看
import numpy as np
import operator
def create_data():
"""创建数据样本"""
group=np.array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1],[0,0.2]])
#样本点
labels=['A','A','B','B','B']
#对应的样本类别
return group,labels
def k_0(inx,group,labels,k):
"""k近邻算法,inx要判别的数据"""
data_size=group.shape[0]
#数据大小,即几个样本
distances=((np.tile(inx,(data_size,1))-group)**2).sum(axis=1)**0.5
#判别点与样本中每点的距离。tile字面意思是铺开,这里所表现的功能是把inx重复data_size行1列。sum(array,axis),axis是方向的选择,数列竖着加还是横着加。
sorted_distances=distances.argsort()
#把距离从小到大排序
count={}
#建立一个字典
for i in range(k):

vote_label=labels[sorted_distances[i]]
#前k个距离最短的类别
count[vote_label]=count.get(vote_label,0)+1
#把结果插入字典,格式是 ‘类别’:‘计数’
sorted_count=sorted(count.iteritems(),key=operator.itemgetter(1),reverse=True)
#将字典排序
return sorted_count[0][0]
#取第一个结果


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息