资讯专栏INFORMATION COLUMN

机器学习从入门到放弃之KNN算法

XUI / 1229人阅读

摘要:好了,废话不多说,马上开讲第一个机器学习的算法,算法。另外,本文题目是机器学习从入门到放弃之算法而非机器学习从入门到放弃算法这样,因为如果是后者,某日我要弃坑就会触发我的强迫症,而前者并不会,哈哈哈。

谈起机器学习,真是令人心生向往同时又让人头痛不已。

心生向往是因为机器学习在很多方面都已经展现出其魅力,在人工智能的领域比如说AlphaGo,计算机视觉领域的人脸识别,车牌识别,靠近生活的有推荐系统,用户画像情感分析等等,都或多或少用到机器学习的知识。其中大部分应用是相当能满足程序员心中的极客精神的

但令人头不痛不已的当你去涉足机器学习这个领域的时候,你会发现其中涉及大量的数学知识,这对很多程序员来说都很不友好。

但没关系,程序员应该是工程师,而不是科学家,我们要做的是学会把理论落实成为生产力。

因此本系列将尽可能降低数学的描述(避免一长串的数学证明)来描述机器学习算法的基本原理。如果需要对算法进行深入了解和学习,那么读者还是应该学习算法背后的数学原理。

好了,废话不多说,马上开讲第一个机器学习的算法,KNN算法。

KNN算法 算法背景

假设,你是一个电影公司的影片分类员,你需要从一大堆影片里面分类出武侠片爱情片,用肉眼一部部看肯定不科学,现在有一个程序能识别影片中的镜头,聪明的你想到了又么么哒的场面的一定是爱情片,有厮打场面的就是武侠片。

其中,么么哒厮打两种场面则称为特征

你把这两种特征放入程序里面一分类,咦,怎么错这么多?!

然后,你决定打开其中一两个错误的结果看看……

咦,刚刚还刀剑相向的女主角怎么怎么和男主角吻了起来,卧槽,那可是你的杀父仇人啊喂,哦,原来男主角是被奸人所逼……

咦,这爱情片男女主角怎么吻着吻着就厮打起来,卧槽,还要脱衣服,天啊,我还是个孩子……

你终于明白,错误的原因是因为无法将么么哒厮打作为单一特征,这时,你明白需要重设设计分类的标准了。

算法设计

牛逼的你发现,虽然无法将么么哒厮打作为唯一标准,但是是可以作为参考的。比如说,在武侠片中虽然也会出现么么哒的镜头,但显然厮打镜头仍会占主流。

于是你对以往已经分好类别的电影做出统计,并的做出以下表格。

其中这部分样本又叫做训练集

X=么么哒镜头的数量
Y=厮打镜头的数量
0代表爱情片,1代表武侠片

电影ID X Y 类型
1 10 2 0
2 8 3 0
3 2 6 1
…… …… …… ……

把它画出二维图大概是这样:

黄点代表1类电影的分布,绿色代表0类电影的分布,紫色代表需要分类的电影样本。

那么该怎么判别紫色的那颗点所在的类别呢?

没错,KNN就是最简单粗暴的方法,首先判别紫色点离黄色群体和离绿色群体距离,然后将紫色判断为距离最近的那个群体。

这里具体指出利用KNN的具体步骤:

计算上述图中所有点到达待测点的欧式距离(勾股定理计算)。

选出离待测点最近的K个点,k由用户指定。

计算在这k个点中,各个类型的个数

将个数最多的类型作为预测点的类型。

代码实现

KNN代码实现,收录我的github上,点击一下连接并进入classify目录下就可访问

github

后话

在我的github中会慢慢更新TO DO LIST里提及的算法,但文章因需要语言总结会稍慢一点。

另外,本文题目是机器学习从入门到放弃之KNN算法而非机器学习从入门到放弃(1):KNN算法这样,因为如果是后者,某日我要弃坑就会触发我的强迫症,而前者并不会,哈哈哈。

如有错误,欢迎指点。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/38014.html

相关文章

  • 机器学习入门放弃逻辑回归

    摘要:分类问题回到本系列的第一篇文章机器学习从入门到放弃之算法,在里面有这样的一个问题黄点代表类电影的分布,绿色代表类电影的分布,紫色代表需要分类的电影样本。 分类问题 回到本系列的第一篇文章机器学习从入门到放弃之KNN算法,在里面有这样的一个问题 showImg(https://sfault-image.b0.upaiyun.com/106/875/1068758747-576918491...

    Cympros 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<