k-近邻算法采用测量不同特征值之间的距离方法进行分类,它的工作原理很好理解。

简单来说就是离x最近的k个点决定了x归为哪一类。
具体点说:

1.假设有一一个带有标签的样本数据集(训练样本集) ,其中包含每条数据与所属分类的对应关系。
2.输入没有标签的新数据后,将新数据的每个特征与样本集中数据对应的特征进行比较。

  • i.计算新数据与样本数据集中每条数据的距离。
  • il.对求得的所有距离进行排序(从小到大, 越小表示越相似)。
  • il.取前k (k一般小于等于20)个样本数据对应的分类标签。

3.求k个数据中出现次数最多的分类标签作为新数据的分类。

通过一个简单的电影类型分类体会k-近邻算法的工作流程

1.先导入模块和数据,一共七组数据。

from numpy import *
import operatordef createDataSet(): #创建二维数据特征和标签group = array([[3,104],[2,100],[1,81],[101,10],[99,5],[98,2],[18,90]])labels = ['爱情片','爱情片','爱情片','动作片','动作片','动作片','未知']return group,labels

2.用knn算法,为每组数据分类,即生成一个分类器。Classify0()函数有四个参数:输入测试集inX、训练集dataSet、分类标签labels,参数k

def classify0(inX, dataSet, labels, k):dataSetSize = dataSet.shape[0]   #获取数据集dataSet的行数diffMat = tile(inX, (dataSetSize, 1))- dataSet   #在列向量方向上重复inX共1次(横向),行向量方向上重复inX共dataSetSize次(纵向)sqDiffMat = diffMat**2      #二维特征相减后平方sqDistances = sqDiffMat.sum(axis = 1)    #所有元素相加distances = sqDistances**0.5             #开方,计算距离sortedDistIndicices = distances.argsort()   #返回distances中的元素从小到大排序后的索引classCount = {}    #定义一个记录类别次数的字典for i in range(k): voteIlabel = labels[sortedDistIndicices[i]]    #前k个类别classCount[voteIlabel] = classCount.get(voteIlabel,0 ) + 1   #字典的get()方法,返回指定键的值sortedClassCount = sorted(classCount.items(), key=operator.itemgetter(1), reverse=True)     #排序#这里python3中用items()替换python2中的iteritems()#key=operator.itemgetter(1)根据字典的值进行排序#key=operator.itemgetter(0)根据字典的键进行排序#reverse降序排序字典return sortedClassCount[0][0]  #返回次数最多的类别

距离计算:采用的是欧式距离公式

3. 测试结果

if __name__=="__main__":#训练集group,labels = createDataSet()print(group)print(labels)#测试集test = [100,20]test_class = classify0(test, group, labels, 3)print(test_class)

输出结果证明点(100,20)被分为动作片:

[[  3 104][  2 100][  1  81][101  10][ 99   5][ 98   2][ 18  90]]
['爱情片', '爱情片', '爱情片', '动作片', '动作片', '动作片', '未知']
动作片

k-近邻算法——电影类型分类相关推荐

  1. k近邻算法_机器学习分类算法之k近邻算法

    本编文章将介绍机器学习入门算法-k近邻算法,将会用demo演示机器学习分类算法. 在先介绍算法时,先回顾分类和回归的区别.像文章分类识别也是这样处理的,如1代表体育,2代表科技,3代表娱乐属于分类问题 ...

  2. 【计算机视觉之三】运用k近邻算法进行图片分类

    这篇文章主要给不知道计算机视觉是啥的人介绍一下图像分类问题以及最近的最近邻算法. 目录 图像分类 1.1 图像分类的原理 1.2 面临的问题 1.3 图像分类任务 最近邻算法 代码实现 L2距离 用k ...

  3. 【机器学习】sklearn机器学习入门案例——使用k近邻算法进行鸢尾花分类

    1 背景 这个案例恐怕已经被说的很烂了,机器学习方面不同程度的人对该案例还是有着不同的感觉.有的人追求先理解机器学习背后的理论甚至自己推导一遍相关数学公式,再用代码实现:有的人则满足于能够实现相关功能 ...

  4. 【机器学习入门】(1) K近邻算法:原理、实例应用(红酒分类预测)附python完整代码及数据集

    各位同学好,今天我向大家介绍一下python机器学习中的K近邻算法.内容有:K近邻算法的原理解析:实战案例--红酒分类预测.红酒数据集.完整代码在文章最下面. 案例简介:有178个红酒样本,每一款红酒 ...

  5. 一文搞懂K近邻算法(KNN),附带多个实现案例

    简介:本文作者为 CSDN 博客作者董安勇,江苏泰州人,现就读于昆明理工大学电子与通信工程专业硕士,目前主要学习机器学习,深度学习以及大数据,主要使用python.Java编程语言.平时喜欢看书,打篮 ...

  6. C++实现的简单k近邻算法(K-Nearest-Neighbour,K-NN)

    C++实现的简单的K近邻算法(K-Nearest Neighbor,K-NN) 前一段时间学习了K近邻算法,对K近邻算法有了一个初步的了解,也存在一定的问题,下面我来简单介绍一下K近邻算法.本博客将从 ...

  7. K近邻算法的Python实现

    作为『十大机器学习算法』之一的K-近邻(K-Nearest Neighbors)算法是思想简单.易于理解的一种分类和回归算法.今天,我们来一起学习KNN算法的基本原理,并用Python实现该算法,最后 ...

  8. K近邻算法:以同类相吸解决分类问题!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:游璐颖,福州大学,Datawhale成员 前言 KNN(k-nea ...

  9. 09_分类算法--k近邻算法(KNN)、案例、欧氏距离、k-近邻算法API、KNeighborsClassifier、及其里面的案例(网络资料+学习资料整理笔记)

    1 分类算法–k近邻算法(KNN) 定义:如果一个样本在特征空间中**k个最相似(即特征空间中最邻近)**的样本中的大多数属于某一个类别,则该样本也属于这个类别,则该样本也属于这个类别. k-近邻算法 ...

最新文章

  1. python常用的工具函数
  2. 读取mysql数据库的数据,转为json格式
  3. 打开word或者office程序报错:Microsoft Visual C++ Runtime Library. Runtime Error!
  4. [acm]HDOJ 1200 To and Fro
  5. [.Net线程处理系列]专题五:线程同步——事件构造
  6. 够狠 | 单点登录三种方式,够狠!够劲爆!
  7. 从0开始学习自动化测试框架cypress(五)总结
  8. C 语言未初始化的局部变量是多少?
  9. J2EE学习笔记(1)
  10. python学习 数据类型之序列
  11. Bat批处理脚本--常用命令
  12. 【基础教程】免疫算法【006期】
  13. STM32学习——矩阵键盘
  14. 时空人文之旅(二):夜话“时空”——从盘古开天辟地说起
  15. mysqldump 备份报 Warning: A partial dump from a server that has GTIDs will by default include the..
  16. 【原创】C#玩高频数字彩快3的一点体会
  17. linux信号11sigtstp,Linux信号(signal)机制
  18. 凌恩生物文献分享|颠覆性的宏基因组新思路,速来get!
  19. 【VB与数据库】机房收费系统开发阶段之登陆
  20. Google Earth更新北京奥运场馆卫星地图

热门文章

  1. wxwidgets mysql_关于wxWidgets控件出现乱码
  2. 欺骗的艺术(内容介绍)
  3. 云存储学习笔记5-FreeNAS搭建
  4. AIoT,构建更佳边缘AI能力
  5. 在逻辑学中,SAP,SEP,SIP,SOP,SaP,SeP分别是什么意思?
  6. 原来满清是宋徽宗的后代!
  7. TC39、ECMA-262、ECMAScript 的一些事儿
  8. EDM支持国内外邮件群发系统源码
  9. simply-ellipsis简单易用,功能强大的tooltip工具
  10. STM32F103ZET6新建标准库的工程