数据分析实战 45 讲
陈旸
清华大学计算机博士
85359 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 49 讲
第二模块:数据分析算法篇 (20讲)
第四模块:数据分析工作篇 (2讲)
数据分析实战 45 讲
15
15
1.0x
00:00/00:00
登录|注册

24丨KNN(上):如何根据打斗和接吻次数来划分电影类型?

今天我来带你进行 KNN 的学习,KNN 的英文叫 K-Nearest Neighbor,应该算是数据挖掘算法中最简单的一种。
我们先用一个例子体会下。
假设,我们想对电影的类型进行分类,统计了电影中打斗次数、接吻次数,当然还有其他的指标也可以被统计到,如下表所示。
我们很容易理解《战狼》《红海行动》《碟中谍 6》是动作片,《前任 3》《春娇救志明》《泰坦尼克号》是爱情片,但是有没有一种方法让机器也可以掌握这个分类的规则,当有一部新电影的时候,也可以对它的类型自动分类呢?
我们可以把打斗次数看成 X 轴,接吻次数看成 Y 轴,然后在二维的坐标轴上,对这几部电影进行标记,如下图所示。对于未知的电影 A,坐标为 (x,y),我们需要看下离电影 A 最近的都有哪些电影,这些电影中的大多数属于哪个分类,那么电影 A 就属于哪个分类。实际操作中,我们还需要确定一个 K 值,也就是我们要观察离电影 A 最近的电影有多少个。

KNN 的工作原理

“近朱者赤,近墨者黑”可以说是 KNN 的工作原理。整个计算过程分为三步:
计算待分类物体与其他物体之间的距离;
统计距离最近的 K 个邻居;
对于 K 个最近的邻居,它们属于哪个分类最多,待分类物体就属于哪一类。
K 值如何选择
你能看出整个 KNN 的分类过程,K 值的选择还是很重要的。那么问题来了,K 值选择多少是适合的呢?
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《数据分析实战 45 讲》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(30)

  • 最新
  • 精选
  • 白夜
    置顶
    曼哈顿距离写错了吧? 应该d=|X1-X2|+|Y1-Y2|吧

    编辑回复: 我之前在微信群里说过这个问题,这个主要是因为后面有个n维空间,所以我定义的两个点分别是(x1,x2,...,xn)和(y1,y2,...,yn)。所以你看到的公式是用|x1-y1|+|x2-y2|,看起来会和我们之前学到的不一样,关键还是在于对点的定义上。你能理解公式的含义即可,另外这里主要是考虑到不光是2维的空间,如果是2维,3维我可以用字母来表示,比如用x,y,z,但是更多的维度,我在文章里是会用x1,x2,...,xn来表示一个点的定义。

    4
    16
  • Python
    老师,能不能推荐一下kaggle上谁的项目能让我们学习。

    编辑回复: Kaggle上有些项目还是不错的 信用卡欺诈交易分类预测 https://www.kaggle.com/mlg-ulb/creditcardfraud 比特币趋势分析 https://www.kaggle.com/mczielinski/bitcoin-historical-data 宇宙中的脉冲星预测 https://www.kaggle.com/pavanraj159/predicting-a-pulsar-star 西班牙高铁票价 https://www.kaggle.com/thegurus/spanish-high-speed-rail-system-ticket-pricing 我列举了几个,Kaggle上有不少项目值得练习和研究,基本上你可以从Datasets和Kernels里面按照Hotness排序,找一下热门的项目,同时如果是初学者,有一些标签也可以参考,比如beginner, tutorial这种的。另外你也可以根据算法来检索比如:SVM, decision tree等

    26
  • Python
    k越少就会越拟合,越多则越不拟合。最后就是为了寻找k的数值

    编辑回复: 对的,K值是个实践出来的结果,不是事先而定的

    9
  • FORWARD―MOUNT
    KNN回归,既然已经知道某部电影的位置了,也就知道接吻次数和打斗次数。还用相邻的电影做回归求接吻次数和打斗次数? 这个表示没懂。

    编辑回复: 一个很好的问题,回归一般是预测某个属性值,这个属性值是连续型的,而不是离散型的。如果是离散型的就变成了分类问题。比如 对于这个待测点的已知属性值,我们先计算这个待测点与已知点的距离,然后选择最近的K个点。这样也就是知道了这个待测点和哪K个已知点最接近。那么这个待测点的未知属性值就等于这K个点的该属性值的平均值

    3
    8
  • 王彬成
    KNN 的算法原理和工作流程是怎么样的?KNN 中的 K 值又是如何选择的? 1、kNN算法的核心思想是如果一个样本在特征空间中的k个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。 2、整个计算过程分为三步: 1)计算待分类物体与其他物体之间的距离; 2)统计距离最近的 K 个邻居; 3)对于 K 个最近的邻居,它们属于哪个分类最多,待分类物体就属于哪一类。 3、我们一般采用交叉验证的方式选取 K 值。 交叉验证的思路就是,把样本集中的大部分样本作为训练集,剩余的小部分样本用于预测,来验证分类模型的准确性,准确率最高的那一个最终确定作为 K 值。

    作者回复: 总结整理的不错

    5
  • 文晟
    老师,那几个距离公式怎么跟别处的不一样,记得课本上是x1-x2而不是x1-y1这种形式

    编辑回复: 这个主要是因为后面有个n维空间,所以我定义的两个点分别是(x1,x2,...,xn)和(y1,y2,...,yn)。对应的公式是用|x1-y1|+|x2-y2|。看起来会和我们之前学到的不一样,关键还是在于对点的定义上。

    2
    5
  • third
    跟谁像,就是谁 计算距离 通过交叉验证的方法,找到较小K,准确还较高的 计算K个近邻, 跟谁多

    作者回复: 对的

    2
  • 贺中堃
    1.找K个最近邻。KNN分类算法的核心就是找最近的K个点,选定度量距离的方法之后,以待分类样本点为中心,分别测量它到其他点的距离,找出其中的距离最近的“TOP K”,这就是K个最近邻。 2.统计最近邻的类别占比。确定了最近邻之后,统计出每种类别在最近邻中的占比。 3.选取占比最多的类别作为待分类样本的类别。 k值一般取一个比较小的数值,通常采用交叉验证法来选取最优的k值。

    作者回复: k值的确定方法常使用手肘法或者轮廓系数,k值一般会先取2并循环增加,直到找到手肘法拐点处的k或者使轮廓系数最大的k。

    1
  • §mc²ompleXWr
    KNN回归:如果某个特征属性未知,我怎么算距离?

    作者回复: 如果这个特征的属性未知值较多,那这一列可以考虑剔除。

    1
  • 滨滨
    kd树的简单解释https://blog.csdn.net/App_12062011/article/details/51986805

    作者回复: 多谢分享

    1
收起评论
显示
设置
留言
30
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部