第L4周:机器学习|K-近邻算法模型

news2024/11/19 6:29:02
  • 本文为🔗365天深度学习训练营 中的学习记录博客
  • 原作者:K同学啊

任务:
●1. 学习本文的K-邻近算法
●2. 了解 KNeighborsClassifier 函数

一、基本概念

商业哲学家 Jim Rohn 说过一句话,“你,就是你最常接触的五个人的平均。”那么,在分析一个人时,我们不妨观察和他最亲密的几个人。同理的,在判定一个未知事物时,可以观察离它最近的几个样本,这就是KNN(k-近邻)算法。

K-近邻算法是一种基本分类和回归方法。

K-近邻算法,即是给定一个训练数据集,输入一个新的实例,在训练数据集中找到与该实例最邻近的K个实例,这K个实例主要是哪一类别,那么就把该实例分类到这个类中。引用维基百科上的一幅图:

在这里插入图片描述

蓝色方块与红色三角形为训练集中的实例,绿色小圆是新输入的实例,现在在现有实例中取K个离小绿圆最近实例用于判断其类别。

●当K=3时,所取实例在实线圆内,红三角占比最大,将新输入实例归为红三角一类。
●当K=5时,所取实例在虚线圆内,蓝方块占比最大,将新输入实例归为蓝方块一类。

在KNN中存在两个重要问题,一个是K的取值问题,一个是距离计算问题,这里先不做讨论,仅仅引入KNN这个概念,明白它是一个什么东西,在后面文章中我们再对这两个问题进行深入讨论。下文将通过sklearn包来实现KNN。

二、代码实现

我的环境:
●语言环境:Python3.9
●编译器:Jupyter Lab

1.问题简介

背景: 海伦一直使用在线约会网站寻找适合自己的约会对象。尽管约会网站会推荐不同的人选,但她没有从中找到喜欢的人。经过一番总结,她发现曾交往过三种类型的人:

●①不喜欢的人;
●②魅力一般的人;
●③极具魅力的人。

她现在总结好的数据中(即训练集)包含三种特征:

●①每年获得的飞行常客里程数。
●②玩视频游戏所耗时间百分比。
●③每周消费的冰淇淋公升数。

她希望根据现有的数据来判断一个陌生男人会被她归到哪一类。

2.导入数据

数据标签详解:

●0:每年获得的飞行常客里程数。
●1:玩视频游戏所耗时间百分比。
●2:每周消费的冰淇淋公升数。
●3:人物类别(不喜欢的人、魅力一般的人、极具魅力的人)。

import pandas as pd

data=pd.read_table('./L4/datingTestSet2.txt',
                   sep='\t',
                   header=None)

data
0123
0409208.3269760.9539523
1144887.1534691.6739042
2260521.4418710.8051241
37513613.1473940.4289641
4383441.6697880.1342961
...............
995111453.4106270.6318382
996688469.9747150.6697871
9972657510.6501020.8666273
998481119.1345280.7280453
999437577.8826011.3324463

1000 rows × 4 columns

X = data.iloc[:,:3]
y = data.iloc[:,3]

3.将数据集分成训练集和测试集

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, 
                                                    test_size=0.25, 
                                                    random_state=3)

4.K-邻近算法模型

from sklearn.neighbors import KNeighborsClassifier

knc = KNeighborsClassifier()
knc.fit(X_train, y_train)
  1. 结果预测
data["预测结果"] = knc.predict(data.iloc[:,:3])
data.head(10)
0123预测结果
0409208.3269760.95395233
1144887.1534691.67390422
2260521.4418710.80512413
37513613.1473940.42896411
4383441.6697880.13429613
57299310.1417401.03295511
6359486.8307921.21319233
74266613.2763690.54388033
8674978.6315770.74927811
93548312.2731691.50805333
  1. 模型评分
scoreK = knc.score(X_test,y_test)

print(scoreK)

代码输出:

0.796

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2177604.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

KEIL中出现encountered an improper argument的解决办法

当使用KEIL软件时,有时候会遇见encountered an improper argument的错误提示框。如下图所示: encountered an improper argument翻译为:遇到不恰当的争论。出现该错误的原因一般有以下几种: 1、在我们在调试完结束时候&#xff0c…

跨学科数字教学知识库的建设挑战与解决方案

随着知识经济的不断发展和教育改革的深入,跨学科教学逐渐成为培养具有综合素质和创新能力的关键途径。在这一背景下,搭建跨学科数字教学知识库显得尤为重要。然而,跨学科知识的复杂性和多样性给知识库的建设带来了诸多挑战。本文旨在探讨这些…

JAVA毕业设计185—基于Java+Springboot+vue3+小程序的校园网上商店小程序系统(源代码+数据库)

毕设所有选题: https://blog.csdn.net/2303_76227485/article/details/131104075 基于JavaSpringbootvue3小程序的校园网上商店小程序系统(源代码数据库)185 一、系统介绍 本项目前后端分离(可以改为ssm版本),分为用户、商家、管理员三种角色 1、用户…

体验通义灵码高阶能力:代码生成增强

通义灵码提供了基于企业代码库进行行间代码生成检索增强的能力,在开发者使用通义灵码 IDE 插件的行间代码生成时,可以结合企业上传的代码库作为上下文进行行间代码补全,使代码补全更加贴合企业代码规范、业务特点。 开通通义灵码企业版&#…

C语言:排序(1)

目录 一、排序的概念及应用 排序的概念 排序的运用 二、常见排序算法 插入排序 基本思想 直接插入排序 希尔排序( 缩小增量排序 ) 选择排序 基本思想 堆排序 一、排序的概念及应用 排序的概念 排序:所谓排序,就是使一串记录,按照…

【MySQL实战45讲3】事务隔离

文章目录 事务事务四大特性(ACID) 隔离级别可重复读的使用场景可重复读隔离级别的实现 事务 事务就是要保证一组数据库操作,要么全部成功,要么全部失败。在MySQL中,事务支持是在引擎层实现的。MySQL是一个支持多引擎的…

EasyCVR智慧公园视频智能管理方案:赋能公园安全管理新高度

随着城市化进程的加速,智慧城市建设已成为提升城市管理效率、增强居民生活质量的重要途径。智慧公园作为智慧城市的重要组成部分,其安全与管理水平直接影响着市民的休闲娱乐体验。EasyCVR智慧公园视频智能管理方案,正是基于这一背景应运而生&…

android锁屏界面userActivity自动息屏深入剖析

背景: 近来有有个学员朋友在锁屏画面自动息屏有一些疑问求助马哥这边,大致情况描述如下: 问题1、锁屏画面不停的点击触摸发现锁屏画面会一直常亮,这里他知道锁屏这个window比较特殊,正常其他window在InputDispatcher…

nvm 安装node 报错

Could not retrieve https://npm.taobao.org/mirrors/node/latest/SHASUMS256.txt. Get "https://npm.taobao.org/mirrors/node/latest/SHASUMS256.txt": tls: failed to verify certificate: x509: certificate is valid for *.tbcdn.cn 原因认证过期, 查看nvm安装…

城市大脑:智慧城市的神经中枢——典型实践与经验启示

随着信息技术的飞速发展,智慧城市已成为全球城市转型升级的重要方向。“城市大脑”作为智慧城市的核心引擎,正以其强大的数据处理能力、智能决策支持和跨领域协同优势,引领着城市管理与服务的深刻变革。本文将深入探讨几个具有代表性的“城市…

Sql Developer日期显示格式设置

默认时间格式显示 设置时间格式:工具->首选项->数据库->NLS->日期格式: DD-MON-RR 修改为: YYYY-MM-DD HH24:MI:SS 设置完格式显示:

【2024最新】华为HCIE认证考试流程

HCIE是华为认证体系中最高级别的ICT技术认证,表示通过认证的人具有ICT领域专业知识和丰富实践经验。 HCIE认证方向:最高认证级别HCIE的技术方向有13个 下面以HCIE-Datacom为例给大家介绍一下: HCIE-Datacom认证考试流程: 1.笔试…

PCL 读取并显示obj网格模型

目录 一、概述 1.1原理 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 2.2完整代码 三、实现效果 PCL点云算法汇总及实战案例汇总的目录地址链接: PCL点云算法与项目实战案例汇总(长期更新) 一、概述 本文将介绍如何使用PCL库读…

高级算法设计与分析 学习笔记10 平摊分析

动态表,可以变长。 一溢出就另起一个两倍大小的表。 可以轻易证明把n个数字放进去的时间复杂度是O(n),n n/2 n/4……也就2n,插入数字本身也就是n,加起来最多不超过3n. 这种复杂度究竟是怎么算的?毕竟每次插入复杂度…

visual studio2022添加新项中没有html和css

目录 背景解决过程vs版本正常新建项的方式添加工作负荷添加Node.js开发找到工作负荷的方式 知识扩展与总结工作负荷Web开发在Visual Studio中的特殊性添加或修改工作负荷的步骤 背景 重装的vs2022,开发c#项目,但是打开发现添加新项中没有html,也没有css…

7.3树形查找

7.3.1二叉排序树 1.定义 目的:提供查找删除,插入关键字的速度 二叉排序树的特性: 左子树<根节点<右子树左右字数也分别是一棵二叉树 对二叉排序树进行中序遍历,可以得到一个递增的有序序列 2.二叉排序树的查找 查找从根节点开始,沿分支逐层向下比较的过程 二叉排序…

中国的“地理中心”在哪里?

我国是一个海陆兼备的国家&#xff0c;无论是960万平方公里的辽阔&#xff0c;还是300万平方公里的澎湃。 从南到北&#xff0c;自西向东&#xff0c;跨越了五个时区&#xff0c;涵盖了多种地形和气候。 那么&#xff0c;中国的“地理中心”到底在哪里呢&#xff1f; 大地原…

Azure OpenAI检索增强微调:使用 GPT-4o 对 GPT-4o mini 进行微调,以适应特定领域的应用

定制是关键&#xff01; 生成式人工智能对企业最有影响力的应用之一是创建自然语言界面&#xff0c;这些界面经过定制&#xff0c;可以使用特定领域和用例数据来提供更好、更准确的响应。这意味着回答有关特定领域的问题&#xff0c;例如银行、法律和医疗领域。 我们经常谈…

【Linux第五课-进程上】PCB内部属性、标识符、进程状态、Linux下的进程状态、进程的优先级、Linux进程的调度与切换

目录 体系结构 -- 硬件上操作系统 -- 软件上进程PCB内部属性1、在linux里面看程序2、标识符获取程序的标识符父进程标识符 PPID查看进程的另一种方法通过系统调用创建进程 - fork杀掉一个进程for循环创建多个代码 3、进程状态进程排队 - 队列教程上关于进程状态表述运行阻塞&am…

ubuntu2204操作系统使用可执行文件方式安装docker-compose记录

文章目录 前言一、版本信息二、操作步骤2.1 确认版本2.2 下载部署2.官网参考3.docker-compose版本 总结 前言 记录一下在ubuntu操作系统上使用下载可执行文件方式部署docker-compose的记录。 一、版本信息 操作系统版本&#xff1a; docker-compose版本&#xff1a; 备注&…