KNN算法总结

合集下载

最近邻算法

最近邻算法

最近邻算法
最近邻算法(k-Nearest Neighbor Algorithm,KNN)是一种基于实例的学习或懒惰学习算法,它允许计算机系统“学习”在给定的训练集上的输入实例的属性与相应的类标号之间的关系,从而实现对新的数据实例进行分类。

KNN算法是一种被称作非参数学习法的监督学习方法,该方法不需要事先对数据进行定量化和标准化处理,也不涉及参数估计,大大简化了模型的构建过程。

KNN算法的基本思想十分简单:给定一个新的实例,将其与训练样本中的所有数据进行比较,然后依据一定的距离度量准则将新的实例分配给与其最为相似的那些训练样本所对应的类别。

KNN算法的实现原理很容易理解,但是在实际应用中,它却是一种高效的分类算法。

该算法能够从无序的、高维度的数据集中提取出有用的类别信息,使用者只需少量参数调节以及短暂的训练过程便可得到一个完整的建模。

KNN算法是一种基于实例的学习,主要由两步组成:第一步是计算两个实例之间的“距离”,第二步是根据距离选取“k”个最邻近的实例,并将其类标号合并以形成最终的预测类标号。

当新的数据实例到达时,KNN算法可以计算与该实例的每一个已知实例的距离,选择与该实例距离最近的K个实例来投票确定该新实例的类别标号。

KNN算法具有训练速度快、容易理解、可解释性高、支持多样性等优点,因此近年来得到了越来越多的应用。

然而,KNN算法也存在一些缺点,如计算复杂度高、空间开销不稳定以及容易受到噪声影响等。

knn算法的分类规则

knn算法的分类规则

knn算法的分类规则目录1.KNN 算法简介2.KNN 算法的分类规则3.KNN 算法的优缺点4.KNN 算法的应用实例正文1.KNN 算法简介KNN(k-Nearest Neighbors,k-近邻)算法是一种基于距离度量的分类和回归方法。

该算法的基本思想是:在一个数据集中,每个数据点根据其距离其他数据点的距离进行分类。

具体而言,KNN 算法会找到距离目标数据点最近的 k 个数据点,然后根据这些邻居的数据类别决定目标数据点的类别。

2.KNN 算法的分类规则KNN 算法的分类规则非常简单,可以概括为以下三个步骤:(1)计算数据点之间的距离:首先,需要计算数据集中每个数据点之间的距离。

通常使用欧氏距离、曼哈顿距离等度量方法。

(2)确定邻居数据点:根据距离度量,找到距离目标数据点最近的 k 个数据点。

这里 k 是一个超参数,可以根据实际问题和数据集的特点进行选择。

(3)决定目标数据点的类别:根据邻居数据点的类别,决定目标数据点的类别。

如果邻居数据点的类别多数为某一类别,则目标数据点也被划分为该类别;否则,目标数据点不被划分为任何类别。

3.KNN 算法的优缺点KNN 算法的优点包括:简单易懂、易于实现、对数据集的噪声不敏感、能够很好地处理不同密度的数据等。

然而,KNN 算法也存在一些缺点,如计算量大、需要存储所有数据点、对 k 的选择敏感等。

4.KNN 算法的应用实例KNN 算法在许多领域都有广泛的应用,例如文本分类、图像分类、生物信息学、金融风险管理等。

例如,在文本分类任务中,可以将文本表示为特征向量,然后使用 KNN 算法根据特征向量的距离对文本进行分类。

总之,KNN 算法是一种简单且易于实现的分类方法,适用于各种数据集和领域。

knn算法公式

knn算法公式

knn算法公式knn算法是一种基于距离度量的分类算法,它的全称为k近邻算法(k-Nearest Neighbor)。

该算法的核心思想是将未知样本的类别判定为与其距离最近的k个样本的类别中出现最多的那个类别。

在knn算法中,距离度量是非常重要的一个概念。

常用的距离度量有欧氏距离、曼哈顿距离、切比雪夫距离等。

以欧氏距离为例,假设有两个样本$x_i$和$x_j$,它们的特征向量分别为$vec{x_i}$和$vec{x_j}$,则它们之间的欧氏距离可以表示为:$$ d_{ij} = sqrt{sum_{k=1}^{n}(x_{ik}-x_{jk})^2} $$ 其中$n$为特征向量的维数,$x_{ik}$和$x_{jk}$分别表示样本$x_i$和$x_j$在第$k$个维度上的特征值。

在knn算法中,我们需要先给出一个待分类的未知样本$x$,然后根据距离度量找到与其距离最近的$k$个训练样本,记为$N_k(x)$。

接下来,我们需要统计$N_k(x)$中出现最多的类别,即:$$ y = mathop{argmax}_{c_j} sum_{x_iin N_k(x)} [y_i=c_j] $$其中$c_j$表示第$j$个类别,$[y_i=c_j]$为示性函数,表示当$y_i=c_j$时为1,否则为0。

最后,将未知样本$x$判定为$y$,即:$$ y = mathop{argmax}_{c_j} sum_{x_iin N_k(x)} [y_i=c_j] $$需要注意的是,knn算法中的$k$值是需要人为指定的。

一般来说,$k$值越小,模型越容易受到噪声和异常值的影响,导致过拟合;$k$值越大,模型越容易受到样本分布的影响,导致欠拟合。

因此,在选择$k$值时需要根据具体的问题来做出权衡。

除了距离度量和$k$值之外,knn算法还有一些其他的扩展和改进。

例如,可以采用加权knn算法,即对距离进行加权,使得距离较近的样本对分类结果的贡献更大;还可以采用局部加权knn算法,即对距离进行加权的同时,还考虑每个样本在距离上的邻域大小,使得距离较近且邻域较大的样本对分类结果的贡献更大。

knn算法实验总结与体会

knn算法实验总结与体会

knn算法实验总结与体会KNN算法实验总结与体会KNN算法是一种常见的机器学习算法,它的原理比较简单,但是应用广泛。

在进行KNN算法实验时,我深刻领悟到以下几点:1. 数据预处理非常重要在进行KNN算法实验时,数据预处理是非常重要的一步。

数据预处理包括数据清洗、特征选择、特征提取等。

只有对数据进行充分的预处理,才能提高算法的准确性和效率。

2. K值的选择需要根据实际情况进行调整KNN算法中的K值是一个重要的参数,它决定了算法的准确性和效率。

在进行KNN算法实验时,我们需要根据实际情况进行K值的选择。

如果K值过小,算法会过拟合;如果K值过大,算法会欠拟合。

因此,我们需要通过实验来选择最合适的K值。

3. 距离度量方法的选择也很重要KNN算法中的距离度量方法有很多种,如欧氏距离、曼哈顿距离、切比雪夫距离等。

在进行KNN算法实验时,我们需要选择最合适的距离度量方法。

不同的距离度量方法对算法的准确性和效率有很大的影响。

4. 数据集的选择和样本数量的影响KNN算法的准确性和效率也与数据集的选择和样本数量有很大的关系。

在进行KNN算法实验时,我们需要选择最合适的数据集和样本数量。

只有选择合适的数据集和样本数量,才能提高算法的准确性和效率。

5. KNN算法的优缺点KNN算法有很多优点,如算法简单易懂、可解释性强、适用于多分类问题等。

但是KNN算法也有一些缺点,如算法计算复杂度高、对样本分布敏感、需要大量的存储空间等。

在进行KNN算法实验时,我们需要了解KNN算法的优缺点,才能更好地应用算法。

综上所述,KNN算法是一种简单而有效的机器学习算法。

在进行KNN算法实验时,我们需要充分考虑数据预处理、K值的选择、距离度量方法的选择、数据集的选择和样本数量的影响等因素。

只有深入理解KNN算法的原理和优缺点,才能更好地应用算法。

knn例子计算

knn例子计算

knn例子计算如下:
例1:
假设有一个包含多种水果的集合,每种水果都有其颜色和重量两个特征。

现在要确定一个未知的水果(例如,重量为100克,颜色为红色)是什么类型。

首先,从集合中选出与未知水果最相似的k个邻居。

假设k=3,那么选出的三个邻居是重量为90克、颜色为绿色的苹果,重量为110克、颜色为红色的橙子,以及重量为100克、颜色为黄色的香蕉。

然后,根据这k个邻居的类别,确定未知水果的类别。

在这个例子中,两个邻居是苹果,一个邻居是橙子,没有邻居是香蕉。

因此,根据投票机制,未知水果被归类为苹果。

例2:
假设有一个包含多种电影的集合,每种电影都有其类型和评分两个特征。

现在要确定一个未知的电影(例如,类型为爱情片,评分为8.5分)是什么类型。

首先,从集合中选出与未知电影最相似的k个邻居。

假设k=3,那么选出的三个邻居是类型为动作片、评分为7.0分的《战狼》,类型为动作片、评分为8.0分的《红海行动》,以及类型为爱情片、评分为9.0分的《碟中谍6》。

然后,根据这k个邻居的类别,确定未知电影的类别。

在这个例子中,两个邻居是动作片,一个邻居是爱情片。

因此,根据投票机制,未知电影被归类为动作片。

knn算法原理

knn算法原理

knn算法原理KNN(K近邻算法)是一种基于实例的机器学习算法,是机器学习领域中非常常见的算法。

KNN法的基本思想是:如果一个样本在特征空间中的k个最相近的样本中的大多数属于某一个类别,则该样本也属于该类别。

KNN法中,所选择的邻居都是已经正确分类的对象。

KNN法的基本原理是:在给定一个未知类别的对象(样本数据)时,根据其特征属性和它最接近的K个已经知道分类的样本,对这个对象进行分类。

KNN法就是从训练集中找出这K个“邻居”,根据这K 个“邻居”的类别,来确定当前未知类别的对象的分类。

KNN法的基本流程如下:1. 从训练集中计算测试实例与每个训练集实例之间的距离;2.据距离选择K个最近邻;3.据K个邻居的类别,通过投票或者加权求和,确定测试实例的类别。

KNN法使用数据中“靠近”的训练实例来预测未知实例,因此,KNN法是一种基于实例的学习算法。

KNN法的实质是在训练集中查找与当前输入实例最在的 K 个实例,并将它们的“类标记”作为对应的输入实例的预测。

KNN法的优点是:1. KNN法的思想简单,实现容易,它不需要学习过程,也不需要假设数据的分布,只需要保存所有数据实例;2.实际数据建模时,可以有效地处理属性间关系比较复杂和数据不平衡的情况;3. KNN法可以灵活地处理不同的数据类型。

KNN法也存在一些缺点:1. KNN法需要大量的计算,当训练数据集特别大的时候,搜索K 个最近邻计算量就比较大,可能会耗费较多的时间;2. KNN法的效果依赖于k的值,但是k的值没有一个理论上的确定方法,只能选取不同的k值进行实验;3. KNN法不能很好地处理类别不平衡问题,因为它采用的算法是加权求和,类别不平衡的情况下,加权求和会倾向于那些比较多的类别;4. KNN法的思想是当前的数据点的类别取决于它的K个邻居,而这里的K个邻居都是已经被正确分类的,即每个邻居都是“正确”的,这种认为是不合理的,因为它假定K个邻居的类别都被正确分类了,而这并不一定是真的。

KNN算法原理与应用

KNN算法原理与应用

12
KNN算法的sklearn实现
sklearn.neighbors模块集成了 k-近邻相关的类,KNeighborsClassifier用做kNN分类
树,KNeighborsRegressor用做kNN回归树。KNeighborsClassifier类的实现原型如下:
class sklearn.neighbors.KNeighborsClassifier(n_neighbors=5, weights='uniform',
testData = [0.2, 0.1]
Result = classify(testData, group, labels, 3)
print(Result)
5
KNN算法基本原理
6
• 运行效果:

左下角两个点属于B类用蓝色点标识,右上角
两个点属于A类用红色标识。取k值为3时通过
kNN算法计算,距离测试点(0.2, 0.1)最近的
algorithm='auto', leaf_size=30, p=2, metric='minkowski', metric_params=None, n_jobs=1,
**kwargs)
13
KNN算法的sklearn实现
主要参数如下:


n_neighbors:整型,默认参数值为5。邻居数k值。
量的kNN搜索。
,适合于样本数量远大于特征数
KNN算法基本原理:距离计算
7
在KNN算法中,如何计算样本间距离非常重要,下面我们介绍几种常见的
距离计算方法。
闵可夫斯基距离
闵可夫斯基距离(Minkowski Distance)是一种常见的方法,用于衡量数值点之间距离。

KNN算法总结范文

KNN算法总结范文

KNN算法总结范文KNN(K-nearest neighbors)算法是一种常用的分类和回归算法。

该算法的基本思想是通过计算待分类样本与已知类别样本之间的距离,找出最近的K个已知类别样本,然后根据这K个最近样本的类别进行预测或分类。

1.简单有效:KNN算法是一种基于实例的学习算法,不需要假设数据的分布情况,因此适用于各种类型的数据。

2.高度灵活:KNN算法不仅可以用于分类问题,还可以用于回归问题,对于多种类型的数据预测都适用。

3.鲁棒性强:KNN算法对数据中的噪声和异常值不敏感,这是因为算法会考虑多个邻居的类别进行预测,不会受个别样本的影响。

4.可处理多类别问题:KNN算法可以处理多类别问题,通过选择合适的K值和多数表决法,可以预测出多个类别的可能性。

然而,KNN算法也存在一些缺点:1.需要大量的存储空间:KNN算法需要保存训练集中的所有样本,当训练集非常大时,会消耗大量的存储空间。

2.计算复杂度高:KNN算法需要计算待分类样本与所有训练样本之间的距离,并选取最近的K个样本,因此在大规模数据集上的计算复杂度很高。

3.对数据的缩放敏感:KNN算法是基于距离的算法,如果特征之间的度量尺度不同,会导致一些特征对距离的贡献过大,影响算法的性能。

针对KNN算法的缺点,可以采取以下方法进行改进和优化:1.降维:通过特征选择或特征提取等降维方法,减少特征的数量,从而减少计算量和存储空间的消耗。

2.核方法:使用核方法对数据进行映射,将高维特征空间的计算转化为低维特征空间的计算,从而提高计算效率。

3.近似计算:使用近似计算方法,如K-d树、球树等数据结构,减少计算距离的复杂度。

4.特征缩放:对数据进行标准化或归一化处理,将不同尺度的特征统一到相同的尺度上,从而避免度量尺度不同的问题。

总结来说,KNN算法是一种简单有效的分类和回归算法,具有高度灵活性和鲁棒性,可以处理多类别问题。

然而,该算法在存储空间消耗和计算复杂度方面存在一些缺点,可以通过降维、核方法、近似计算和特征缩放等方法进行改进和优化。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

KNN算法总结1 KNN分类算法1.1KNN简述K最近邻(k-Nearest Neighbor,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一。

该方法的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。

KNN算法中,所选择的邻居都是已经正确分类的对象。

该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别[1]。

KNN方法虽然从原理上也依赖于极限定理,但在类别决策时,只与极少量的相邻样本有关。

由于KNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,KNN方法较其他方法更为适合。

KNN最邻近规则,主要应用领域是对未知事物的识别,即判断未知事物属于哪一类,判断思想是,基于欧几里得定理,判断未知事物的特征和哪一类已知事物的的特征最接近。

1.2 KNN原理最近邻方法(k-nearest neighbor,简称kNN)是一种简洁而有效的非参数分类方法,是最简单的机器学习算法之一,该算法最初由Cover和Hart提出的,用于解决文本的分类问题。

K近邻算法是最近邻算法的一个推广。

该规则将是一个测试数据点x分类为与它最接近的K个近邻中出现最多的那个类别。

K近邻算法从测试样本点x开始生长,不断的扩大区域,直到包含进K个训练样本点为止,并且把测试样本点x 归为这最近的K个训练样本点中出现频率最大的类别。

其中测试样本与训练样本的相似度一般使用欧式距离测量。

如果K值固定,并且允许训练样本个数趋向于无穷大,那么,所有的这K个近邻都将收敛于x。

如同最近邻规则一样,K个近邻的标记都是随机变量,概率P(w i|x),i=1,2,…,K都是相互独立的。

假设P(w m|x)是较大的那个后验概率,那么根据贝叶斯分类规则,则选取类别w m。

而最近邻规则以概率P(w m|x)选取类别。

而根据K近邻规则,只有当K个最近邻中的大多数的标记记为w m,才判定为类别w m。

做出这样断定的概率为通常K值越大,选择类别w m概率也越大[2]。

K近邻法是有监督学习方法,原理很简单,假设我们有一堆分好类的样本数据,分好类表示每个样本都一个对应的已知类标签,当来一个测试样本要我们判断它的类别是,就分别计算到每个样本的距离,然后选取离测试样本最近的前K 个样本的标签累计投票,得票数最多的那个标签就为测试样本的标签。

下面我们用电影的分类来简述KNN的原理例子(电影分类):图1.1 电影分类图1.1中横坐标表示一部电影中的打斗统计个数,纵坐标表示接吻次数。

我们要对图中的问号这部电影进行分类,其他几部电影的统计数据和类别如表1.1所示:表1.1从表1.1中可以看出有三部电影的类别是Romance,有三部电影的类别是Action,那如何判断问号表示的这部电影的类别?根据KNN原理,我们需要在图1.1所示的坐标系中计算问号到所有其他电影之间的距离。

计算出的欧式距离如表1.2所示:表1.2由于我们的标签只有两类,那假设我们选K=6/2=3,由于前三个距离最近的电影都是Romance,那么问号表示的电影被判定为Romance。

1.3KNN的应用KNN算法不仅可以用于分类,还可以用于回归。

通过找出一个样本的k个最近邻居,将这些邻居的属性的平均值赋给该样本,就可以得到该样本的属性[3]。

更有用的方法是将不同距离的邻居对该样本产生的影响给予不同的权值(weight),如权值与距离成正比(组合函数)。

(1)文本分类:文本分类主要应用于信息检索,机器翻译,自动文摘,信息过滤,邮件分类等任务。

文本分类在搜索引擎中也有着大量的使用,网页分类/分层技术是检索系统的一项关键技术,搜索引擎需要研究如何对网页进行分类、分层,对不同类别的网页采用差异化的存储和处理,以保证在有限的硬件资源下,提供给用户一个高效的检索系统,同时提供给用户相关、丰富的检索结果。

在搜索引擎中,文本分类主要有这些用途:相关性排序会根据不同的网页类型做相应的排序规则;根据网页是索引页面还是信息页面,下载调度时会做不同的调度策略;在做页面信息抽取时,会根据页面分类的结果做不同的抽取策略;在做检索意图识别的时候,会根据用户所点击的url所属的类别来推断检索串的类别。

(2)回归:通过找出一个样本的k个最近邻居,将这些邻居的属性的平均值赋给该样本,就可以得到该样本的属性。

更有用的方法是将不同距离的邻居对该样本产生的影响给予不同的权值(weight),如权值与距离成正比。

(3)可以使用knn算法做到比较通用的现有用户产品推荐,基于用户的最近邻(长得最像的用户)买了什么产品来推荐是种介于电子商务网站和sns网站之间的精确营销。

只需要定期(例如每月)维护更新最近邻表就可以,基于最近邻表做搜索推荐可以很实时[4]。

1.4 KNN的核心思想K-NN可以说是一种最直接的用来分类未知数据的方法。

基本通过下面这张图1.2跟文字说明就可以明白K-NN的思想是什么图1.2简单来说,K-NN可以看成:有那么一堆你已经知道分类的数据,然后当一个新数据进入的时候,就开始跟训练数据里的每个点求距离,然后挑离这个训练数据最近的K个点看看这几个点属于什么类型,然后用少数服从多数的原则,给新数据归类。

kNN算法的核心思想是如果一个样本在特征空间中的k个最相似的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。

该方法在确定分类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别[5]。

kNN方法在类别决策时,只与极少量的相邻样本有关。

由于kNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,kNN方法较其他方法更为适合。

1.5算法步骤step.1---初始化距离为最大值step.2---计算未知样本和每个训练样本的距离diststep.3---得到目前K个最临近样本中的最大距离maxdiststep.4---如果dist小于maxdist,则将该训练样本作为K-最近邻样本step.5---重复步骤2、3、4,直到未知样本和所有训练样本的距离都算完step.6---统计K-最近邻样本中每个类标号出现的次数step.7---选择出现频率最大的类标号作为未知样本的类标号2 K值的选择2.1交叉验证(Cross-validation)交叉验证(Cross-validation)主要用于建模应用中,例如PCR 、PLS 回归建模中。

在给定的建模样本中,拿出大部分样本进行建模型,留小部分样本用刚建立的模型进行预报,并求这小部分样本的预报误差,记录它们的平方加和。

这个过程一直进行,直到所有的样本都被预报了一次而且仅被预报一次。

把每个样本的预报误差平方加和,称为PRESS(predicted Error Sum of Squares)。

K折交叉验证,初始采样分割成K个子样本,一个单独的子样本被保留作为验证模型的数据,其他K-1个样本用来训练。

交叉验证重复K次,每个子样本验证一次,平均K次的结果或者使用其它结合方式,最终得到一个单一估测。

这个方法的优势在于,同时重复运用随机产生的子样本进行训练和验证,每次的结果验证一次,10折交叉验证是最常用的。

2.2 K值的选择K近邻规则可以被看作是另一种从样本中估计后验概率P(w i|x)的方法。

为了得到可高的估计必须是的K值越大越好。

另一方面,又希望又希望x的K 个近邻x 距离x1越近越好,因为这样才能保证P(w i|x1)尽可能逼近P(w i|x)。

在选取K 值的时候,就不得不做出某种折衷。

只有当n趋近于无穷大时,才能保证K 近邻规则几乎是最优的分类规则。

K值的选择:需要消除K值过低,预测目标容易产生变动性,同时高k值时,预测目标有过平滑现象。

推定k值的有益途径是通过有效参数的数目这个概念。

有效参数的数目是和k值相关的,大致等于n/k,其中,n是这个训练数据集中实例的数目。

确定K的值:通过实验确定。

进行若干次实验,取分类误差率最小的k值。

KNN 算法的分类效果很大程度上依赖于k 值的选取,以往人们都是根据个人经验来定。

k 值选择过小,得到的近邻数过少,会降低分类精度;而如果k 值过大,容易造成噪声数据增加而降低分类准确率。

最极端的情况下,参数k 取数据库中所有样本的个数,则新样本的分类结果为全局最优解,否则分类结果为局部最优解。

所以,参数k 是全局最优解和局部最优解的一个折衷。

针对k 值选择问题,文献[6]提出了根据上下文动态调整k 值的选择。

中科院的STan 提出了一种适应性的KNN改进算法[7],对样本数差异较大的类别,设定不同的K 值,减少了算法对样本分布的依赖性。

如图2.1所示:图2.1此图中,绿色圆要被决定赋予哪个类,是红色三角形还是蓝色四方形?如果K=3,由于红色三角形所占比例为2/3,绿色圆将被赋予红色三角形那个类,如果K=5,由于蓝色四方形比例为3/5,因此绿色圆被赋予蓝色四方形类在给定了度量方式以后,我们自然而然会遇到一个问题就是到底要找多少个邻居才合适了,如图2.2所示,X是待分类样本,‘+’和‘-’是样本类别属性,如果K选大了的话,可能求出来的k最近邻集合可能包含了太多隶属于其它类别的样本点,最极端的就是k取训练集的大小,此时无论输入实例是什么,都只是简单的预测它属于在训练实例中最多的累,模型过于简单,忽略了训练实例中大量有用信息。

如果K选小了的话,结果对噪音样本点很敏感。

那么到底如何选取K值,其实我在前面也说了,其实完全靠经验或者交叉验证(一部分样本做训练集,一部分做测试集)的方法,就是是K值初始取一个比较小的数值,之后不段来调整K值的大小来时的分类最优,得到的K值就是我们要的,但是这个K值也只是对这个样本集是最优的。

一般采用k为奇数,跟投票表决一样,避免因两种票数相等而难以决策。

下面我们可以通过交叉验证的方式求出最合适的K值,对iris数据(UCI Machine Learning Repository下载)用kNN算法进行分类,通过交叉验证(10次)的方式,对k取不同值时进行了实验,实验结果如图2.2所示,其中红线指的是实验选用的K值,黄线指的是实验的结果,我们发现在我所选取的k值中,当k=17时效果最好,在k=1时,即用最近邻来进行分类的效果也不错,实验结果呈现一个抛物线,与我们之前分析的结果相吻合。

图2.23 KNN算法的优缺点K近邻法(K Nearest Neighbor,KNN)由Cover和Hart提出来的,是一种懒惰的、有监督的、基于实例的机器学习方法。

相关文档
最新文档