小木的机器学习日记——KNN

核心知识点总结与星级排序

我为你梳理了这节课的精髓,并按照重要性进行了星级评定(★★★★★为最高)。

★★★★★ 核心思想:回归 (Regression) 到底是什么?
  • 是否关键:是
  • 必须了解:是
  • 必须记住:是

小白为你讲解:

我们再来巩固一下这个最最基本的概念。

分类(Classification):做 “判断题” 或 “选择题”。结果是离散的类别。比如:这封邮件是 “垃圾邮件” 还是 “非垃圾邮件”?这张图片是 “猫”、“狗” 还是 “鸟”?

回归(Regression):做 “填空题”。结果是一个连续的具体数值。比如:这套房子的价格是多少 “万元”?明天的气温是多少 “摄氏度”?

课程中提到 “回归” 这个词翻译得不好,可能会让你觉得困惑,这一点非常真实。你完全不需要纠结于 “回到哪里去”,只需要记住:回归 = 预测一个具体的数值。

【思维与实力提升】

思维提升:在接触任何一个业务问题时,你脑海里要做的第一件事,就是判断它属于 “分类” 还是 “回归”。这个判断决定了你后续所有工作的方向:选择什么模型、用什么评估指标、如何解释结果。这是一个机器学习工程师最基本的 “问题定义” 能力。

硬实力提升:能够清晰地向同事或面试官阐述一个任务是分类还是回归,并解释为什么。例如:“我们要做股价预测。如果目标是预测‘涨’还是‘跌’,这是一个二分类问题;如果目标是预测具体的‘收盘价’,那么这就是一个回归问题。”

★★★★☆ 核心原理:KNN 回归的决策规则 —— 从 “投票” 到 “求平均”
  • 是否关键:是
  • 必须了解:是
  • 必须记住:是

小白为你讲解:

“近朱者赤,近墨者黑” 这个道理在分类和回归中都适用,但具体做法有所不同。

KNN 分类:看新样本的邻居里哪个 “帮派”(类别)的人数最多,就判定新样本属于哪个帮派。这叫分类表决(Majority Vote)。

KNN 回归:不看帮派了,而是询问邻居们 “你们的房价分别是多少?” 然后取一个平均值作为新样本的房价预测。这叫均值法(Averaging)。

课程中还提到了加权均值法(Weighted Average),这对应 SKLEARN 里的weights='distance'参数。其意思很简单:离新样本越近的邻居,他的房价对新样本的参考价值就越大(权重高),离得远的参考价值就小一点(权重低)。这种方法通常比简单求平均更合理。

【思维与实力提升】

思维提升:这让你看到算法设计的灵活性。同一个核心思想(基于距离),可以通过改变最后一步的决策规则,来适配完全不同的任务。这启发我们,在学习新算法时,要重点关注它的两个部分:1. 核心度量 / 假设是什么?2. 最终决策规则是什么?

硬实力提升:掌握 SKLEARN 中 KNeighbors 分类器和 KNeighbors 回归器的区别。能举一反三,看到分类器就能想到可能有对应的回归器,这是非常宝贵的实践经验,能极大提高你自学和解决问题的效率。

★★★★★ 黄金实践:再次被验证的真理 —— 归一化的威力
  • 是否关键:是
  • 必须了解:是
  • 必须记住:是(重要的事情说三遍!)

小白为你讲解:

这节课最精彩的部分,莫过于那个戏剧性的 “翻盘”:

没有归一化,模型在波士顿房价数据集上的表现非常差(得分 0.49)。

加上归一化之后,效果立竿见影,得分飙升到 0.83!

这比任何理论都更有说服力!它再次告诉你:对于 KNN 这种基于距离计算的算法,如果特征之间的尺度(量纲)差异巨大(比如波士顿房价数据里,有犯罪率这种小数值,也有房产税这种大数值),就必须进行归一化!否则,模型就会被那些数值大的特征 “带偏”,完全忽略掉其他特征的信息。

【思维与实力提升】

思维提升:建立一个 “建模 SOP(标准作业流程)” 的意识。在你的流程清单里,“数据预处理 - 特征归一化” 必须是紧跟在 “数据划分” 之后的关键一步。这能让你在 90% 的情况下避免犯低级错误,保证模型有一个良好的起点。

软实力提升:在工作汇报或写论文时,展示 “有归一化” 和 “无归一化” 的对比实验结果,是证明你工作严谨、方法专业的绝佳方式。它能有力地支撑你 “为什么要做数据预处理” 这一环节的必要性。

★★★☆☆ 专家视角:算法的 “天命”——KNN 更适合分类
  • 是否关键:否
  • 必须了解:是
  • 必须记住:否(但理解了会让你更专业)

小白为你讲解:

课程最后提到了一个非常深刻的观点:KNN 虽然能做回归,但它骨子里更像一个 “分类选手”。为什么?

想象一下,KNN 回归的预测值,永远是它邻居们数值的平均值。这意味着,它的预测结果永远不会超过训练数据中出现过的最大值,也永远不会低于最小值。它无法 “创造” 出新的、超出范围的预测。如果房价一直在涨,KNN 是无法预测出一个比历史上所有房价都高的 “新高价” 的。它不具备外推(Extrapolation)的能力。

而分类任务,只需要找到一个正确的 “桶” 把样本放进去就行,对这种数值边界不敏感。

【思维与实力提升】

思维提升:从 “这个算法能做什么” 进化到 “这个算法的优点和局限性是什么”。这是从 “工具使用者” 到 “问题解决专家” 的关键一步。理解每个算法的 “天命”,才能在面对复杂问题时,做出最恰当的技术选型。

软实力提升:当别人都说 “我用 KNN 解决了这个问题” 时,你可以补充一句:“是的,KNN 在这里表现不错。但我们需要注意,由于它的原理是局部平均,对于需要预测未来趋势(可能超出历史范围)的场景,我们可能需要考虑线性模型或其它能进行外推的模型。” 这会让你在团队中显得尤为突出。

必会知识点自查(问题与答案)

现在,让我们用几个问题来检验一下你是否真正掌握了本节课的精髓。

问题 1: 你的老板想让你建立一个模型,根据用户的年龄、收入、历史消费记录,来预测他下个月具体会消费多少金额。请问,这是一个分类问题还是回归问题?


这是一个 >回归问题。因为你的目标是预测一个具体的、连续的数值(消费金额),而不是一个类别(比如“高消费用户”或“低消费用户”)。

问题 2: 当 KNN 算法从处理分类任务切换到回归任务时,它的核心决策规则从什么变成了什么?


它的核心决策规则从分类表决(少数服从多数)变成了 求均值(计算K个近邻目标值的平均值)。如果考虑距离影响,则是加权平均值。

问题 3: 你在使用 KNN 回归器预测波士顿房价,并且已经将数据分成了训练集X_train和测试集X_test。你将如何正确地使用标准缩放器对数据进行归一化?请描述关键步骤。
正确的步骤如下(这是黄金法则!):

  1. 创建一个`StandardScaler`的实例:`scaler = StandardScaler()`。
  2. 只在训练集上调用`fit_transform`方法,它会计算训练集的均值和标准差,并用它们来转换训练集:`X_train_scaled = scaler.fit_transform(X_train)`。
  3. 只在测试集上调用`transform`方法,它会使用在训练集上计算出的均值和标准差来转换测试集:`X_test_scaled = scaler.transform(X_test)`。
    绝对不能在测试集上再次调用`fit`或`fit_transform`!

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

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

相关文章

Product Hunt 每日热榜 | 2025-07-15

1. OpenArt One-Click Video Story 标语:一键即可将任何内容转换为可随时发布的视频。 介绍:有一个创意、剧本、节奏,或者喜欢的角色吗?OpenArt可以将它们变成一个视觉故事—完整的画面、音乐和叙事结构,轻松实现&am…

Dubbo高阶难题:异步转同步调用链上全局透传参数的丢失问题

​问题场景​: 在分布式电商系统中,下单服务通过Dubbo调用库存服务(异步接口返回CompletableFuture),同时在Gateway层通过RpcContext设置traceId。你发现:当库存服务内部同步调用其他服务时,tra…

实测两款效率工具:驾考刷题和证件照处理的免费方案

今天阿灿给大家推荐两款实用的软件,一款是驾考助手,另一款是证件照制作软件。第一款:驾考助手以前考驾照,很多人担心过不了关,还会花冤枉钱买VIP练习,精选500题。其实,只要用对工具,…

Python 函数的维护性与复用性

目录 一、从“能跑就行”到“能改不怕”——维护性的第一要义 二、单一职责与最小惊讶——维护性的纵深防御 三、可组合的乐高——复用性的第一阶梯 四、面向协议设计——复用性的第二阶梯 五、异常策略与日志——维护性的隐形护盾 七、测试金字塔——维护性的最后护城河…

C++中的模板参数 vs 函数参数:编译期与运行期的分界线

引言 在日常开发中,我们经常接触 函数参数,这是控制函数行为的最直接方式。但在 C 中还有一种强大的机制 —— 模板参数(Template Parameters),它赋予了我们在编译期就生成代码结构的能力。 本文将通过直观的类比&…

Elasticsearch 9.x 搜索执行过程(源码解析)

1. Elasticsearch 9.x 搜索执行过程 - 源码解析 #mermaid-svg-Vp6WKKBLo3omajeq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-Vp6WKKBLo3omajeq .error-icon{fill:#552222;}#mermaid-svg-Vp6WKKBLo3omajeq .error…

简单易懂,操作系统的内存管理机制是如何实现的

系统地梳理一下操作系统在“内存管理”这个重要领域中,到底扮演了什么角色,需要完成哪些核心任务。想象一下,操作系统是一位经验丰富的高级公寓管理员。内存:就是这栋高级公寓大楼。进程:一个个想要入住的租户。内存管…

《大数据技术原理与应用》实验报告一 熟悉常用的Linux操作和Hadoop操作

目 录 一、实验目的 二、实验平台 三、 实验内容和要求 1. 安装虚拟机 2. 熟悉常用的 Linux 命令 3. 进行 Hadoop 伪分布式安装 4. 熟悉常用的 Hadoop 操作 四、实验环境 五、实验内容与完成情况 1. 安装虚拟机 2. 熟悉常用的 Linux 命令 3. 进行 Hadoop 伪分布式…

I/O 多路复用详解笔记

I/O 多路复用笔记 什么是I/O多路复用 I/O多路复用(I/O Multiplexing)是一种**允许单个线程(或进程)监听多个I/O描述符(fd)**上是否就绪(可读/可写/异常)的方法。这种方式可以有效地管…

李白周游记50篇

https://mp.weixin.qq.com/s/7MThy1kCOATS-8ZWc09_1g 李白周游记50篇 卡西莫多 2025年07月15日 安徽 李白周游记50篇记录,现在写了50个小朋友,觉得有趣愿意加进这个连载的欢迎告知大名和出生年月,限20岁以下6岁以上的小朋友,慢…

文心一言开源版部署及多维度测评实例

文章目录第一章 文心一言开源模型简介第二章 模型性能深度实测2.1 通用能力基准测试2.1.1 文本生成质量2.1.2 数学推理能力2.2 极端场景压力测试2.2.1 高并发性能2.2.2 长上下文记忆第三章 中文特色能力解析3.1.2 文化特定理解3.2 行业术语处理3.2.1 法律文书解析3.2.2 医疗报告…

ARM单片机OTA解析(二)

文章目录二、Bootloader加载启动App代码讲解二、Bootloader加载启动App代码讲解 代码详细解析: typedef void (*pFunction)(void);static void DrvInit(void) {RS485DrvInit();DelayInit();SystickInit(); }#define RAM_START_ADDRESS 0x20000000 #define RAM_S…

深度解读virtio:Linux IO虚拟化核心机制

当你在虚拟机中流畅传输文件时,是否想过背后是谁在高效调度 IO 资源?当云计算平台承载千万级并发请求时,又是谁在底层保障数据通路的稳定?答案藏在一个低调却关键的技术里 ——virtio。作为 Linux IO 虚拟化的 “隐形引擎”&#…

大宗现货电子盘交易系统核心功能代码解析

系统架构设计交易系统采用分布式微服务架构,核心模块包括订单匹配引擎、风控系统、清算结算模块、行情推送服务和用户管理接口。系统设计遵循高并发、低延迟原则,使用事件驱动模型处理交易流程。订单匹配引擎实现订单簿数据结构采用红黑树或跳表实现&…

AAAI-2025 | 同济大学面向嘈杂环境的音频视觉导航!BeDAViN:大规模音频-视觉数据集与多声源架构研究

作者:Zhanbo Shi, Lin Zhang, Linfei Li, Ying Shen单位:同济大学计算机学院论文标题:Towards Audio-visual Navigation in Noisy Environments: A Large-scale Benchmark Dataset and An Architecture Considering Multiple Sound-Sources论…

【推荐】前端低端机和弱网环境下性能优化

下面从设计、技术选型到具体实现,为你详细阐述前端低端机和弱网环境下的性能优化方案。一、设计阶段 1. 降级策略分级 根据设备性能和网络质量将设备分为3个等级: 高性能设备:内存≥4GB、CPU核心数≥4、网络RTT≤200ms中等性能设备&#xff1…

HP LoadRunner 12.02 语言包安装教程(含下载/汉化步骤)

想给HP LoadRunner 12.02安装语言包(比如中文汉化)?按照这个教程一步步操作就行,包含下载、安装和切换语言的详细步骤,轻松搞定多语言支持!适合需要本地化使用的测试人员。 先找到安装文件 安装包下载&am…

java volatile关键字使用详解

介绍 在 Java 中,volatile 是一个关键字,用于修饰变量,主要解决多线程环境下共享变量的可见性和指令重排序问题。它提供了一种轻量级的同步机制,但需注意其适用场景和限制。只保证单次读写的原子性,不保证复合读写的原…

Java-70 深入浅出 RPC Dubbo 详细介绍 上手指南

点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) AI炼丹日志-29 - 字节跳动 DeerFlow 深度研究框斜体样式架 私有…

数学中的教学思想

数学思想是数学学科的核心精髓,涵盖了从基础思维方法到问题解决策略的多个维度。主要包括抽象思维、逻辑推理、数形结合、分类讨论、化归转化、函数方程、公理化思想等。这些思想不仅贯穿数学理论体系,也为实际问题提供分析工具,体现了数学的…