机器学习初探———【K-近邻算法】
来源:互联网 发布:怎么加雷盾网络验证 编辑:程序博客网 时间:2024/05/02 05:03
一句话:测量不同特征值之间的距离进行分类
优点:精度高,对异常值不敏感,无数据假定输入。
缺点:计算复杂度高,空间复杂度高。
使用数据范围:数值型和标称型。
k-近邻算法的一般流程:
收集数据:任何方法。
准备数据:距离计算所需要的数值,最好是结构化数据格式。
分析数据:任何方法。
训练方法:此步骤不适用于k-近邻算法。
测试方法:计算错误率。
使用算法:输入样本和结构化输出结果>>>>运行k-近邻算法判断属于哪一个类>>>>对分类后续处理
下面开始:
在文件夹下建立kNN.py
1.导入数据:
from numpy import * //numpy科学计算包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
可以在python下键入,查看下数据;
>>>import kNN>>>group, labels = kNN.createDataSet()>>>group
2.从文本中解析数据:
该函数是将每组数据划分到某一类中:
伪代码:
(1)计算已知数据集中的点与当前点的距离。
(2)按照距离递增次序排序。
(3)选取与当前点距离最小的k个点。
(4)确定前k个点所在类别的出现频率。
(5)返回当前k个点出现频率最高的类别作为当前的预测分类(看哪个类别出现的多就是了)。
def classify0(inX, dataSet, labels, k)://你要分类的数据,训练集,标签向量(元素数目和矩阵dataSet的行数相同),k个近邻
//计算距离 dataSetSize = dataSet.shape[0] // diffMat = tile(inX, (dataSetSize,1)) - dataSet sqDiffMat = diffMat**2 sqDistances = sqDiffMat.sum(axis=1) distances = sqDistances**0.5 sortedDistIndicies = distances.argsort() classCount={}
//选择距离最小的k个点 for i in range(k): voteIlabel = labels[sortedDistIndicies[i]] classCount[voteIlabel] = classCount.get(voteIlabel,0) + 1
//排序 sortedClassCount = sorted(classCount.iteritems(), key=operator.itemgetter(1), reverse=True) return sortedClassCount[0][0]
0 0
- 机器学习初探———【K-近邻算法】
- 《机器学习》——k-近邻算法
- 机器学习—— k-近邻算法
- 机器学习——K-近邻算法
- 《机器学习实战》—K-近邻算法
- 机器学习k—近邻算法实例
- 机器学习算法(分类算法)—k-近邻算法
- 机器学习实战—知识梳理—k-近邻算法
- 机器学习笔记(二)——k-近邻算法
- 机器学习实战——第二章:K-近邻算法
- 机器学习python实战——K近邻算法
- 机器学习——K近邻算法(KNN)
- 机器学习实战——k-近邻算法(KNN)
- 机器学习整理笔记——k-近邻算法
- <机器学习实战>——k近邻算法
- 《机器学习实战》——K近邻算法实现
- 机器学习实战笔记(1)——k-近邻算法
- 机器学习实战笔记(1)——k-近邻算法
- 【案例】验证码的实现
- poj 1005
- Makefile 中:= ?= += =的区别
- dialog类讲解
- 特征向量的物理意义
- 机器学习初探———【K-近邻算法】
- Android源码分析-资源加载机制
- PHP数组下标加引号的理解
- 360急速浏览器有道词典屏幕取词问题
- 你所不知道的Html5那些事(一)
- Java动态代理实现接口方法
- iptables的详细介绍及配置方法
- 检测网络状态
- 关于Mongodb的全面总结,学习mongodb的人,可以从这里开始!