前言
此文是《机器学习实战》的读书笔记的第一篇,介绍该书中讲解的第一个机器学习算法:k-邻近算法。
算法原理
将输入数据的每个特征数据与训练样本集对应的特征数据进行比较,从而提取出样本集中特征最相似(即最邻近)的 k 个数据,将这 k 个数据中比例最高的分类标签作为输入数据的分类标签。
由于每个训练样本数据都是有标签的,所以 kNN 算法是监督学习的一种算法。
举例说明
假设有一组电影分类的样本数据集,根据电影中打斗镜头数和接吻镜头数的不同,被区分为动作片和爱情片。
有如下 7 部电影样本数据,其中 6 部已知类型,1 部未知类型。我们希望从这 6 部电影中找到某种规律,从而预测未知类型的“电影 7”属于什么类型。
电影名称 | 打斗镜头数 | 接吻镜头数 | 电影类型 |
---|---|---|---|
电影 1 | 3 | 104 | 爱情片 |
电影 2 | 2 | 100 | 爱情片 |
电影 3 | 1 | 81 | 爱情片 |
电影 4 | 101 | 10 | 动作片 |
电影 5 | 99 | 5 | 动作片 |
电影 6 | 98 | 2 | 动作片 |
电影 7 | 18 | 90 | ? |
将上面样本数据在图中表示出来:
图中 6 个黑色的点表示上面样本数据集中的 6 部已知类型的电影,其中 3 部爱情片,3 部动作片。红色的点表示我们将要预测的未知类型的“电影 7”。
根据 kNN 算法原理,我们需要首先计算出图中红色点与所有黑色点的距离。大家都还记得计算两个点之间的距离公式吧。
如果点 1 记为(x1,y1),点 2 记为(x2,y2),那么点 1 与点 2 的距离为:
\sqrt{(x1-x2)^{2} + (y1-y2)}
\sqrt{(x1-x2)^{2} + (y1-y2)^{2}}
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于