人工智能与机器学习:Python从零实现性回归模型

🧠 向所有学习者致敬!

“学习不是装满一桶水,而是点燃一把火。” —— 叶芝


我的博客主页: https://lizheng.blog.csdn.net

🌐 欢迎点击加入AI人工智能社区!

🚀 让我们一起努力,共创AI未来! 🚀


前言

在 AI 的热潮中,很容易忽视那些让它得以实现的基础数学和技术。作为一名专业人士,通过不使用机器学习库(比如 sklearn、TensorFlow、PyTorch 等)来编写模型,可以显著提升你对这些基础技术的理解。因为有时候,用现成的工具就像吃别人嚼过的糖,没劲!自己动手,那才叫真本事,不仅能搞懂背后的原理,还能在朋友面前炫耀一番:“看我这代码,多牛!”所以,咱们这就开始,一起踏上这个充满挑战和乐趣的旅程吧!🚀

本系列我们会深入探讨各种机器学习模型,并从零搭建它们。在每篇文章结束时,我希望读者能够对这些我们每天作为数据专业人士使用的模型有极其深入和基础的理解。咱们就从多元线性回归开始吧!

多元线性回归

多元线性回归可以用来模拟两个或多个自变量与一个数值型因变量之间的关系。日常用例包括根据房屋的卧室数量、浴室数量、面积等信息预测房价。咱们先来聊聊多元线性回归的一些关键假设。

  • 自变量与因变量的线性关系:具体来说,任何一个自变量(或特征)变化 1 个单位时,因变量应该以恒定的速率变化。
  • 没有多重共线性:这意味着特征之间需要相互独立。以房价为例,如果卧室数量和浴室数量之间存在某种相关性,这可能会影响模型的性能。确保没有或最小化多重共线性,也能让你更高效地利用给定的数据。
  • 同方差性:这意味着在任何自变量水平下,误差都是恒定的。如果咱们的房价预测模型显示,随着预测价格的上升,误差也在增加,那咱们就不能说这个模型满足同方差性了。可能需要对特征数据进行一些变换,以满足这个假设。

数学原理

还记得 (y = mx + b) 吗?大多数人在公立学校的时候都学过这个公式。而多元线性回归则可以用下面的公式表示:

y = B 0 + B 1 x 1 + B 2 x 2 + ⋯ + B n x n + E y = B_0 + B_1x_1 + B_2x_2 + \dots + B_nx_n + E y=B0+B1x1+B2x2++Bnxn+E

  • y y y:因变量或目标变量,也就是咱们要预测的东西。
  • B 0 , B 1 , … , B n B_0, B_1, \dots, B_n B0,B1,,Bn:“Beta” 或自变量的系数。 B 0 B_0 B0 是截距,类似于 y = m x + b y = mx + b y=mx+b 中的 b b b。剩下的系数分别代表剩下的自变量或特征的系数。
  • x 1 , x 2 , … , x n x_1, x_2, \dots, x_n x1,x2,,xn:自变量或特征。
  • E E E:“Epsilon”,更实际地说是误差项,也就是咱们的预测值与实际 y y y 之间的差距。

你也可以用矩阵表示法来表示多元线性回归方程。我个人更喜欢这种方法,因为它让我不得不从向量和矩阵的角度去思考,而这些正是几乎所有机器学习模型背后的数学核心。

Y = X B + E \mathbf{Y} = \mathbf{X} \mathbf{B} + \mathbf{E} Y=XB+E

咱们来更直观地看看这些变量里都有啥。先从 X \mathbf{X} X 开始,它代表了咱们所有的特征数据,是一个矩阵。注意,这个矩阵的第一列全是 1。为啥呢?这代表了截距项 B 0 B_0 B0 的占位符。

从数据角度来看,咱们有啥呢?咱们有所有的特征数据、目标变量 Y Y Y,误差项理论上是未知的,但它只是预测值 y y y 与实际值 y y y 之间的差距。换句话说,它只是用来补全方程的。所以,咱们需要求解的是 B \mathbf{B} B,也就是权重。

None### 最小化代价函数

要找到 B \mathbf{B} B,请注意,咱们并不是直接求解它。相反,咱们想找到向量 B \mathbf{B} B 中的值,使得预测值与实际值之间的误差最小化。这是通过最小化关于 B \mathbf{B} B 的代价函数来实现的,这个代价函数也被称为均方误差

MSE = 1 n ∑ i = 1 n ( y i − y ^ i ) 2 \text{MSE} = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 MSE=n1i=1

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

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

相关文章

Ubuntu18.04更改时区(图文详解)

Ubuntu18.04更改时区 1、前言2、更改时区3、总结 1、前言 记录一下Ubuntu18.04更改时区的过程,方便自己日后回顾,也可以给有需要的人提供帮助。 2、更改时区 输入下面的指令,进行时区选择 tzselect输入4选择亚洲,输入9选择中…

vue2 项目使用vite2 升级 vite4 后,对别名的解析有问题,导致打包后项目无法正常运行

问题描述: 之前使用的 vite2 版本,需要在 vite.config 里配置 vue 别名,不然会有commonjs 的依赖包找不到 vue,因为 vite 默认使用 esm 版本。 vue: vue/dist/vue.common.prod.js 在 vite2 中可以正常进行打包上线,…

民办生从零学C的第十二天:指针(1)

每日励志:拼搏十年,征战沙场,不忘初心,努力成为一个浑身充满铜臭味的有钱人。 一.内存和地址 1.内存 计算机内存是一系列存储单元的集合,每个存储单元都有唯一的地址来标识。这些存储单元用于存储程序的数据和指令。…

用Postman验证IAM Token的实际操作

当我们需要用Postman发送一个最简单的请求去验证Token的时候我们该怎么办? 【一、步骤】 步骤1:打开Postman,新建一个GET请求 请求地址填: https://iam.cn-north-4.myhuaweicloud.com/v3/auth/projects 解释一下:…

关于常量指针和指向常量的指针

关于指针,对于常量指针和指向常量的指针也是傻傻分不清。看到定义时,不知道是指针不能变,还是指针指向的内容不能变量。 先看形式: const char * A; char * const B; 这两种有什么区别?傻傻分不清。 A这种定义&am…

unity 读取csv

1.读取代码 string filePath Application.streamingAssetsPath "\\data.csv"; public List<MovieData> movieData new List<MovieData>(); private void ReadCSV(string filePath) { List<List<string>> data new List<…

安达发|高效智能塑料切割数控系统 - 全自动化软件解决方案

在当今的制造业中&#xff0c;塑料作为一种轻便、耐用且成本效益高的材料&#xff0c;被广泛应用于各个领域。随着科技的进步和市场需求的变化&#xff0c;塑料加工行业正面临着前所未有的挑战和机遇。为了提高生产效率&#xff0c;降低成本&#xff0c;并满足日益严格的质量标…

c#接口_抽象类_多态学习

c#接口_抽象类_多态学习 学习日志 关于&#xff1a;c#接口_抽象类_多态的学习记录。 一、概念 1. 多态&#xff08;Polymorphism&#xff09; 定义&#xff1a;同一操作作用于不同对象时&#xff0c;表现出不同的行为。实现方式&#xff1a; 继承 方法重写&#xff08;ov…

智能硬件行业售后服务管理:提升客户体验的关键所在

在当今数字化浪潮的推动下&#xff0c;智能硬件行业正以前所未有的速度蓬勃发展。从智能家居设备的普及&#xff0c;到智能穿戴产品的多样化&#xff0c;再到智能办公设备的广泛应用&#xff0c;智能硬件已经深入到我们生活的方方面面。据市场研究机构预测&#xff0c;未来几年…

Vue3 里 CSS 深度作用选择器 :deep()

&#x1f3af; 解释 在 Vue 组件里&#xff0c;CSS 默认是 scoped&#xff08;作用域限定的&#xff09;&#xff0c;只对当前组件生效。 如果你想在 scoped 样式里&#xff0c;穿透到子组件的内部元素&#xff0c;就要用 :deep()。 ✏️ 示例 比如&#xff0c;你有一个子组件…

仙宫云ComfyUI —【Wan2.1】AI视频生成部署

【Wan2.1】AI视频生成本地部署与使用技巧全面详解_哔哩哔哩_bilibili 所有模型下载&#xff1a;https://pan.quark.cn/s/9d793aa1b258 Runninghub本期课程工作流下载&#xff08;可获得1000RH币&#xff09;&#xff1a;https://www.runninghub.cn/?utm_sourcekol01-RH145 仙…

LabVIEW 在测控领域的深度开发与未来发展趋势研究报告 (2025-2030)(原创作品使用请注明出处,三连)

## LabVIEW 在测控领域的深度开发与未来发展趋势研究报告 (2025-2030) ### 引言 LabVIEW(Laboratory Virtual Instrument Engineering Workbench)自 1986 年由美国国家仪器公司(NI)发布以来,凭借其独特的图形化编程语言(G 语言)和强大的硬件集成能力,已成为全球工程师和…

政策支持与市场驱动:充电桩可持续发展的双轮引擎

随着全球能源转型加速&#xff0c;新能源汽车成为实现低碳交通的重要方向。然而&#xff0c;充电基础设施不足仍是制约其普及的关键瓶颈。当前&#xff0c;国际主流的充电桩运营模式包括政府推动、电网企业推动及汽车厂商推动三种模式&#xff0c;但单一模式均存在显著局限性。…

JVM——垃圾收集策略

GC的基本问题 什么是GC&#xff1f; GC 是 garbage collection 的缩写&#xff0c;意思是垃圾回收——把内存&#xff08;特别是堆内存&#xff09;中不再使用的空间释放掉&#xff1b;清理不再使用的对象。 为什么要GC&#xff1f; 堆内存是各个线程共享的空间&#xff0c…

用Java模拟打字:深入解析 java.awt.Robot 的键盘控制艺术

作为开发者&#xff0c;我们有时会遇到需要自动化用户界面交互的场景&#xff0c;比如自动化测试、脚本编写、或者制作一些辅助工具。而模拟键盘输入&#xff0c;尤其是“打字”&#xff0c;是这类自动化任务中非常基础且常见的一环。 在 Java 中&#xff0c;实现这一目标的利…

JavaScript 入门全讲解

JavaScript 入门全讲解 一、前言&#xff1a;为什么学习 JavaScript&#xff1f;二、JavaScript 简史与发展三、JavaScript 基础语法3.1 变量声明&#xff1a;var、let、const3.2 数据类型3.3 类型判断3.4 类型转换 四、运算符与表达式五、流程控制5.1 条件判断5.2 switch 语句…

python练习:求数字的阶乘

求数字的阶乘 eg:5的阶乘 54321 """ 求数字的阶乘 eg:5的阶乘 5*4*3*2*1 """count 1 for i in range(1,6):count count * iprint(count)运行结果&#xff1a;

传统农耕展陈如何突破?数字多媒体能否重构文化体验边界?

农耕文化是中华民族悠久历史的重要组成部分&#xff0c;它不仅承载着古代先民与自然和谐相处的智慧&#xff0c;也体现了人们对土地和自然的深厚情感。而今&#xff0c;如何有效地传承和展示这一传统文化&#xff0c;成为了一个重要的课题。今日&#xff0c;便让我们聚焦于农耕…

nginx代理websocket时ws遇到仅支持域名访问的处理

最终改造点 proxy_set_header Host 这一行 未改之前遇到的问题&#xff1a; nginx 日志显示 https://aaa.bbbb.cn:7413 被解析成了 IP 地址&#xff0c;这通常是因为 DNS 解析的结果被缓存或某些中间层&#xff08;如负载均衡器、防火墙等&#xff09;将域名替换为 IP 地址。…

YUM/DNF管理工具

YUM (Yellow dog Updater&#xff0c; Modified) &#xff0c; RHEL8 中默认使用的软件批量管理工具由原版本的 yum 换成了速度更快的 dnf &#xff08; DNF Dandified YUM &#xff09;&#xff0c;原有的 yum 命令仅为 dnf 的软链接&#xff0c;当然依旧可以使用。 [root…