机器学习手记[6]---KNN算法
来源:互联网 发布:c语言中文网官网 编辑:程序博客网 时间:2024/06/15 16:57
KNN算法,是监督学习,
已知一组训练数据,知道多个特征对应值和所属类别,
然后添加测试数据,计算测试样本在多特征空间上到各类别训练数据的欧式距离,
距离那个类别训练数据集的距离小,就属于那个类别。
需要指出这个对于训练数据集的选择很重要,如果某类样本很多,另一类样本较少,这会对分类结果有影响。
另外KNN算法需要计算到每个训练数据的欧式距离然后叠加,计算量较大
# -*- coding: utf-8 -*-from numpy import *import operator#创建训练数据集,特征数组和对应类别def createDataSet(): point_set=array([[1.0,1.1],[1.0,1.0],[0,0],[0,0]]) label_set=array(['A','A','B','B']) return point_set,label_set#根据创建数据计算欧氏距离,进行分类def knn_classify(check_point, point_set, label_set, m_top_pk): point_count=point_set.shape[0] #计算训练数据个数 #根据已有训练数据规模计算一个测试样本的矩阵,方便后面整体运算 diffMat=tile(check_point, (point_count,1))-point_set sumSquareMat=(diffMat**2).sum(axis=1) #QQ distMat=sumSquareMat**0.5 #求得到各训练数据欧氏距离的矩阵 sortedIndex=distMat.argsort()#按距离大小排序求得对应索引位置 pk_result={} for i in range(m_top_pk):#以训练数据集的前n个数据判定测试数据最终类别 label_result=label_set[sortedIndex[i]]#距离第i近的数据对应的类别 pk_result[label_result]=pk_result.get(label_result,0)+1; #该类别的频数+1 class_result=sorted(pk_result.iteritems(),key=operator.itemgetter(1),reverse=True) # dict->list, 按值排序, 反序输出 return class_result[0][0] #输出最大数量类别
0 0
- 机器学习手记[6]---KNN算法
- 《机器学习》 KNN算法
- 机器学习:KNN算法
- 机器学习-KNN 算法
- 【机器学习】kNN算法
- 机器学习 -- kNN算法
- 机器学习---kNN算法
- 机器学习--kNN算法
- 机器学习--KNN算法
- 机器学习算法-kNN
- 机器学习knn算法
- 机器学习算法---kNN算法
- 机器学习之kNN算法
- 机器学习之KNN 算法
- 机器学习之KNN算法
- 机器学习 Python kNN算法
- 机器学习之KNN算法
- 机器学习之kNN算法
- 王立平--poser
- edgesForExtendedLayout ios7新特性
- Oracle Database Link基础
- Builder模式
- static和const关键字的作用
- 机器学习手记[6]---KNN算法
- Java面向对象
- Java基础下
- USB主机控制器(Host Controller)--深入理解(转载)
- 【ActiveMQ】开源消息总线ActiveMQ的使用
- GBA4iOS 2.1版即将推出 将支持多人联机
- 机器学习手记[10]--logistic回归和python实现
- IPHONE应用开发 - xib关联到appdelegate
- 总结知识,提高认知--牛腩总结