K-近邻算法(KNN)
2016-03-07 00:18
489 查看
简介
k近邻算法是数据分类一种常用的算法,属于监督学习算法的一类,它采用不同特征值之的距离进行分类。K近邻算法具有精度高、对异常值不敏感、无数据输入假定的优点,缺点是计算复杂度高、空间复杂度高。适用于数值型和标称型数据的计算分类。K近邻算法的一般流程包括:
收集数据
准备数据:距离计算所需要的数值,最好是结构化的数据
分析数据
训练算法:根据训练样本得到
测试算法:计算错误率
使用算法
Case
已知四个点,及其对应的分类。我们需要根据已有数据,判别未知点的分类。首先导入数据。from numpy import * def createDataSet(): <!--数据点--> group = array([[1.0, 1.1], [1.0, 1.0], [0, 0], [0, 0.1]]) <!--点对应的分类--> labels = ['A', 'A', 'B', 'B'] return group, labels
对未知点类别属性的判别执行以下的步骤
计算已知类别数据点和当前点之间的距离
按照距离递增排序
选取与当前点距离最小的k个点
确定前k个点所在类别的出现规律
返回前k个点出现频率最高的类别作为当前点的预测分类
下面是代码的具体实现
from numpy import * import operator def createDataSet(): group = array([[1.0, 1.1], [1.0, 1.0], [0, 0], [0, 0.1]]) labels = ['A', 'A', 'B', 'B'] return group, labels def classfiy(inX, dataSet, labels, k): # size of the dataSet array dataSetSize = dataSet.shape[0] <!--得到未知点和已知点的差值--> diffMat = tile(inX, (dataSetSize, 1)) - dataSet <!--差值平方--> sqDiffMat = diffMat ** 2 <!--未知点和已知点距离的平方和--> sqDistances = sqDiffMat.sum(axis=1) <!--得到距离差数据--> distances = sqDistances ** 0.5 <!--argsort得到index的sort,index可以关联labels的index--> sortedDistanceIndicts = distances.argsort() print classCount = {} for i in range(k): voteIlabel = labels[sortedDistanceIndicts[i]] classCount[voteIlabel] = classCount.get(voteIlabel, 0) + 1 sortedClassCount = sorted(classCount.iteritems(), key=operator.itemgetter(1), reverse=True) return sortedClassCount data_set = createDataSet() result = classfiy([0, 0], data_set[0], data_set[1], 3) <!--返回的结果是B--> print result
相关文章推荐
- csu 1685: Entertainment Box【湖南省多校对抗赛3.6】multiset妙用
- FZU 1150 Farmer Bill's Problem(逻辑推理题目)
- Android studio添加httpclient的jar包
- 20160307 - 双击打开 Js 扩展名的附件要保持留心
- CODEVS白银组(上)
- UIKit结构图
- windows下尝试编写node模块
- iOS UIScrollView
- 深夜睡不着,第二篇随笔,说说js的创建实例化过程
- 4-3 简单求和
- 《Effective C++》学习笔记——条款41
- eclipse 运行时异常 Unsupported major.minor version 52.0 原因
- 自定义Block和彩票中Bug解决
- 红专厂一日游
- POJ 3046 Ant Counting
- MyBatis中返回新添加记录的ID出现的问题
- iOS开发技巧:布局UIButton的imageView和titleLabel属性
- linux上操作web项目常用实用命令总结
- 树莓派应用之家庭网络中部署一台可在公网提供服务的低功耗服务器
- MAC OS X El Capitan 10.11 CLOVER小记