精华内容
下载资源
问答
  • k最近邻分类算法

    2012-03-13 11:12:27
    k最近邻算法是一种有效快速的分类算法,包括源代码和测试数据
  • 一种基于最短距离聚类的K最近邻分类算法.pdf
  • KNN(K最近邻分类算法)是一种在机器学习中比较简单的算法,它的原理如下:对于一个需要分类的物品A,定义某一种刻画物品之间距离方法,找出该物品最邻近k个有已知类别的物品,这k物品中出现最多的类别即为物品A的...

    1.1算法简介
    KNN(K最近邻分类算法)是一种在机器学习中比较简单的算法,它的原理如下:对于一个需要分类的物品A,定义某一种刻画物品之间距离方法,找出该物品最邻近k个有已知类别的物品,这k物品中出现最多的类别即为物品A的类别。如下图:
    在这里插入图片描述
    在KNN算中,最核心的一点是怎么定义物品之间的距离,这里我们简单列举几种计算物品距离的方法:欧式距离、曼哈顿距离、切比雪夫距离、杰卡德系数、夹角余弦、皮尔逊系数。

    下面介绍KNN在实际业务中的运用。

    4.2业务实践

    业务场景1:以应用商店为例,在用户下载完一个应用时,触发一个“大家还下载”的推荐,下面介绍如何运用knn算法实现这个场景的推荐:

    首先定义应用的维度向量,一种简单的方法是离散化所有特征,然后进行one-hot编码,得到所有维度取值0/1的向量V,例如:可以把每个用户当做一个维度,如果第n个用户安装了应用A,那么应用A在第n个维度取值为1,否则为0,运用欧式距离可以得到应用A与应用B的距离公式:在这里插入图片描述

    给定一个应用A,通过上述公式取距离最小的4个应用出来,在用户下载完应用A以后给该用户推荐这4个应用。

    业务场景2:网络购物中,在“猜你喜欢”场景推荐一批物品给用户,通过用户的历史购物清单,运用杰卡德公式计算用户与用户的相关系数:
    在这里插入图片描述
    Ax表示购买了物品x的用户集合,那么用户u与用户v的距离定义为:
    在这里插入图片描述
    给定一个用户u,首先找出这个用户最邻近的k个用户,然后在这k个用户中按照购买的用户数对物品进行降序,去除用户u已经购买的物品,取top 10个物品推荐给用户

    1.3实例代码

    参考来源
    [1] https://mp.weixin.qq.com/s/9F_BRgnhAxP-nALtBdIZpg

    展开全文
  • 本文介绍了k最近邻分类算法的原理,思路,以及简要的介绍了各种距离的公式,最后利用该算法对鸢尾花数据进行分类预测。

    K最近邻分类

    K最近邻(k-Nearest Neighbor,KNN)分类算法,是最简单的机器学习算法之一。算法本身简单有效,它是一种 lazy-learning 算法,分类器不需要使用训练集进行训练,训练时间复杂度为0。 分类的计算复杂度和训练集中的文档数目成正比,也就是说,如果训练集中文档总数为 n,那么算法 的分类时间复杂度为O(n)。

    原理

    K 近邻算法使用的模型实际上对应于对特征空间的划分。

    思路

    如果一个样本在特征空间中的k个最“相似”(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。这里的“相似”如果度量?我们使用特征空间中两个点之间“距离”来作为他们的相似度,即两个点“距离”越近则认为他们越相似。

    三个基本要素

    K 值的选择,距离度量和分类决策规则是该算法的三个基本要素。
    K 值的选择会对算法的结果产生重大影响:

    1. K值较小意味着只有与输入实例较近的训练实例才会对预测结果起作用,但容易发生过拟合;
    2. 如果 K 值较大,优点是可以减少学习的估计误差,但缺点是学习的近似误差增大,这时与输入实例较远的训练实例也会对预测起作用,使预测发生错误。
    3. 在实际应用中,K 值一般选择一个较小的数值,通常采用交叉验证的方法来选择最优的 K 值。
    4. 随着训练实例数目趋向于无穷和 K=1 时,误差率不会超过贝叶斯误差率的2倍,如果K也趋向于无穷,则误差率趋向于贝叶斯误差率。
    5. 该算法中的分类决策规则往往是多数表决,即由输入实例的 K 个最临近的训练实例中的多数类决定输入实例的类别距离度量一般采用 Lp 距离,当p=2时,即为欧氏距离,在度量之前,应该将每个属性的值规范化,这样有助于防止具有较大初始值域的属性比具有较小初始值域的属性的权重过大。

    距离计算方法

    最常见以欧氏距离作为衡量标准。

    1. 欧氏距离 D ( x i , x j ) = ( ∑ k = 1 n ( x i l − x j l ) 2 ) 1 2 D(x_i,x_j)={(\sum_{k=1}^{n}(x_i^l-x_j^l)^2)}^\frac{1}{2} D(xi,xj)=(k=1n(xilxjl)2)21

    2. 明科夫斯基距离
      D ( x i , x j ) = ( ∑ k = 1 n ( x i l − x j l ) p ) 1 p D(x_i,x_j)={(\sum_{k=1}^{n}(x_i^l-x_j^l)^p)}^\frac{1}{p} D(xi,xj)=(k=1n(xilxjl)p)p1

    3. 切比雪夫距离
      D ( x i , x j ) = m a x ∣ x i l − x j l ∣ D(x_i,x_j)=max|x_i^l-x_j^l| D(xi,xj)=maxxilxjl

    4. 马氏距离
      D ( x i , x j ) = ( ( x − μ ) T S − 1 ( x − μ ) ) 1 2 D(x_i,x_j)={((x-μ)^TS^{-1}(x-μ))}^\frac{1}{2} D(xi,xj)=((xμ)TS1(xμ))21

    5. 绝对值距离

    6. 曼哈顿距离
      D ( x i , x j ) = ∑ l = 1 n ∣ x i l − x j l ∣ D(x_i,x_j)={\sum_{l=1}^{n}|x_i^l-x_j^l|} D(xi,xj)=l=1nxilxjl

    KNN算法实现过程

    1. 准备数据,对数据进行预处理。
    2. 选用合适的数据结构存储训练数据和测试元组。
    3. 设定参数,如K。
    4. 护一个大小为K的的按距离由大到小的优先级队列,用于存储最近邻训练元组。随机从训练元组中选取K个元组作为初始的最近邻元组,分别计算测试元组到这K个元组的距离,将训练元组标号和距离存入优先级队列。
    5. 遍历训练元组集,计算当前训练元组与测试元组的距离,将所得距离L与优先级队列中的最大距离Lmax。
    6. 进行比较。若L>=Lmax,则舍弃该元组,遍历下一个元组。若L<Lmax,删除优先级队列中最大距离的元组,将当前训练元组存入优先级队列。
    7. 遍历完毕,计算优先级队列中K个元组的多数类,并将其作为测试元组的类别。
    8. 测试元组集测试完毕后计算误差率,继续设定不同的K值重新进行训练,最后取误差率最小的K值。

    KNN算法实现

    该实验利用KNN算法对鸢尾花数据进行分类与与预测。

    from sklearn.neighbors import KNeighborsClassifier
    from sklearn.datasets import load_iris
    import numpy as np
    from sklearn.model_selection import train_test_split
    if __name__ == '__main__':
        dataset = load_iris()
        X = dataset.data
        y = dataset.target
        Xd_train, Xd_test, y_train, y_test = train_test_split(X, y, random_state=14)
        clf = KNeighborsClassifier(n_neighbors=3).fit(Xd_train,y_train)
        y_predicted = clf.predict(Xd_test)
        # 准确率
        accuracy = np.mean(y_predicted == y_test) * 100
        print ("y_test\n",y_test)
        print ("y_predicted\n",y_predicted)
        print ("accuracy:",accuracy)
    
    

    在这里插入图片描述
    正确率为:97.37%

    展开全文
  • 分类器中最基本的算法最近邻分类器,每一个样本和自己距离最近的样本比较,属于最近距离样本所属的类别。简单但是要比较所有所以有些慢
  • 邻近算法,或者说K最近邻(kNN,k-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一。所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代表。Cover和Hart在1968年...

    1. 介绍

    邻近算法,或者说K最近邻(kNN,k-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一。所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代表。Cover和Hart在1968年提出了最初的邻近算法。KNN是一种分类(classification)算法,它输入基于实例的学习(instance-based learning),属于懒惰学习(lazy learning)即KNN没有显式的学习过程,也就是说没有训练阶段,数据集事先已有了分类和特征值,待收到新样本后直接进行处理。与急切学习(eager learning)相对应。

    KNN是通过测量不同特征值之间的距离进行分类。思路是:如果一个样本在特征空间中的k个最邻近的样本中的大多数属于某一个类别,则该样本也划分为这个类别。KNN算法中,所选择的邻居都是已经正确分类的对象。该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。

    2. 流程

    1) 计算已知类别数据集中的点与当前点之间的距离
    2) 按距离递增次序排序
    3) 选取与当前点距离最小的k个点
    4) 统计前k个点所在的类别出现的频率
    5) 返回前k个点出现频率最高的类别作为当前点的预测分类

    3. 优点

    1、简单有效且容易实现
    2、重新训练代价低
    3、算法复杂度低
    4、适合类域交叉样本
    5、适用大样本自动分类

    4. 缺点

    1、惰性学习
    2、类别分类不标准化
    3、输出可解释性不强
    4、不均衡性
    5、当训练数据集很大时,需要大量的存储空间,而且需要计算待测样本和训练数据集中所有样本的距离,所以非常耗时

    5. K的取值

    K:临近数,即在预测目标点时取几个临近的点来预测。

    K值得选取非常重要,因为:

    1. 如果当K的取值过小时,一旦有噪声得成分存在们将会对预测产生比较大影响,例如取K值为1时,一旦最近的一个点是噪声,那么就会出现偏差,K值的减小就意味着整体模型变得复杂,容易发生过拟合;
    2. 如果K的值取的过大时,就相当于用较大邻域中的训练实例进行预测,学习的近似误差会增大。这时与输入目标点较远实例也会对预测起作用,使预测发生错误。K值的增大就意味着整体的模型变得简单;
    3. 如果K==N的时候,那么就是取全部的实例,即为取实例中某分类下最多的点,就对预测没有什么实际的意义了;

    K的取值方法

    1. 常用的方法是从k=1开始,使用检验集估计分类器的误差率。重复该过程,每次K增值1,允许增加一个近邻。选取产生最小误差率的K。
    2. 一般k的取值不超过20,上限是n的开方,随着数据集的增大,K的值也要增大。
    3. K的取值尽量要取奇数,以保证在计算结果最后会产生一个较多的类别,如果取偶数可能会产生相等的情况,不利于预测。

    6. 总结

    1. KNN对于随机分布的数据集分类效果较差,对于类内间距小,类间间距大的数据集分类效果好,而且对于边界不规则的数据效果好于线性分类器。
    2. KNN对于样本不均衡的数据效果不好,需要进行改进。改进的方法时对k个近邻数据赋予权重,比如距离测试样本越近,权重越大。
    3. KNN很耗时,时间复杂度为O(n),一般适用于样本数较少的数据集,当数据量大时,可以将数据以树的形式呈现,能提高速度,常用的有kd-tree和ball-tree。

    7. KNN vs K-Means

    在这里插入图片描述

    8. 笔试题相关

    1. 一般使用投票法进行分类任务
    2. kNN属于懒惰学习
    3. KNN有训练集做标签但无需训练过程
    4. 距离计算方法不同,效果也可能有显著差别

    9. 参考资料

    机器学习之KNN(k近邻)算法详解
    kNN算法:K最近邻(kNN,k-NearestNeighbor)分类算法

    展开全文
  • K最近邻分类算法原理及实例分析

    千次阅读 2018-12-14 11:26:48
    K最近邻(k-Nearest Neighbor,KNN),指导思想是“近朱者赤,近墨者黑”,由你的邻居来推断出你的类别,KNN分类算法是最简单的机器学习算法。 2、原理 从训练集中找到和新数据最接近的k条记录,然后根据多数类来...

    目录

    • 概述
    • 原理
    • 要点
    • 实例

    1、概述

    K最近邻(k-Nearest Neighbor,KNN),指导思想是“近朱者赤,近墨者黑”,由你的邻居来推断出你的类别,KNN分类算法是最简单的机器学习算法。

    2、原理

    从训练集中找到和新数据最接近的k条记录,然后根据多数类来决定新数据类别,本质上,KNN是使用距离来计算相似度。

    算法涉及3个主要因素:训练数据集;距离或相似度的计算衡量;k的大小。

    已知两类“先验”数据,分别是蓝方块和红三角,他们分布在一个二维空间中;

    有一个未知类别的数据(绿点),需要判断它是属于“蓝方块”还是“红三角”类;

    考察离绿点最近的3个(或k个)数据点的类别,占多数的类别即为绿点判定类别。

    3、要点

    • 计算步骤

            算距离:给定测试对象,计算它与训练集中的每个对象的距离;

            找邻居:圈定距离最近的k个训练对象,作为测试对象的近邻;

            做分类:根据这k个近邻归属的主要类别,来对测试对象分类。

    • 相似度的衡量

           距离越近应该意味着这两个点属于一个分类的可能性越大。

           距离不能代表一切,有些数据的相似度衡量并不适合用距离。

           相似度衡量方法:包括欧式距离、夹角余弦等。

           简单应用中,一般使用欧氏距离,但对于文本分类来说,使用余弦(cosine)来计算相似度就比欧式(Euclidean)距离更合适。

    • 类别判定

           简单投票法:少数服从多数,近邻中哪个类别的点最多就分为该类。

           加权投票法:根据距离的远近,对近邻的投票进行加权,距离越近则权重越大(权重为距离平方的倒数)

    4、实例

    • 使用knn算法来实现对手写数字的自动识别
    展开全文
  • K最近邻(k-Nearest Neighbor-KNN)分类算法属于监督学习算法。1968年,Cover 和 Hart 提出 K最近邻(k-Nearest Neighbor-KNN)分类算法。其核心想法非常简单明了,确定一个临近度的度量, 相似性越高,相异性越低的数据...
  • K最近邻分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一。该算法的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某个类别,则该样本也属于这个类别...
  • 【机器学习】《机器学习实战》读书笔记及代码:第2章 - k-近邻算法 1、初识 K最近邻分类算法(K Nearest Neighbor)是著名的模式识别统计学方法,在机器学习分类算法中占有相当大的地位。主要应用领域是对未知事物的...
  • 关于K最近邻分类算法(KNN)的综述

    万次阅读 2016-11-30 16:59:39
    摘要 作为一种非参数的分类算法, K近邻(KNN)算法是非常有效和容易实现的。 它已经广泛应用于分类、回归和模式识别等 。在应用 KNN 算法解决问题的时候, 要注意两个方面的问题:... K最近邻(k-Nearest Neighbor,KN
  • K最近邻分类算法(KNN)

    千次阅读 2017-02-07 09:46:54
    1、基本思想:给定一个测试样本,计算它与训练集中每个对象的距离,圈定距离最近的k个训练对象作为其最近邻,然后使用这k最近邻中出现次数最多的类标号作为测试样本的类标号值。 每个样本可以表示为(x,x,x,x,......
  • 本文主要目的是通过一段及其简单的小程序来快速学习python 中sklearn的...其主要思想是,如果一个样本在特征空间中的k最近邻的样本中的大多数都属于某一类别,则该样本也属于这个类别,k通常是不...
  • 第九章 KNN(K最近邻分类算法

    千次阅读 2014-09-24 09:50:42
    如:决策树归纳、贝叶斯分类、基于规则的分类、后向传播分类、支持向量机和基于关联规则挖掘的分类等。 惰性学习法(也称为基于实例的学习法):给定一个训练元组,简单地存储它 (或只是稍加处理) ,一直等到给定一...
  • K最近邻(kNN,k-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一。从算法的名字中就可以看出,所谓的k最近邻就只指k个最近的邻居,每个样本都可以用它最接近的k个邻居来代表。 如上图所示,...
  • 执行模糊 k-最近邻 [1] 分类。 [1] JM Keller、MR Gray 和 JA Givens, Jr.,“模糊 K-最近邻算法”,IEEE 系统、人与控制论汇刊,卷。 15,第 4 期,第 580-585 页。
  • k最近邻算法是一种经典的机器学习分类算法,最早由Cover T和Hart P于1967年提出。对原论文感兴趣的同学可下载此论文Nearest neighbor pattern classification。 算法概念 k最近邻,英文名为k-Nearest Neighbor,...
  • kNN算法:K最近邻(kNN,k-NearestNeighbor)分类算法。 KNN算法1、算法概述2、举例3、加深理解4、算法原理5、算法超参数5.1 K值5.2 关于K的取值5.3 距离度量方式5.4 权重计算方式6、算法步骤7、使用KNN实现分类7.1 ...
  • K-最近邻分类算法(KNN)及python实现

    千次阅读 2019-07-29 14:26:43
    title: K-最近邻分类算法(KNN)及python实现 date: 2019-07-20 tags: 机器学习 KNN python categories: 机器学习 KNN python 前言 KNN算法即K-Nearest Neighbor,也是机器学习十大经典算法之一。前...
  • 最近邻分类算法.ppt

    2019-12-16 08:54:34
    K最近邻分类(KNN) 数据挖掘算法 K最近邻分类KNN 该方法的思路是如果一个样本在特征空间中的k个最相近(即特征空间中最邻近)的样本中的大多数属于某一个类别则该样本也属于这个类别即近朱者赤近墨者黑由你的邻居来推断...
  • 基于K最近邻分类的无线传感器网络定位算法
  • KNN算法思想:一个样本决定分类时,依靠其最近K样本的分类结果,来确定该样本的分类结果。 这就引出了KNN算法的三要素:K值选择、距离度量标准、分类决策规则。 距离度量标准: KNN算法的距离度量标准常用的二维...
  • K最近邻(k-Nearest Neighbor,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一。该方法的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个...
  • 算法基础:k最近邻算法

    千次阅读 2019-03-06 21:21:40
    对于k最近邻算法的定义,百度百科是这样给出的:K最近邻(k-Nearest Neighbor,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一。该方法的思路是:如果一个样本在特征空间中的k个最相似(即...
  • K最近邻(kNN,k-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一。其指导思想是”近朱者赤,近墨者黑“,即由你的邻居来推断出你的类别。所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都...
  • KNN最近邻分类算法

    2021-08-14 11:47:18
    如题所示,该算法简称KNN,采用的方法是最近邻,目的是分类。 KNN算法概述 在已有数据集中已将数据分为n类,那么如果此时再进来一个新的数据如何给他分类呢? 应该选取距离他最近的k个邻居(k由你定),选择范围...
  • Python KNN最近邻分类算法

    千次阅读 2016-11-14 23:08:59
    KNN最近邻算法:利用向量之间的距离来分类。 步骤: 第一步:计算新样本与已知分类样本之间的...以下为KNN最近邻分类算法的python代码: 第一部分:KNN分类代码 # -*- coding: utf-8 -*- """ Created on Mon F
  • KNN(K最近邻分类算法个人总结

    千次阅读 2019-06-27 16:37:15
    K最近邻(k-Nearest Neighbor,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一。该方法的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个...
  • KNN即K最近邻,相关的知识内容可以参考 http://blog.csdn.net/luanpeng825485697/article/details/78796773 这里只讲述sklearn中如何使用KNN算法。 无监督最近邻 NearestNeighbors (最近邻)实现了 unsuperv....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,630
精华内容 6,652
关键字:

k最近邻分类算法