分享好友 最新动态首页 最新动态分类 切换频道
机器学习系列一之 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 都是新学的语言。暂时更新到这里。后面会继续更新,不好意思了,各位大佬们。 
























最新文章
01.Portainer-容器界面化管理工具
工欲善其事,必先利其器。 以前总喜欢自己搭建一些好玩的服务,如Jellyfin,NextCloud等等,刚开始原生搭建时每次都要环境版本折腾一些时间,例如jdk,数据库,多个服务各自依赖的版本又有不同
iOS旧版App下载教程及App推荐
在最新的iTunes 版本当中,苹果将App Store从iTunes当中完全删除,用户只能够通过手机上的App Store下载应用,这对于iOS11用户来说是一个不友好的设定,这些用户无法再通过iTunes电脑版下载iOS软件。对于如此激进的设定,显然不能够让全部
AI巨头竞逐数字宇宙构建技术
2024年12月4日,技术界迎来了一项新的里程碑:发布了其名为Genie 2的AI系统,实现了从一张静态图片到一个可交互的3D世界的转变。虽交互时间短暂,但其中的细节精细度与交互流畅性都达到了前所未有的水平。现行构建数字宇宙的主要技术路线包
gradle docker plugin
Docker Prepare Gradle插件 这是一个gradle插件,您可以在项目中使用它来准备Spring Boot jar作为映像运行。 这个插件超越了简单ADD荷兰国际集团的春天启动的jar / war文件到Dockerfile 。 这个插件将创建一个自以为是的Dockerfile和登台目
CentOS 7 Docker安装部署Go Web
Docker 是一种容器技术,它部署简单,能很好的进行服务隔离,生成镜像,Push到镜像仓库,其他机器一键拉取部署。Docker分为社区版CE和企业版EE,社区版是免费提供给个人和小型团队使用,企业版会提供额外的收费服务。CentOS 7使用Yum安装Do
AI绘画:P图如此丝滑,OpenAI上线ChatGPT图像编辑功能,DallE-3绘画如此简单
大家好我是极客菌,用ChatGPT的DallE-3进行AI绘画对很多人来说是一个门槛很低的选择,现在OpenAI又重磅上线了图像编辑器功能(DallEeditor),可以很方便的对图片的局部进行修改,而且支持中文,主打一个功能
bt游戏盒子下载手机版
《bt游戏盒子手机版》是一款提供BT破解游戏的游戏盒子。这款软件有着当下最热门、最火爆。最好玩的变态版游戏,各位玩家还能在其中了解到各个游戏的信息、资源、视频等等;更会提供给各位伙伴们最为贴心、优质的游戏服务,精选游戏让你玩到
2024年腾讯云双十二尾声,新客户特惠:8核32G轻量服务器630元3个月!
​​2024年腾讯云双十二尾声,新客户特惠:8核32G轻量服务器630元3个月!腾讯云2024年双十二大促最后几天,都知道云产品每年都涨价,错过优惠不再有!腾讯云有优惠活动吗?2024年末腾讯云双十二大促活动,云服务器价格多少钱?2024年腾讯云
DIY手工,你猜毒液上了谁的身? #手工diy #手工制作
{{if !data.isVip && data.isActText}}{{else if !data.isVip && !data.isActText}}{{else}}{{if !data.isNormalVip}}{{if data.expiredVip && data.isActText}}{{else if data.expiredVip && !data.isActText}}{{else}}{{/if}}{{else if d
4499游戏盒app下载
4499游戏盒app是一款功能丰富的棋牌游戏中心,无需注册,无需充值,安装后即可立即游戏,数十款经典棋牌游戏任你畅玩,真人在线实时对局,欢乐不停歇。喜欢棋牌类游戏的朋友赶快来下载体验吧。手机扫一扫利用你手机上的扫码软件,扫描二维
相关文章
推荐文章
发表评论
0评