knn算法概述

Dear 丶 2022-12-31 02:27 216阅读 0赞

数据挖掘算法原理与实践:k-近邻 knn算法概述 201228

educoder 答案

任务描述

本关任务:使用python实现方法,找出目标样本最近的k个样本。

相关知识

为了完成本关任务,你需要掌握:1.knn算法思想,2.距离度量。

knn算法思想

k-近邻(k-nearest neighbor ,knn)是一种分类与回归的方法。我们这里只讨论用来分类的knn。所谓k最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最近的k个邻居来代表。
knn算法的核心思想是如果一个样本在特征空间中的k个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。该方法在确定分类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。knn方法在类别决策时,只与极少量的相邻样本有关。
在这里插入图片描述
如上图,当k=3时离绿色的圆最近的三个样本中,有两个红色的三角形,一个蓝色的正方形,则此时绿色的圆应该分为红色的三角形这一类。而当k=5时,离绿色的圆最近的五个样本中,有两个红色的三角形,三个蓝色的正方形,则此时绿色的圆应该分为蓝色的正方形这一类。

距离度量

我们已经知道,如何判别一个样本属于哪个类型,主要是看离它最近的几个样本中哪个类型的数量最多,则该样本属于数量最多的类型。这里,有一个问题:何为最近?
关于何为最近,大家应该自然而然就会想到可以用两个样本之间的距离大小来衡量,我们常用的有两种距离:

  • 欧氏距离:欧氏距离是最容易直观理解的距离度量方法,我们小学、初中和高中接触到的两个点在空间中的距离一般都是指欧氏距离。
    在这里插入图片描述
    二维平面上欧式距离计算公式:
    在这里插入图片描述
    n维平面上欧氏距离计算公式:
    在这里插入图片描述
  • 曼哈顿距离:顾名思义,在曼哈顿街区要从一个十字路口开车到另一个十字路口,驾驶距离显然不是两点间的直线距离。这个实际驾驶距离就是“曼哈顿距离”。曼哈顿距离也称为“城市街区距离”。
    在这里插入图片描述
    二维平面上曼哈顿距离计算公式:
    在这里插入图片描述
    n维平面上曼哈顿计算公式:
    在这里插入图片描述
    其中,上标圆括号内数字代表第几个样本,下标数字代表样本的第几个特征。

编程要求

根据提示,在右侧编辑器Begin-End处补充代码,实现topK方法。

测试说明

程序会调用你实现的方法,找出目标样本最近的k个样本的标签。如目标样本最近的5个样本为0,0,1,1,1则返回列表[0,0,1,1,1]。若返回结果与真实结果一致则视为通关。

答案

  1. # encoding=utf8
  2. import numpy as np
  3. def topK(i, k, x, y):
  4. '''
  5. input:
  6. i(int):第i个样本
  7. k(int):最近邻样本个数
  8. x(ndarray):数据特征
  9. y(ndarray):数据标签
  10. output:
  11. topK(list):样本i的最近k个样本标签
  12. '''
  13. # *********Begin*********#
  14. # 计算样本到所有样本的距离
  15. # 除样本本身外的最近的k个样本的索引
  16. # 除样本本身外的最近的k个样本的标签
  17. distancee = []
  18. index = x[i]
  19. for j in range(len(x)):
  20. if j == i:
  21. continue
  22. distancee.append((
  23. y[j], sum((index - x[j]) ** 2) ** (1 / 2)
  24. ))
  25. # 除样本本身外的最近的k个样本的索引
  26. distancee = sorted(distancee, key=lambda it: it[1])[:k]
  27. # 除样本本身外的最近的k个样本的标签
  28. # *********End*********#
  29. return [_[0] for _ in distancee]
  30. # *********End*********#

发表评论

表情:
评论列表 (有 0 条评论,216人围观)

还没有评论,来说两句吧...

相关阅读

    相关 KNN算法

    记得读研那会,接触过这个算法,算法原理还是比较容易理解,类似机器学习中的预测,在给定的一堆数据,预测当前节点的分类。计算距离,然后排序,计算最相似的分类。 impor

    相关 knn算法概述

    数据挖掘算法原理与实践:k-近邻 knn算法概述 201228 > educoder 答案 任务描述 本关任务:使用python实现方法,找出目标样本最近的k个样

    相关 KNN分类算法

    KNN分类算法 最简单最初级的分类器,就是将全部的训练数据所对应的类别都记录下来,当测试对象的属性和某个训练对象的属性完全匹配时,便可以对其进行分类 K近邻(k-nea

    相关 kNN算法总结

    一直接触KNN近邻算法,但是一直没有机会系统的总结一下,现在做一下总结,希望加深一下自己对近邻算法的理解。 定义:K-近邻算法采用测量不同特征值之间的距离方法进行分类 优缺

    相关 KNN算法思考

    学习机器学习时,我们可能接触到KNN算法,这是一中间的算法,是利用距离来表征两者之间的相似度。这一算法最经典的应用就是给相似人群做推荐系统。这里对算法内容不做详细解释,只是引发

    相关 KNN算法

    KNN算法即K-近邻算法,KNN的核心思想是通过你的“邻居”来推断出你的类别。 1 K-近邻算法(KNN)原理     k 值取得过小,容易受到异常点的影响   

    相关 KNN算法

    1、kNN算法又称为k近邻分类(k-nearest neighbor classification)算法。 最简单平凡的分类器也许是那种死记硬背式的分类器,记住所有的训练数