文档章节

机器学习之分类算法一:K-近邻算法

东方神剑
 东方神剑
发布于 2015/02/28 16:50
字数 942
阅读 1143
收藏 16

一、K-近邻算法

    K-近邻算法是一种分类算法,分类算法是监督学习算法,监督学习算法和无监督学习算法的最大区别就是监督学习需要告诉机器一些正确的事物,也就是训练数据集,而无监督学习算法则不需要事先准备这些,比如聚类算法。

    所谓的分类,就是要求数据都是离散型(标称型)的,且是数值型的。一下子说这么多概念术语很绕弯哈,数据从大的分类来说分为离散型(标称型)和连续型。离散的就是数据只能在有限的数据集中(比如:是/否,1/2/3,a/b/c,红/白/黑),连续型的属于无限集(比如:全体实数集),对于离散型的适合采用分类器方式也就是分类算法解决,而连续型适合使用线性回归算法解决,但这也不是绝对的。

    K-近邻算法的优点:精度高、对异常值不敏感(个别噪音数据对结果的影响不是很大);缺点是:计算复杂度高、空间复杂度高(当数据维度变大,矩阵求距离运算相当耗时耗资源);适用数据范围:数值型和标称型(求距离需要要求数据是数值类型)。

    我们就用教材中的例子简单说一下该算法的工作原理,假设我有六部电影A(3,104,爱情片)、B(2,100,爱情片)、C(1,81,爱情片)、D(101,10,动作片)、E(99,5,动作片)、F(98,2.动作片),其中第一个数字代表电影中打斗镜头次数、第二个数字代表亲吻镜头次数,那么现在有一个新电影G(18,90,?),它属于爱情片还是动作片呢?其实我们一眼就能判断出来属于爱情片!理由呢?

    K-近邻算法采用的是求距离方式。A(x1,y1,z1)、B(x2,y2,z2),则d=√(x2-x1)2+(y2-y1)2+(z2-z1)2

    计算结果为(20.5,18.7,19.2,115.3,117.4,118.9),按距离由小到大排序,所谓的K-近邻就是选取最相近的K个,比如K=3,也就是(18.7,19.2,20.5)对应的电影是B、C、A,他们中绝大多数都是爱情片(这里其实全部都是爱情片)。所以我们认为G就是爱情片。

    这就是K-近邻算法的工作原理。

    下面再把书中给出的一个示例结合代码给大家说一下怎么去编程。

    假设我在坐标系中有四个点,分别是(1.0,1.1)、(1.0,1.0)、(0,0)、(0,0.1),这四个点分别是属于A、A、B、B类别。我们需要预测(0,0)这个点属于什么类别,实际上(0,0)已经在已知的训练数据集中,这没关系,我们仅仅是做个小测试而已。

    给出的代码与教材中代码一致,不过初学者很难看懂每一步都是什么含义,所以我把一些注释加了上去。具体的运行流程可以参考教材中的步骤。当最终结果返回了“B”,证明我们是对的。

 

 

© 著作权归作者所有

共有 人打赏支持
东方神剑

东方神剑

粉丝 65
博文 126
码字总数 93166
作品 0
朝阳
程序员
基于Python的机器学习算法实现-K-近邻算法(一)

基于Python的机器学习算法实现-K-近邻算法(一) 前言 本博客的内容是基于清华大学李航老师的《统计学习方法》、南京大学周志华老师的《机器学习》以及外国书籍《Machine Learning in Actio...

meiqi0538
05/07
0
0
【Machine Learning】KNN算法虹膜图片识别

K-近邻算法虹膜图片识别实战 作者:白宁超 2017年1月3日18:26:33 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷。然而多数是基础理论知识介绍,缺乏实现的深入理解。本系列文章是作...

伏草惟存
2017/01/03
0
0
机器学习笔记(一):K-近邻算法

首先作为机器学习的入门,我们必须了解的是什么是机器学习.简单来说,机器学习就是把无序的数据变成有用的信息. 作为机器学习领域的先驱,Arthur Samuel在 IBM Journal of Research and Develo...

qq_33952157
02/19
0
0
机器学习入门KNN近邻算法(一)

1 机器学习处理流程: 2 机器学习分类: 有监督学习 1 分类 2 回归 无监督学习 1 聚类 半监督学习 3 K-近邻算法原理 KNN概述 工作原理 入门案例 : 电影类型分析 KNN近邻机器学习案例2 4 KNN用于...

诚实善良小郎君
07/16
0
0
K最近邻(k-Nearest Neighbor) 浅析

K最近邻(k-Nearest Neighbor,KNN)分类算法的核心思想是如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。KNN算法可用于多...

刘敬
05/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

腾讯三大运维开源项目齐聚“OSCAR开源先锋日”

10月20日,腾讯开源三大运维开源项目——TARS、蓝鲸和织云Metis首次集结,参与了由中国信息通信研究院主办、云计算标准与开源推进委员会承办的 “OSCAR开源先锋日”。会上,腾讯开源团队与前...

腾讯开源
7分钟前
0
0
JAVA并发-从缓存一致性说volatile 讲的很好

学过计算机组成原理的一定知道,为了解决内存速度跟不上CPU速度这个问题,在CPU的设计中加入了缓存机制,缓存的速度介于CPU和主存之间。在进行运算的时候,CPU将需要的数据映射一份在缓存中,...

码代码的小司机
25分钟前
0
0
IDEA 调试功能

1.设置断点 选定要设置断点的代码行,在行号的区域后面单击鼠标左键即可。 2.开启调试会话 点击红色箭头指向的小虫子,开始进入调试。 IDE下方出现Debug视图,红色的箭头指向的是现在调试程序...

狼王黄师傅
33分钟前
0
0
Java面试170题

1、面向对象的特征有哪些方面? 2、访问修饰符public,private,protected,以及不写(默认)时的区别? 3、String 是最基本的数据类型吗? 4、float f=3.4;是否正确? 5、short s1 = 1; s1 = ...

lanyu96
39分钟前
0
0
优雅的写出类

前言 虽然现在已经是ES6的时代,但是,还是有必要了解下ES5是怎么写一个类的。 本文详述JavaScript面向对象编程中的类写法,并分步骤讲述如何写出优雅的类。 一、例子 例子为一个轻提示组件T...

peakedness丶
43分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部