Python实现kNN算法


1. 原理

k-最近邻: kNN(k-NearestNeighbor)分类算法机器学习中最简单的分类方法之一。所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代表。
k-NN算法的核心思想是如果一个样本在特征空间中的k个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。该方法在确定分类决策上只依据最邻近k个样本的类别来决定待分样本所属的类别。 kNN方法在类别决策时,只与极少量的相邻样本有关。由于kNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,kNN方法较其他方法更为适合。

  • 优点: 简单,易于理解,无需训练,对异常值不敏感。
  • 缺点:计算时间和空间复杂度高。

2. 算法流程

  • 准备数据及数据预处理(类型转换,归一化等)
  • 计算及分类
    • 选择一种距离计算方式, 计算当前样本和所有数据集样本的距离
    • 按照距离递增次序进行排序, 选取与当前距离最小的 k 个点
    • 对于离散分类, 返回 k 个点出现频率最多的类别作为预测分类; 对于回归, 返回 k 个点的加权值作为预测值

3. python代码实现及注释

#导入相关包
import numpy as np#创建数据集
def creatDataset():trainSet=np.array([[0,0],[0.1,0],[1.0,1.0],[1.0,1.1]])labels=['A','A','B','B']return trainSet,labels#k-NN算法分类
def Classify(x,trainSet,labels,k):#计算距离diff=(trainSet-x)**2dist= (diff.sum(axis=1))**0.5#对距离进行排序,升序sortMin=dist.argsort()#字典,用来存放k个相邻样本属于各类别的数量classCount={}for i in range(k):      #统计各类别数量classCount[labels[sortMin[i]]]=classCount.get(labels[sortMin[i]], 0)+1#对字典按值排列,降序classCount=sorted(classCount.items(), key = lambda x:x[1], reverse = True)#返回,数量最多的类别return classCount[0][0]if __name__ == "__main__":#测试样本x=[1,1.2]#调用函数分类X,Y = creatDataset()result=Classify(x,X,Y,2)#输出分类类别名print(result)

Python实现kNN算法相关推荐

  1. Python实现KNN算法(鸢尾花集)

    不同颜色的鸢尾花花语不尽相同,蓝色鸢尾花语是精致的美丽,红色鸢尾花的花语代表着热情.适应力强.紫蓝色鸢尾花花语代表着好消息.想念你.黄色鸢尾花的花语代表着友谊永固.热情开朗,白色鸢尾花花语代表着纯真. ...

  2. 用Python实现KNN算法(从原理到代码的实现)

    用Python实现KNN算法(从原理到代码的实现) 环境 1.Pycharm 2.python3.6 声明:本栏的所有文章皆为本人学习时所做笔记而整理成篇,转载需授权且需注明文章来源,禁止商业用途,仅 ...

  3. python实现KNN算法在电影分类中的应用

    使用python实现KNN算法在电影分类中的应用 代码如下: import numpy as np import operator""" 使用KNN算法对电影进行分类 K ...

  4. ML一:python的KNN算法

    (1):list的排序算法: 参考链接:http://blog.csdn.net/horin153/article/details/7076321 示例: DisListSorted = sorted ...

  5. 原生Python实现KNN算法,并用鸢尾花(iris)数据集测试

    用原生python语法实现K近邻算法,了解K近邻法的实际操作内核,并用自带鸢尾花的集合验证K近邻算法,并掌握运用散点图的绘制 先对KNN算法做了解: 源代码获取: https://github.com ...

  6. python的knn算法list_机器学习实战学习笔记1——KNN算法

    一.KNN算法概述: 1.KNN算法的工作原理是: (1)存在一个训练样本集,并且知道样本集中每一数据与所属分类的对应关系,即每个数据都存在分类标签. (2)若此时输入不带标签的新数据之后,将新数据的 ...

  7. 用python实现KNN算法对鸢尾花的分类

    一.KNN算法 邻近算法,或者说K最近邻(kNN,k-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一.所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接 ...

  8. 手写体识别python,python使用KNN算法手写体识别

    本文实例为大家分享了用KNN算法手写体识别的具体代码,供大家参考,具体内容如下 #!/usr/bin/python #coding:utf-8 import numpy as np import op ...

  9. python实现KNN算法并可视化展示

    话不多说,直接上代码,本代码采用的是鸢尾花数据集,来实现KNN算法 import matplotlib.pyplot as plt import matplotlib as mpl import pa ...

最新文章

  1. radioGroup中radiobutton不能互斥问题
  2. Apache模块开发
  3. 特征级融合_更丰富的卷积特征用于目标边缘检测(文末附有论文及源码下载)...
  4. 使用ajax预加载图片
  5. 散列表查找失败平均查找长度_Python数据结构与算法56:排序与查找:冲突解决方案...
  6. 第一个Appium脚本
  7. day20 Python 高阶函数,函数,嵌套,闭包 装饰器
  8. 使用JavaScript(jQuery或Vanilla)选中/取消选中复选框?
  9. Unity直接导出Android Apk包环境配置
  10. CPU内部实现“加,减,乘,除”过程
  11. 如何将文件从iPhone或iPad空投到Mac计算机?
  12. 选择服务器系统,服务器系统选择
  13. app开屏广告实现——借助webview和原生fetch请求实现
  14. 1. 简明误差卡尔曼滤波器(ESKF)及其推导过程
  15. FastAPI 教程翻译 - 用户指南 26 - 安全性
  16. 2020 给你 8 个接私活的网站
  17. 洛谷 P3387(缩点后+处理 )
  18. 怎样将pdf压缩得很小?如何把pdf压缩到最小?怎么把pdf压缩到最小?如何把pdf文档压缩变小?怎么将pdf文档压缩至更小?怎么把pdf压缩到最小方法软件网站有哪些?
  19. 使用beautifulSoup
  20. 2022暑期项目实训(一)

热门文章

  1. oracle学习笔记(十八) PL/SQL 游标
  2. ubuntu截图软件deepin scrot
  3. net_conv1_conv2_conv3_conv4_py
  4. 我的python渗透测试工具箱之自制netcat
  5. python format
  6. [题解]POJ 3683 Priest John's Busiest Day
  7. javascript 运算优先级
  8. [项目管理]团队管理中的起点:尊重
  9. linux的管道 |和grep命令以及一些其他命令(diff,echo,cat,date,time,wc,which,whereis,gzip,zcat,unzip,sort)...
  10. vue深究第一弹:computed与watch的异同