Python机器学习--简单清晰的说说K近邻算法的基本原理

K近邻算法的基本原理:首先通过所有的特征变量构筑起一个特征空间,特征空间的维数就是特征变量的个数,然后针对某个测试样本,按照参数K在特征空间内寻找与它最为近邻的K个训练样本观测值,最后依据这K个训练样本的响应变量值或实际分类情况获得该样本响应变量拟合值或预测分类情况。

针对分类问题,按照“多数票规则”来确定,也就是说,K个训练样本中包含样本数最多的那一类是什么,测试样本的分类就是什么;针对回归问题,则按照K近邻估计量来确定,也就是将K个训练样本响应变量值的简单平均值作为测试样本的响应变量拟合值。

由此可以看出,K近邻算法比较简单,所以当不了解数据分布或者没有任何先验知识时,K 近邻算法是一个不错的选择。

K值代表着在K近邻算法中选择多少个近邻值用于算法构建,也是K近邻算法中最为重要的参数。比较极端的情形有两种:一种是K取值为1的时候,也就说对于特定样本,只选择与自己最近的近邻值,最近近邻值的响应变量值为多少或者分为何类,特定样本也就相应地取值为多少或者分为何类,完全一致;另一种是K取值为整个样本容量的时候,也就是说对于每一个样本,都是用所有的样本作为其近邻值,不再区分。

不难看出,这两种极端情形都不可取。如果K取值过小,整体模型变得复杂,那么就仅使用较小的邻域中的训练样本进行预测,只有距离非常近的(相似的)样本才会起作用,这会导致模型的方差过大,或者说容易过拟合,导致模型的泛化能力不足,比如在前述K取值为1的时候,可以通过数学公式证明其泛化错误率上界为贝叶斯最优分类器错误率的两倍;如果而K取值过大,整体模型变得简单,那么就会使用过大邻域中的训练样本进行预测,距离非常远的(不太相似的)样本也会起作用,这会导致模型的偏差过大,或者说容易欠拟合,导致模型没有充分利用最临近(相似)样本的信息,比如在前述K取值为整个样本容量的时候,K近邻算法对每一个测试样本的预测结果将会变得一样(或者说每个测试样本在整个样本全集中的位置与地位都是一样的)。

所以,从K取值为1开始,随着取值的不断增大,K近邻算法的预测效果会逐渐提升,然而当达到一定数值(也就是最优数值)后,随着取值进一步的增大,K近邻算法的预测效果就会逐渐下降。针对特定问题,需要找到最为合适的K,使得K近邻算法能够达到最优效果。

在K值的具体选择方面,要注意以下三点:一是在大多数情况下,K值都比较小;二是为了避免产生相等占比的情况,K值一般取奇数;三是为了更加精确地找到合适的K值,建议设置一个K值的取值区间,然后通过交叉验证等方法分别计算其预测效果,从而找到最好的K值。

 上述内容节选自《Python机器学习原理与算法实现》(杨维忠、张甜著,2023年2月,清华大学出版社)。

很多朋友反映学Python、学机器学习比较难、效果不好,我的观点是:需要拿到Python、机器学习的源代码边学习边操作,从解决问题、上手操作中获得成就感,才会越学越深入,学习效果才会好。

针对数据分析或机器学习推荐两本入门级的图书:《Python机器学习原理与算法实现》(杨维忠 张甜 著 2023年2月新书 清华大学出版社)《Python数据科学应用从入门到精通》(张甜 杨维忠 著 2023年11月新书 清华大学出版社)。这两本书的特色是在数据分析、机器学习各种算法的介绍方面通俗易懂,较少涉及数学推导,对数学基础要求相对不高,在python代码方面讲的很细致,看了以后根据自身需要选取算法、优化代码、科学调参。

《Python机器学习原理与算法实现》(杨维忠 张甜 著 2023年2月新书 清华大学出版社)内容非常详实,包含了Python和机器学习,相当于一次获得了两本书。在讲解各类机器学习算法时,逐一详解用到的各种Python代码,针对每行代码均有恰当注释(这一点基本上是大多数书目做不到的)。《Python机器学习原理与算法实现》一书创作完成后,在正式出版之前,已经开发成一套系统课程,分9次授课,在某全国性股份制商业银行内部开展了培训,490人根据行内组织统一学习,授课完成后放在知鸟平台供回放学习,9次课程累计回放量近3万次,得到参训学员的一致好评,广泛应用于各位学员的工作实践。(所以,这是一本避雷避坑、已经被亲测可行的网红书,只要用心学,都没问题哦)

《Python机器学习原理与算法实现》(杨维忠 张甜 著 2023年2月新书 清华大学出版社)

《Python数据科学应用从入门到精通》一书,旨在教会读者实现全流程的数据分析,并且相对《Python机器学习原理与算法实现》一书增加了很多概念性、科普性的内容,进一步降低了学习难度。国务院发展研究中心创新发展研究部第二研究室主任杨超 ,山东大学经济学院金融系党支部书记、副主任、副教授、硕士生导师张博,山东管理学院信息工程学院院长 袁锋 教授、硕士生导师,山东大学经济学院 刘一鸣 副研究员、硕士生导师,得厚投资合伙人 张伟民等一众大牛联袂推荐。全书内容共分13章。其中第1章为数据科学应用概述,第2章讲解Python的入门基础知识,第3章讲解数据清洗。第4~6章介绍特征工程,包括特征选择、特征处理、特征提取。第7章介绍数据可视化。第8~13章介绍6种数据挖掘与建模方法,分别为线性回归、Logistic回归、决策树、随机森林、神经网络、RFM分析。从数据科学应用和Python的入门,再到数据清洗与特征工程,最终完成数据挖掘与建模或数据可视化,从而可以为读者提供“从拿到数据开始,一直到构建形成最终模型或可视化报告成果”的一站式、全流程指导。买这一本书相当于一下子得到了5本书(Python基础、数据清洗、特征工程、数据可视化、数据挖掘与建模),入门超级简单,不需要编程基础,也不需要过多数学推导,非常适用于零基础学生。

两本书随书赠送的学习资料也很多,包括全部的源代码、PPT、思维导图,还有10小时以上的讲解视频,每一章后面还有练习题及参考答案,还有学习群,相对于只看网络上的视频,一方面更加系统、高效,另一方面照着书一步步操作学起来也事半功倍。全网热销中,当当、京东等平台搜索“Python机器学习 杨维忠”“Python数据科学 杨维忠”即可。

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

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

相关文章

Codeforces Round 871

目录 A. Love Story B. Blank Space C. Mr. Perfectly Fine D. Gold Rush E. The Lakes F. Forever Winter G. Hits Different H. Don’t Blame Me A. Love Story 直接逐个匹配 string a"codeforces"; void solve() {string s; cin>>s;int cnt0;for(i…

快速理解MoE模型

最近由于一些开源MoE模型的出现,带火了开源社区,为何?因为它开源了最有名气的GPT4的模型结构(OPEN AI),GPT4为何那么强大呢?看看MoE模型的你就知道了。 MoE模型结构: 图中&#xff0…

Netty-ChannelHandle的业务处理

ChannelHandle结构 ChannelHandler基础接口 基础接口里面定义的基础通用方法。增加handler,移除handler,异常处理。 ChannelInboundHandler public interface ChannelInboundHandler extends ChannelHandler {/*** The {link Channel} of the {link Ch…

猫突然不吃东西没精神?性价比高可以迅速恢复精神的生骨肉冻干推荐

猫突然不吃东西没精神怎么办?当猫咪不吃东西、精神不振时,可能是由于健康问题、环境因素或食物原因所引起。首先应进行身体检查,观察是否有其他并发症,如无则可排除健康问题。为猫咪提供安全舒适的环境、给予关爱,可改…

亚信安慧AntDB:AntDB-M元数据锁(七)

5.4.5 慢路径锁的授予条件 当且仅当满足如下两个条件时,才可以授予锁。 1. 其他线程没有持有不兼容类型锁。 2. 当前申请的锁的优先级高于请求等待列表中的。 首先通过锁位图判断等待队列,不兼容则不能授予锁。再判断快速路径,不兼容则不…

win11下 “pytorch导出模型“ 以及 “C++使用onnxruntime部署”

部分一:PyTorch导出模型 在Win11下,PyTorch是一个强大的深度学习框架,它提供了丰富的工具来训练和导出模型。在这一部分,我们将使用鸢尾花数据集,演示如何在PyTorch中训练一个简单的模型,并将其导出为ONNX…

改变this指针的三个方法?

要改变 this 的指向,JavaScript 提供了一系列的方法: call(): 使用 call() 可以直接改变 this 的指向。它接受两个参数:第一个是要调用的目标函数,第二个是将作为 this 的值的对象或对象引用的数组。例如&#xff0c…

protobuf-go pragma.go 文件介绍

pragma.go 文件 文件位于: https://github.com/protocolbuffers/protobuf-go/blob/master/internal/pragma/pragma.go 该文件核心思想: 利用 Golang 语法机制,扩展 Golang 语言特性 目前,该文件提供以下 4 个功能: …

C++STL模板库

类&#xff1a; pair: 头文件&#xff1a;<utility> 定义&#xff1a; 是一个标准库类型。可以看作是有两个成员变量first和second的结构体&#xff0c;并且重载了<运算符(先比较first大小&#xff0c;再比较second大小)当我们创建一个pair时&#xff0c;必须提供两…

SQLite 简介

什么是SQLite&#xff1f; SQLite是一个轻量级的嵌入式关系型数据库&#xff0c;它以一个小型的C语言库的形式存在。它的设计目标是嵌入式的&#xff0c;而且已经在很多嵌入式产品中使用了它&#xff0c;它占用资源非常的低&#xff0c;在嵌入式设备中&#xff0c;可能只需要几…

机器学习面试题总结60-99

目录 60、Python到底是什么样的语言? 61.Python是如何进行内存管理的? 引用计数和垃圾回收。

leetcode-存在重复元素

217. 存在重复元素 把列表转成集合&#xff0c;我们知道集合中是没有重复元素的&#xff0c;然后和原列表的长度做对比&#xff0c;不相等说明是有重复元素的 class Solution:def containsDuplicate(self, nums: List[int]) -> bool:if len(set(nums)) len(nums):return …

状态码400以及状态码415

首先检查前端传递的参数是放在header里边还是放在body里边。 此图前端传参post请求&#xff0c;定义为’Content-Type’&#xff1a;‘application/x-www-form-urlencoded’ 此刻他的参数在FormData中。看下图 后端接参数应为&#xff08;此刻参数前边什么都不加默认为requestP…

Qt QScrollArea 不显示滚动条 不滚动

使用QScrollArea时&#xff0c;发现添加的控件超出QScrollArea 并没有显示&#xff0c;且没有滚动条效果 原因是 scrollArea指的是scrollArea控件本身的大小&#xff0c;肉眼能看到的外形尺寸。 scrollAreaWidgetContents指的是scrollArea控件内部的显示区域&#xff0c;里面可…

2024 高级前端面试题之 React 「精选篇」

该内容主要整理关于 React 模块的相关面试题&#xff0c;其他内容面试题请移步至 「最新最全的前端面试题集锦」 查看。 React模块精选篇 1. 如何理解React State不可变性的原则2. JSX本质3. React合成事件机制4. setState和batchUpdate机制5. 组件渲染和更新过程6. Diff算法相…

windows server 开启远程连接RDP连接

windows server 开启远程连接&#xff0c;RDP连接windows server 打开gpedit.msc, 找到计算机配置-管理模板-windows组件-远程桌面服务-远程桌面会话主机-授权 1 使用指定的远程桌面许可证服务器 2 设置远程桌面授权模式 3 重启windows server服务器生效 4使用mstsc命令连接…

未来每家公司都需要有自己的大模型- Hugging Face创始人分享

自ChatGPT发布以来&#xff0c;有人称其是统治性一切的模型。Hugging Face创始人兼首席执行官Clem Delangue介绍&#xff0c;Hugging Face平台已经有15000家公司分享了25万个开源模型&#xff0c;当然这些公司不会为了训练模型而训练模型&#xff0c;因为训练模型需要投入大量资…

Springboot自定义线程池实现多线程任务

1. 在启动类添加EnableAsync注解 2.自定义线程池 package com.bt.springboot.config;import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.concurrent.ThreadPoolTask…

记录 | ubuntu nm命令的基本使用

什么是nm命令 nm命令是linux下针对某些特定文件的分析工具&#xff0c;能够列出库文件&#xff08;.a、.lib&#xff09;、目标文件&#xff08;*.o&#xff09;、可执行文件的符号表。 nm命令的常用参数 -A 或 -o 或 --print-file-name&#xff1a;打印出每个符号属于的文件…

webassembly003 TTS BARK.CPP

TTS task TTS&#xff08;Text-to-Speech&#xff09;任务是一种自然语言处理&#xff08;NLP&#xff09;任务&#xff0c;其中模型的目标是将输入的文本转换为声音&#xff0c;实现自动语音合成。具体来说&#xff0c;模型需要理解输入的文本并生成对应的语音输出&#xff0…