分享好友 最新动态首页 最新动态分类 切换频道
机器学习系列一之 kNN(k近邻算法理解和实现)
2024-12-26 08:26

推荐一本好书(机器学习实战,别问我问什么,那么好的内容,为什么不一起入坑呢。欢迎fold 代码哦,python 代码

机器学习系列一之 kNN(k近邻算法理解和实现)

https://github.com/unnunique/MachineLearning/tree/master/Ch02

https://github.com/unnunique/unnunique.github.io/tree/master/ScalaDemo/src/main/scala/com/sydney/dream/classdefine

需要书籍: 请留言,留下邮箱

转载请注明出处哦

大体上机器学习分为分类和回归,有监督学习和无监督学习。kNN 属于监督学习和分类算法模块。

在一大堆数据集合中,每一数据都存在自己的标签,即,每一数据都属于一个分类。当我们输入没有分类的新数据的时候,将新数据和数据集合中的每一数据进行比较,然后计算新数据离哪些数据最相近(把原始数据分布在坐标轴上,计算新数据和原始数据的距离)。距离计算好后,我们选取k个最相近的数据,这个就是kNN 中k 的来源。一般上k不大于20,。k个数据中出现最多的分类,即为kNN 算出来的新数据的分类。

我们以kiss 次数和打斗次数来区分是动作电影还是动作电影。

来接一波图和数据。

假如我们有一个位置的电影,问号脸?我们如何来区分他是爱情电影还是动作电影。

我们来计算他距离其他电影的距离。

例如(18-98)**2 +(90-2)**2, 然后开方。

比如算的的距离最近的三个是Robo Slaye 3000, Kavin Longblode, Califonia Ma, 则起是动作片。(没有计算过哈哈。

接下来我们用scala 以及python 来各自实现一波

写代码嘛,先来一段注释,然后请佛祖开光,这个还是很皮很开心的

 

然后秀一波实验,感觉python 写起来完全像是在写脚本,然后,一个最简单的例子,就这么华丽丽的实现了。

 
 

直接上代码实现吧,具体流程和上面python 大致一样,写Scala 好烧脑,哎。

 
 

先来简单过一下需求背景。

某都市杭州大龄单身妹纸小百合在某百合相亲网站上进行相亲,寻求高富帅。小百合发现自己相过的对象可以分为三类

1,十分喜欢的人

2,一般般喜欢的人

3,不喜欢的屌丝

这三类人,可以用下面的特征数据进行衡量

1,每年飞灰机的里程数。

2,玩游戏的次数。

3,每周吃掉的冰淇淋的公升数。

这些数据保存在txt 文件中类似如下(数据可以在附件中获取哦,亲

32404 3.513921    0.9918541
27268 4.398172    0.9750242
5477 4.276823     1.174874 3

从左到右分别表示

飞行的里程数, 玩游戏次数 冰淇淋公升数  喜欢程度(1,非常喜欢, 2, 一般般, 3,不喜欢

,让我们借鉴电影的例子,来实现相关的程序。

首先啦,需要从文件中读取数据。

然后把读取到的数据转化为矩阵。

函数如下(包含kNN 近邻算法的实现

 

接下来考虑一个问题,如下是4组数据

我们来计算第三组和第四组的距离

(0-67)**2 + (20000-32000)**2 + (0.1-1.1)**2,然后开方。

Oh my good(夸张脸, 有没有发现什么。 每年飞行常客里程数对最终结果的影响远远大于其他两个特征。所以计算出来的结果,可能只与每年 飞行常客的里程数有关。

为了解决这个问题: 

我们使用一些技巧,把这些数据都转换为0到1之间的数据。

专业上叫做归一化数据

我们利用如下的公式,把数据转换到0到1之间

newValue = (oldValue - min)/(max - min)

在上一步,我们已经把数据从文件中读取,并且赋给了矩阵datingDataMat。接下来,我们就用上面这个公式,把这个矩阵中的数据进行归一化(皈依佛门

 

好了,到现在为止,我们改准备的都准备了,数据已有,数据已经皈依佛门,算法已有,接下来我们进行测试

测试代码如下

 

测试结果

the classifier came back with: 3, the real answer is : 3
the classifier came back with: 2, the real answer is : 3
the classifier came back with: 1, the real answer is : 1
the classifier came back with: 2, the real answer is : 2
the classifier came back with: 1, the real answer is : 1
the classifier came back with: 3, the real answer is : 3
the classifier came back with: 3, the real answer is : 3
the classifier came back with: 2, the real answer is : 2
the classifier came back with: 1, the real answer is : 1
the classifier came back with: 3, the real answer is : 1

the total error rate is: 0.050000

错误率为百分之五,效果还行。

最后,来一段python 代码模拟约会网站优化

交互式模拟相亲网站过滤过程

 
 

我比较倾向于直接进行上代码,所以nobb 了。

写得有些累,scala 和python 都是新学的语言。暂时更新到这里。后面会继续更新,不好意思了,各位大佬们。 
























最新文章
SEO快速提升秘籍,高效网站排名策略揭秘
快速SEO排名方法:优化网站结构,提高关键词密度;构建高质量外链,提升网站权重;定期更新原创内容,增强用户体验;合理布局内部链接,优化网站流量。遵循这些秘诀,高效提升网站排名。随着互联网的不断发展,搜索引擎优化(SEO)已经成为
网上商城小程序怎么弄
小程序电商平台开发,saas小程序商城的优点是价格低,无需任何技术以及代码基础,只要你会使用电脑和手机,就可以轻松掌握系统的使用。01、小程序制作流程02、微信小程序开发多少钱03、微信小程序开通需要什么资质01小程序制作流程第一步:
科普磁盘重装系统步骤详解快速提升电脑流畅度
简介:如今,随着科技的飞速发展,电脑系统的流畅性直接影响到用户的使用体验。当电脑变得缓慢,大多数人会尝试通过系统重装来恢复原始性能。本文将详细介绍如何通过重装系统快速提升电脑的流畅度。工具原料:系统版本:Windows 11品牌型号
营销工作计划汇编
营销工作计划汇编(精选5篇)  整个活动整体宣传以重点区域的主流电视,平面,网络广播等媒体的新闻报道为主,全面覆盖。针对活动的筹备进度,分阶段进行详细报导。  一、预热阶段:  1、时间:活动开始前10天时间9.4日  2、宣传目
人事薪酬专员需要掌握哪些技能来解决复杂问题?
在这个信息化和数字化不断发展的时代,专员不仅需要处理常规的薪资计算和发放,还需具备多方面的技能以应对复杂问题。本文从数据分析、薪酬结构设计、法律合规、沟通技巧、问题解决能力及技术工具使用等方面进行探讨,帮助你全面了解并提升
零基础打造高效网站,网站搭建与服务器配置全攻略
从零开始,本指南全面解析网站搭建与服务器配置过程。涵盖基础环境搭建、服务器优化技巧,助您打造高效、稳定的网站。涵盖DNS解析、安全设置、性能调优等方面,让您的网站快速上线,安全稳定运行。网站构建服务器配置在互联网飞速发展的今
用AI一键生成超逼真美女写真,带你体验最火的AI生图神器!
Artbreeder:这是一个基于GAN(生成对抗网络)技术的AI绘图工具,允许用户通过混合不同图片生成新的合成图。其最大的优势在于用户能够通过简单调整各种参数(如头发颜色、画风等)来创造自己独特的美女形象。然而,该工具对于新手而言,界
Win11 24H2用户遭遇12月更新难题:安装受阻、性能下滑、蓝屏频发
近期,科技界关注到Windows 11 24H2版本的用户在社交媒体和论坛上纷纷反馈,关于12月累积更新KB5048667存在一系列问题,引发了广泛讨论。据Windows Latest的报道,这一更新似乎并未如预期般顺利,反而给用户带来了不少困扰。首要问题在于安
科大讯飞董事长称国内很多模型已对标ChatGPT4
科大讯飞董事长称国内很多模型已对标ChatGPT46月27日,科大讯飞在北京展示了他们的最新成果——讯飞星火大模型V4.0,这款模型在医疗、教育、商业等多个领域均有实际应用,并且依托于名为“飞星一号”的强大国产计算平台进行训练。刘庆峰,
苹果将推新款手机产品 外观大变
苹果将推新款手机产品 外观大变据熟悉苹果公司计划的消息人士透露,苹果公司计划在明后两年推出一款全新的iPhone手机。这款新机的外观与现有机型相比有了较大的改变,售价也将比Pro机型更为亲民。据了解,这款新机将采用简化的摄像系统以降
相关文章
推荐文章
发表评论
0评