机器学习7-K-近邻算法(K-NN)
K-Nearest Neighbors(K-近邻算法,简称KNN)是一种基本的监督学习算法,用于解决分类和回归问题。KNN的核心思想是基于距离度量,在特征空间中找到最近的K个样本,然后使用它们的标签进行决策。以下是KNN的基本概念和工作原理:
工作原理:
- 距离度量
KNN使用欧氏距离或其他距离度量方法来计算样本之间的距离。 - 选择K值
选择一个合适的K值,表示在决策时考虑的最近邻居的数量。 - 投票决策
对于分类问题,根据K个最近邻居中出现最频繁的类别进行决策;对于回归问题,根据K个最近邻居的平均值进行决策。
KNN的优缺点:
优点:
- 简单且易于理解。
- 适用于小型数据集和特征数较少的问题。
- 无需训练阶段,模型保存了整个训练集。
缺点:
- 对于大型数据集,预测速度较慢。
- 对于高维数据,容易受到维数灾难的影响。
- 对噪声和冗余特征敏感。
KNN通常在小型数据集和相对较简单的问题中表现良好,但在处理大型高维数据时可能会面临挑战。在实际应用中,合适的K值的选择和数据的预处理对KNN的性能影响较大。
需求:
预测哪些用户会购买SUV。
代码:
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import confusion_matrix, accuracy_score, classification_report# 加载数据
dataset = pd.read_csv('Social_Network_Ads.csv')
X = dataset.iloc[:, [2, 3]].values
y = dataset.iloc[:, 4].values# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)# 特征标准化
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)# 创建并训练KNN模型
k_value = 5
classifier = KNeighborsClassifier(n_neighbors=k_value, metric='minkowski', p=2)
classifier.fit(X_train, y_train)# 预测
y_pred = classifier.predict(X_test)# 将预测值添加到数据集
dataset['Predicted'] = classifier.predict(sc.transform(X))# 将包含预测值的数据集写入新的 CSV 文件
dataset.to_csv('Social_Network_Ads_KNN_Pred.csv', index=False)# 混淆矩阵及模型评估
cm = confusion_matrix(y_test, y_pred)
accuracy = accuracy_score(y_test, y_pred)
report = classification_report(y_test, y_pred)# 展示混淆矩阵及模型评估结果
print("Confusion Matrix:\n", cm)
print("\nAccuracy:", accuracy)
print("Classification Report:\n", report)
结果:
Accuracy: 0.93
结论:
看文件Social_Network_Ads_KNN_Pred.csv的Predicted列,预测结果基本满意。
相关文章:
机器学习7-K-近邻算法(K-NN)
K-Nearest Neighbors(K-近邻算法,简称KNN)是一种基本的监督学习算法,用于解决分类和回归问题。KNN的核心思想是基于距离度量,在特征空间中找到最近的K个样本,然后使用它们的标签进行决策。以下是KNN的基本概…...
相机图像质量研究(7)常见问题总结:光学结构对成像的影响--镜片固化
系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结:光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结:光学结构对成…...
猫头虎分享已解决Bug || Go Error: cannot convert int to string
博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …...
前端bug手册
JavaScript错误:常见的JavaScript错误包括语法错误、未定义的变量、类型错误等。这些错误可能导致页面无法正常运行或功能无法正常使用。样式问题:前端开发中常见的样式问题包括布局错乱、元素位置不正确、样式覆盖等。这些问题可能导致页面显示不正常或…...
Elasticsearch中Document Routing特性
Document Routing在Elasticsearch中是一种高级特性,它允许用户在索引文档时指定一个路由值。通过这种方式,可以确保具有相同路由值的所有文档都存储在同一个分片中。这对于提高查询效率特别有用,因为它允许查询只针对包含相关文档的特定分片&…...
【Git版本控制 03】远程操作
目录 一、克隆远程仓库 二、推送远程仓库 三、拉取远程仓库 四、忽略特殊文件 五、命令配置别名 一、克隆远程仓库 Git是分布式版本控制系统,同⼀个Git仓库,可以分布到不同的机器上。怎么分布呢? 找⼀台电脑充当服务器的⻆⾊ÿ…...
【Git】Windows下通过Docker安装GitLab
私有仓库 前言基本思路拉取镜像创建挂载目录创建容器容器启动成功登录仓库设置中文更改密码人员审核配置邮箱 前言 由于某云存在人数限制,这个其实很好理解,毕竟使用的是云服务器,人家也是要交钱的。把代码完全放在别人的服务器上面…...
flutter 操作mysql
引入模块 dependencies: flutter: sdk: flutter mysql1: ^0.20.0 mysql helper 的代码 import dart:async; import package:mysql1/mysql1.dart; class MySqlHelper { static const _host localhost; static const _port 3333; static const _user user; static c…...
c++阶梯之类与对象(中)< 续集 >
前文: c阶梯之类与对象(上)-CSDN博客 c阶梯之类与对象(中)-CSDN博客 前言: 在上文中,我们学习了类的六个默认成员函数之构造,析构与拷贝构造函数,接下来我们来看看剩下…...
GitLag所有操作-汇总
1、MAC Git环境设置 跳转 Git通过Token拉代码: 跳转 Git基础操作:拉、put、删 跳转 Git回滚操作: 跳转 Git回滚操作-复杂 跳转 对于Commit但是还没有push的代码,如果回滚: 跳转...
JSch - 配置SFTP服务器SSH免密登录
文章目录 1. 什么是SFTP2. 什么是Jsch以及它的作用3. Linux中配置SSH密钥登录4. sftp服务器认证机制5. publickey和password两种方式登录sftp的API调用6. 代码可以如下改造: 需求:做一个通过ssh免密登录的需求,是基于原先密码登录sftp服务器的…...
RISC-V指令格式
RISC-V指令格式 1 RISC-V指令集命名规范2 RISC-V指令集组成2.1 基础整数指令集2.2 扩展指令集 3 RISC-V指令格式3.1 指令表述3.2 指令格式 本文属于《 RISC-V指令集基础系列教程》之一,欢迎查看其它文章。 1 RISC-V指令集命名规范 前面提到过RV32I,这是…...
Linux 文件比较工具
在Linux系统中,文件比较是一种常见的任务,用于比较两个文件之间的差异。文件比较可以帮助我们找出两个文件的不同之处,或者确定它们是否完全相同。在Linux中,有多种方法可以进行文件比较。 1. diff 在Linux中,diff命…...
【GAMES101】Lecture 17 材质
目录 材质 漫反射 镜面反射 折射-Snell’s Law Fresnel Reflection / Term(菲涅耳项) 微表面模型 各向同性与各向异性 BRDF的性质 测量BRDF 材质 渲染方程中的BRDF描述了物体是如何与光线作用的,而物体的材质决定了它看起来是怎么样…...
数模.matlab画图
一、mesh函数 上图是平常用到的方式 例题: 上图的meshgrid函数相当于上上图的前三个指令(temp,x,y) mash函数: mashc函数: mashz函数: 上图subplot函数的作用是将下标为index的图片放到对应的x&…...
[word] word表格表头怎么取消重复出现? #媒体#笔记#职场发展
word表格表头怎么取消重复出现? word表格表头怎么取消重复出现?在Word中的表格如果过长的话,会跨行显示在另一页,如果想要在其它页面上也显示表头,更直观的查看数据。难道要一个个复制表头吗?当然不是&…...
vue项目开发vscode配置
配置代码片段 步骤如下: 文件->首选项->配置用户代码片段新增全局代码片段起全局代码片段文件名“xxx.code-snippets” 这里以配置vue2初始代码片段为例,配置具体代码片段 {"name": "vue-sph","version": "…...
BUUCTF-Real-[Tomcat]CVE-2017-12615
目录 漏洞描述 一、漏洞编号:CVE-2017-12615 二、漏洞复现 get flag 漏洞描述 CVE-2017-12615:远程代码执行漏洞 影响范围:Apache Tomcat 7.0.0 - 7.0.79 (windows环境) 当 Tomcat 运行在 Windows 操作系统时,且启用了 HTTP P…...
Qt应用软件【协议篇】http协议get、post示例
文章目录 QT Http的APIHTTP GET 请求示例HTTP POST 请求示例伪装chrome浏览器get请求QT Http的API QNetworkAccessManager 作用:管理所有的网络请求,是发送请求和接收响应的中心点。主要功能: 发送HTTP请求(GET, POST, PUT, DELETE等)。处理网络请求的异步回调。管理网络…...
如何选择Centos的替代者
开篇废话:许久许久没有更新博客了。寒假回到故土,大雪虽然没有封路,还是增加了不出门的决心,虽然年岁已高,但是不学习还是不踏实,那就借着写作再继续前行。 背景:信息化部门,掌管着…...
短剧小程序源码:打造你的专属短剧平台
温馨提示:文末有资源合作获取方式~一、市场前景:千亿蓝海,风口正当时“昨晚又为一部短剧熬夜了!”这已成为当代年轻人的日常。3分钟一集,连续反转,极致爽点——短剧正以惊人的速度占领我们的碎片…...
DBA_RECYCLEBIN purge指定日期前的表
SummaryHow to purge DBA_RECYCLBIN for objects older than x days/minutes? or do we have RECYCLEBIN RETENTION feature or truncate recyclebin ?--------------------------------------------------------------------------------------DBA_RECYCLEBIN has a column …...
老旧Mac如何重获新生?OCLP-Mod带来的系统升级解决方案
老旧Mac如何重获新生?OCLP-Mod带来的系统升级解决方案 【免费下载链接】OCLP-Mod A mod version for OCLP,with more interesting features. 项目地址: https://gitcode.com/gh_mirrors/oc/OCLP-Mod 随着科技的快速迭代,许多曾经性能卓越的Mac设备…...
LangGraph实战:5分钟给你的AI助手装上‘对话记忆’,告别每轮都是新朋友
LangGraph实战:5分钟为AI助手构建对话记忆系统 每次和AI对话都像初次见面?这个问题困扰着许多开发者。想象一下,你告诉助手"我叫Alex",下一句问"你知道我的名字吗?",它却一脸茫然地回答…...
设计师必看:Photoshop混合模式实战指南,5分钟搞定光影合成与氛围感调色
Photoshop混合模式实战指南:5分钟掌握光影合成与氛围调色 当你在深夜赶稿时,突然发现人物照片缺乏立体感,或是产品静物图需要增强戏剧性光影——这就是混合模式大显身手的时刻。不同于繁琐的曲线调整和复杂的蒙版操作,混合模式就像…...
Python并发革命进行时:GIL移除后你必须掌握的5种内存序模型(x86/ARM/RISC-V实测对比)
第一章:Python无锁GIL环境下的并发模型架构总览传统CPython解释器受全局解释器锁(GIL)制约,无法真正实现多线程CPU并行。而“无锁GIL环境”并非指移除GIL本身,而是指在GIL被主动释放、绕过或由替代运行时(如…...
Antares ESP MQTT库:ESP32/ESP8266接入Antares物联网平台指南
1. 项目概述Antares ESP MQTT 是一款专为 ESP32 和 ESP8266 平台设计的轻量级 Arduino 库,旨在大幅降低接入 Telkom Indonesia 运营的 Antares IoT 平台的开发门槛。其核心价值不在于实现 MQTT 协议栈(该职责由 PubSubClient 承担)࿰…...
时间切片:24小时
基于双层优化的电动汽车优化调度研究 代码主要做的是一个双层的电动汽车充放电行为优化问题,具体来讲,输电网上层优化将电动汽车与发电机、基本负荷协调,同时考虑风力发电,从而在时域内优化电动汽车的负荷周期。 然后,…...
量子行走:从理论到Python实现——6. 量子机器学习与前沿应用
量子机器学习探索了量子计算与人工智能的交叉领域,通过利用量子叠加与纠缠特性处理经典难以应对的高维数据模式。Berkeley CS269Q课程与PennyLane教程系统阐述了从量子特征映射到实际化学模拟的完整技术栈,本章将围绕特征空间扩展、优化求解与信息安全三…...
从零到精通:Human Resource Machine 全关卡高效解法与思维跃迁指南
1. 为什么《Human Resource Machine》是程序员的最佳思维训练场 第一次打开《Human Resource Machine》时,我以为这不过是个披着编程外衣的小游戏。但当我卡在"第三年"的关卡整整一个下午后,才意识到这可能是最接近真实编程思维的训练场。这款…...
