码迷,mamicode.com
首页 > 编程语言 > 详细

关于今天学习的第一个算法——k-近邻算法

时间:2017-07-11 19:14:13      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:sorted   key   size   style   eve   添加   标签   iter   shape   

Def classify0(inX,data_set,labels,k):

Data_set_size=data_set.shape[0]  

//.shape[0]表示获取data_set有多少行,.shape[1]即获取列数

//另外注意shape后用中括号

Diff_mat=tile(inX,(data_size,1))-data_size

//tile可以把一个数组进行扩展,上面的代码即把inX里的数组复制data_size个,反正不好表述,可以自行百度。使用这个就省得去用for循环了。

Sq_diff_mat=dif_mat**2

Sq_distances=sq_diff_mat.sum(axis=1)

//axis=1即表示把每一行里的元素相加

//axis=0即表示把每一列里的元素相加(默认)

Distance=sq_distance**0.5

Sorted_dist_indicies=distance.argsort()

//对距离排序从小到大排序,但把序号存放在Sorted_dist_indicies

Class_count={}

//建立一个字典,存放k个预测标签的数量

For i in range(k):

Vote_label=labels[sorted_dist_indicies[i]]

Class_count[vote_label]=class_count.get(vote_label,0)+1

//.get方法即返回vote_label 这个keyvalue0是指如果字典里没有这个key,就添加这个key并赋值为0.

Sorted_class_count=sorted(class_count.items(),key=operator.itemgetter(1),reverse=True)

//本人使用的是python3,因此这里用的items,如果是python2,则要用.iteritems(),key=operator.itemgetter(1),表示对value进行排序,reverse=True表示降序排列,另外上面这段代码返回的是一个元素为元组(tuple)的列表(list)

Return Sorted_class_count[0][0]

//返回预测的标签

 

 

 

 

关于今天学习的第一个算法——k-近邻算法

标签:sorted   key   size   style   eve   添加   标签   iter   shape   

原文地址:http://www.cnblogs.com/oceantang/p/7151845.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!