KNN

作者: 青雪_f812 | 来源:发表于2018-04-01 21:57 被阅读0次

    1、算法思想:K-近邻算法采用测量不同特征值之间的距离方法进行分类,K通常是不大于20的整数,k值过小(过拟合)导致对局部数据敏感,抗噪能力差;k值过大,会因为数据集中实例不均衡导致分类出错

    2、算法描述:

    1)计算测试数据与各个训练数据之间的距离;

    2)按照距离的递增关系进行排序;

    3)选取距离最小的K个点;

    4)确定前K个点所在类别的出现频率;

    5)返回前K个点中出现频率最高的类别作为测试数据的预测分类。

    3、算法优缺点:

    优点:

    1)原理简单,易于理解

    2)精度高

    3)对异常值不敏感

    4)无数据输入假定

    5)适合多分类问题

    缺点:

    1)计算复杂度高

    2)空间复杂度高

    3)针对那些分类不均匀的分类训练样本可能误差较大

    4)可理解性差:无法知晓实例样本和典型实例样本具有什么特征,无法给出任何数据的基础结构信息

    适用数据范围:数值型和标称型

    4、数据处理要求:

    1)若是数据特征中存在非数值的类型,先其量化为数值,再做归一化处理

    5、KNN算法各参数

    neighbors.KNeighborsClassifier(n_neighbors=5, weights=’uniform’, algorithm=’auto’, leaf_size=30, p=2, metric=’minkowski’, metric_params=None, n-jobs=1)

    1、n_neighbors —— kNN 里的 k,就是在做分类时,我们选取问题点最近的多少个最近邻

    2、weights ——在进行分类判断时给最近邻附上的加权

    1)默认的 'uniform' 是等权加权

    2) 'distance' 选项是按照距离的倒数进行加权,也可以使用用户自己设置的其他加权方法。

    3)algorithm ——分类时采取的算法,有 'brute'、'kd_tree' 和 'ball_tree'。默认的 'auto' 选项会在学习时自动选择最合适的算法,所以一般来讲选择 auto 就可以。

    4)leaf_size ——kd_tree 或 ball_tree 生成的树的树叶(树叶就是二叉树中没有分枝的节点)的大小。对于很多使用场景来说,叶子的大小并不是很重要,设 leaf_size=1 就好。

    5)metric 和 p,是我们在 kNN 入门文章中介绍过的距离函数的选项,如果 metric ='minkowski' 并且 p=p 的话,计算两点之间的距离就是

    一般来讲,默认的 metric='minkowski'(默认)和 p=2(默认)就可以满足大部分需求。

    6)metric_params 是一些特殊 metric 选项需要的特定参数,默认是 None。

    7)n_jobs 是并行计算的线程数量,默认是 1,输入 -1 则设为 CPU 的内核数。

    相关文章

      网友评论

          本文标题:KNN

          本文链接:https://www.haomeiwen.com/subject/xmzjcftx.html