导言
最近在学习《机器学习实战》这本书,希望把学到的机器学习知识能够应用下来。所有的代码都在我的github的mllearning仓库中。本章记录学习KNN算法以及应用。
[TOC]
数学原理(主要参考)
KNN近邻算法
K-近邻算法概述
工作原理
采用测量不同特征值之间的距离进行分类。工作原理:存在一个样本数据集合,并且样本集中每个数据都存在标签,即知道样本集中每一数据与所属类别的对应关系。输入一个没有标签的数据,计算新数据的每一个特征和样本集中数据对应特征,然后根据算法提取出样本集中特征最相似的数据的分类标签;通常,我们只选择样本集中前K个醉相思的数据,即为KNN中的K值。通常K为不超过20的整数。
具体例子
对电影数据进行分类。具体数据格式如表1.1所示:
每部电影中的打斗镜头数、接吻镜头数以及电影类型评估 | |||
---|---|---|---|
电影名称 | 打斗镜头 | 接吻镜头 | 电影类型 |
California Man | 3 | 104 爱情片 | 爱情片 |
He’s Not Really into Dudes | 2 | 100 | 爱情片 |
Beautiful Woman | 1 | 81 | |
Kevin Longblade | 101 | 10 | 动作片 |
Robo Slayer 3000 | 99 | 5 | 动作片 |
表1.1 |
我们选取每部电影中的打斗镜头和接吻镜头作为特征。通过计算未知电影与样本集中其他电影的距离。如图1.1
图1.1
得到所有的距离,按照递增排序,可以找到k个距离相近的电影。假设距离是3,我们得到距离最小的三部电影是He’s Not Really into Dudes、Beautiful Woman和California Man。三部电影全是爱情片,因此我们判断未知电影是爱情片。
代码实现