本章主要内容:
- k-临近算法是通过对象本身的特征将对象划分到某一类型中去,比如电影中的题材类型的分类是,可能就会考虑到电影中出现的镜头出现的次数的多少将电影划分为动作电影,爱情电影等等,本次的随笔参考了《机器学习实战》中第二章节,将电影自动进行分类。
- 从文本文件中解析和导入数据
- 使用matplotlib创建散点图
- 归一化数值
言归正传,首先介绍一些关于K临近算法(KNN):
- 工作原理
存在已知的数据集,并且已知的数据集中的每个数都有标签,也就是说我们知道已知数据集的每个元素的分类情况,在输入新的没有标签的数据之后,将新的数据的每个特征与样本集中的数据特征进行比较,然后算法提取样本集中特种最相近的数据的分类标签。
2. 电影的事例
电影名称 | 打斗镜头 | 亲昵的镜头 | 电影类型 |
California man | 3 | 104 | 爱情片 |
He's not really inot dudes | 2 | 100 | 爱情片 |
BeautifulWomen | 1 | 84 | 爱情片 |
Kevin longblade | 101 | 10 | 动作片 |
Robo slayer 300 | 101 | 5 | 动作片 |
Apple II | 98 | 2 | 动作片 |
?某个电影 | 18 | 90 | 未知 |
从表中可以看到不同分类的电影,其中的分类信息也是很明确的,但是未知电影与样本集的其他电影的距离,分别为20.5,18.7,19.2,115,3,117,4,118.9。可以找到K个距离最近的电影,假设k=3,则最近的距离的电影为C,H, B三个,,按照knn临近算法,距离最近的三部电影的类型决定了未知电影的类型,而这三部全是爱情片,因此我们可以从中推断未知电影史爱情片。
3. 上个例子中的knn算法的实现
(1) 计算已知类别数据集中的点与当前点的之间的距离;
(2) 按照距离的递增一次排序;
(3) 选取与当前点距离最小的k个点;
(4) 确定前k个点所在的分类的出现频率;
(5) 返回前k个点出现频率最高的类别的作为当前点的预测类别。
4. 下一博文将把python作为主要语言进行语法展示,将整个功能用python语言进行实现。
自己按照书上的讲解,进行简单的描述,有大段的内容是来自书本上,本文就是想把自己的一个思路理清楚,同时相当于把笔记做好了,贵在坚持。