机器学习之KNN
来源:互联网 发布:python图形化编程 编辑:程序博客网 时间:2024/05/16 17:47
KNN主要应用于文本分类、聚类分析、预测分析、降维等
中心思想是采用测量不同特征值之间的距离方法进行分类
算法非常简单,不过这是一个监督算法,训练数据需要经过人工标记。算法中心思想是:计算候选样本到所有训练样本之间的距离,选取k个最近距离数据中出现次数最多的分类作为新样本的类别。
from numpy import *import operatordef classify0(sample,dataSet,labels,k): samplearray=tile(sample,(dataSet.shape[0],1)) distance=sum((samplearray-dataSet)**2,1) s=np.argsort(distance) counter={} for i in arange(k): key=labels[s[i]] if key in counter: counter[key]=counter[key]+1 else: counter[key]=1 c=sorted(counter.items(),key=operator.itemgetter(1),reverse=True) return c[0][0];
归一化
计算距离时,不同的特征的数据范围不一样。例如:样本特征包括身高、体重、飞行里程。其中飞行里程的数值相对身高和体重范围很大。计算样本之间距离时,飞行里程的差值会起到决定性作用,而一般认为所有的特征应该是同样重要,需要将数值归一化到0到1之间:
def autoNorm(dataSet): datarange=dataSet.max(axis=0)-dataSet.min(axis=0) dataSet=dataSet/tile(datarange,(dataSet.shape[0],1)) return dataSet
优化
KNN算法简单有效,但存在缺点:
- 计算量大,每次需要计算待分类样本和全体已知样本的距离,才能求取K个最近领域点,计算量大。因此,一般需要对已知样本点进行剪辑(只对容量大的情况,且去除分类作用不大的样本)。另外也有使用K决策树,减少计算量和存储空间。
- 训练样本集中某些类的样本数量大,其他类的数量小。因此,需要采用加权方法。
0 0
- 机器学习之KNN
- 机器学习之KNN
- 机器学习之knn
- 机器学习之kNN算法
- 机器学习之KNN 算法
- 机器学习之KNN算法
- 机器学习之knn实现
- 机器学习之KNN算法
- 机器学习实战之kNN
- 机器学习之kNN算法
- 机器学习python之KNN
- 机器学习之knn算法
- 机器学习之KNN 算法
- 机器学习实战之kNN
- 机器学习之KNN算法
- 机器学习实战之-knn
- 机器学习算法之KNN
- 机器学习之KNN算法
- 高级语言内的单指令多数据流计算(SIMD)
- ios Autolayout 第三方库Masonry 使用介绍文章链接
- iOS 9 适配系列教程
- myeclipse10 导出war问题解决办法
- C# 计算时间差 用timespan函数
- 机器学习之KNN
- 20151102—unity3D随笔
- 构造二叉树
- 基于MyBatis3.0.6的基本操作介绍
- android sqlite 查询某张表是否存在
- 3.5 STL之vector的使用一(初始化vector)
- Java中,使用HashSet<E>类
- eclipse中svn和TortoiseSVN更改账号的方法
- 思过崖