KNN

2018-04-01  本文已影响0人  青雪_f812

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 的内核数。

上一篇下一篇

猜你喜欢

热点阅读