k-近邻算法很简单,这里就不赘述了,主要看一下python实现这个算法的一些细节。下面是书中给出的算法的具体实现。

def clssify(inX,dataset,label,k):#计算距离datasetSize = dataset.shape[0]diffMat = tile(inX,(dataSize,1))-datasetsqdiffMat = diffMat ** 2distance = sqdiffMat.sum(axis = 1)sorteddistance = distance.argsort()labelcount = {}for i in range(k):label_index = label[sorteddistance[i]]labelcount[label_index] = sortedlabel = sorted(labelcount.iteritems(),key = operator.itemgetlabelcount.get(label_index,0)+1ter(0),reverse = True)
    return sortedlabel[0][0]

  我学习python没多长时间,一句一句来学习这段代码,发现收获不小。首先来看第一句,dataset.shape[0]返回的是dataset这个array的行数。

tile这个函数非常牛逼啊,我只说它在这个里面是什么意思,我们知道inX是个向量,而dataset是个矩阵,两者之间要进行相减的运算,需要把这个向量也补成一个和dataset有相同行数列数的矩阵,怎么个补法呢。这就要看tile()的第二个参数了,也就是上面的(datasetsize,1),这个参数的意思就是把inX补成有datasetsize行数的矩阵。

假如inX是(1,2) datasetsize =3 那么经过tile()转换后产生了一个这样的矩阵([1,2],[1,2],[1,2])

然后和dataset相减就是根据矩阵的减法进行的。接下来看sqdiffMat.sum(axis = 1)这句,假如sqdiffMat是([1,2],[0,1],[3,4])关注下axis这个参数,它影响了你对矩阵求和时候的顺序,axis=0是按照行求和,axis=1是按照列进行求和,因此这样的求和结果就是([4,7])。至于argsort()这个函数的作用很简单,就是把向量中每个元素进行排序,而它的结果是元素的索引形成的向量。例子如下:

distance是这么个东西------([1,4,3])

经过distance.argsort()之后的结果是([0,2,1])

另外需要主意的一点是sorted()函数返回的是一个list。

转载于:https://www.cnblogs.com/lianwl/p/3314964.html

机器学习实战学习笔记 一 k-近邻算法相关推荐

  1. 统计学方法机器学习实战(二) K近邻算法

    目录 一.前言: 二.理论难点: 距离度量: 欧式距离: 三.数据可视化 四.数据归一化: 五.代码实践: 理论补充 实验一: 海伦约会 实验二 使用sklearn实现knn 六.总结 1.kNN算法 ...

  2. 《机器学习实战》——kNN(k近邻算法)

    原作者写的太好了,包括排版都特别整齐(其中有一个错误之处就是在约会网站配对效果判定的时候,列表顺序不对,导致结果有误,这里我已做出修改) 原作者和出处:http://blog.csdn.net/c40 ...

  3. 机器学习第七章之K近邻算法

    K近邻算法(了解) 7.1 K近邻算法 7.1.1 K近邻算法的原理介绍 7.1.2 K近邻算法的计算步骤及代码实现 7.2 数据预处理之数据归一化 7.2.1 min-max标准化 7.2.2 Z- ...

  4. 01. 机器学习笔记01——K近邻算法 , CV_example

    K近邻算法(K-nearest neighbor,KNN算法) 李航博士<统计学习方法> 最近邻(k-Nearest Neighbors,KNN)算法是一种分类算法 应用场景:字符识别.文 ...

  5. 【机器学习】原理与实现k近邻算法

    文章目录 系列文章目录 前言 一.k近邻算法是什么? 二.使用步骤 1.引入库 2.读入数据 总结 前言 随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了 ...

  6. 机器学习入门 | 【01】K近邻算法

    文章目录 1.K近邻算法[通过你的邻居来判断你的类别] 1.简介 2.电影案例分析 3.api的初步使用 3.1 一般的流程: 3.2 sklearn模块介绍 3.3 API的使用 3.4 距离度量 ...

  7. 统计学习方法笔记(一)-k近邻算法原理及python实现

    k近邻法 k近邻算法 算法原理 距离度量 距离度量python实现 k近邻算法实现 案例地址 k近邻算法 kkk近邻法(kkk-NN)是一种基本分类和回归方法. 算法原理 输入:训练集 T={(x1, ...

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

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

  9. 【20210922】【机器/深度学习】KNN (K近邻) 算法详解

    一.算法概念 KNN, K-near neighbor,即最近邻算法.它是一种分类算法,算法思想是:一个样本与数据集中的 k 个样本最相似,如果这 k 个样本中的大多数属于某一个类别,则该样本也属于这 ...

最新文章

  1. Angular router-outlet占位符层级结构的子节点,运行时是如何插入的
  2. AC_Dream 1224 Robbers(贪心)
  3. bzoj千题计划196:bzoj4826: [Hnoi2017]影魔
  4. python程序设计pdf上海交大_上海交大2011_2012程序设计python期末考试题
  5. 认识 KEGG PATHWAY 数据库
  6. 【软件安装管家】Axure RP 8软件安装包下载地址及安装教程
  7. java工程师读音_JAVA怎么念
  8. chipgenius芯片精灵v4|chipgenius芯片精灵 usb检测工具绿色版v4.00.1024下载
  9. Final Project 期末项目: PySnake
  10. linux挂镜像文件作用是什么,linux下挂载iso镜像文件,linux挂载iso镜像文件
  11. 【笔记总结】高中英语——其二:名词性从句
  12. EBU5502 Database Coursework Specifications
  13. Unity3D在windows10下小问题解决
  14. win10开机自启动在哪里设置(Win10设置开机自启动)
  15. 计算机网络最新复习【太原理工大学】
  16. 现有边缘检测技术和 方法
  17. 使用java理解程序逻辑,知识总结
  18. 国内黑客组织及代表性人物
  19. openHarmony系统简介
  20. Oracle 临时表空间操作

热门文章

  1. Web框架——Flask系列之数据库迁移(二十)
  2. LeetCode 1837. K 进制表示下的各位数字总和
  3. LeetCode 817. 链表组件
  4. 程序员面试金典 - 面试题 17.09. 第 k 个数(set优先队列/DP)
  5. LeetCode 994. 腐烂的橘子(图的BFS)
  6. python读取html文件正则替换_Python正则获取和过滤或者替换HTML标签的方法说明
  7. 动态规划算法实验报告_强化学习之动态规划算法
  8. c++ qt qlistwidget清空_Qt编写控件属性设计器12-用户属性
  9. 苹果台式机_苹果史上最强台式机来了:顶配售价45万
  10. 有钱可以多任性?OpenAI提出人肉模型训练,文本摘要全面超越人类表现!