Python代码实现代价函数

最小二乘法

最小二乘法是一种在统计学、数学、工程学和计算机科学等领域广泛使用的优化方法。

基本原理

最小二乘法的主要目的是找到一组模型参数,使得根据这些参数所预测的数据与实际观测数据之间的差异(即残差)的平方和最小。

数学表达

对于线性模型 y = ax + b,最小二乘问题可以表示为求解以下优化问题:

min ⁡ a , b ∑ i = 1 n ( y i − ( a x i + b ) ) 2 \min_{a, b} \sum_{i=1}^{n} (y_i - (ax_i + b))^2 a,bmini=1n(yi(axi+b))2

求解步骤

  1. 模型建立:首先确定模型形式,比如线性模型、多项式模型等。
  2. 参数估计:通过求解上述优化问题来估计模型参数。对于线性模型,这通常涉及到求解正规方程组或使用矩阵方法(如QR分解)。
  3. 模型评估:使用决定系数 R^2、残差分析等方法来评估模型的拟合优度。

应用

最小二乘法在各种领域都有应用,包括但不限于:

  • 统计学:用于参数估计和假设检验。
  • 工程学:在信号处理、系统识别中用于模型拟合。
  • 经济学:用于经济数据的回归分析。
  • 计算机视觉:在图像处理和机器学习中用于拟合数据模型。
    最小二乘法因其简单直观且在许多情况下能给出良好的结果而被广泛使用。然而,它也有局限性,比如对异常值敏感、需要模型假设等。

python代码实现

import numpy as np
def least_squares(X, y):
    # X 是特征矩阵,y 是目标向量
    # 计算系数
    theta_best = np.linalg.inv(X.T.dot(X)).dot(X.T).dot(y)
    # 计算代价函数
    y_pred = X.dot(theta_best)
    cost = ((y_pred - y) ** 2).sum()
    return theta_best, cost
# 示例使用
# 假设我们有以下数据
X = np.array([[1, 1], [1, 2], [1, 3]])
y = np.array([2, 4, 6])
# 使用最小二乘法
theta_best, cost = least_squares(X, y)
print("最佳系数:", theta_best)
print("代价函数值:", cost)

这个Python函数least_squares计算线性模型的系数,以最小化预测值与实际值之间的平方误差。它接受两个输入参数:

X: 一个2维NumPy数组或Pandas DataFrame,表示特征矩阵,形状为(n_samples, n_features)。
y: 一个1维NumPy数组或Pandas Series,表示目标向量,形状为(n_samples,)。
函数通过计算特征矩阵X的转置与X的乘积,再与X的转置相除,得到系数矩阵。然后,通过计算预测值y_pred与实际值y之间的平方误差,计算出模型的代价函数。

这个函数可以与NumPy和其他库(如NumPy和SciPy)一起使用,以在数据集上执行线性回归。还可以使用scikit-learn库,它提供了更友好的用户界面,用于机器学习任务,如线性回归。

在这里插入图片描述

在最小二乘法中,系数 theta_best 是通过求解正规方程(Normal Equation)得到的。正规方程的形式如下:

θ best = ( X T X ) − 1 X T y \theta_{\text{best}} = (X^TX)^{-1}X^Ty θbest=(XTX)1XTy

这里:
在这里插入图片描述

在Python中,我们通常使用 numpy 库来计算这个解,因为 numpy 提供了方便的线性代数运算功能。以下是如何使用 numpy 来计算 theta_best 的示例代码:

import numpy as np

# 假设 X 是特征矩阵,y 是目标值向量
X = np.array([[1, 1], [1, 2], [1, 3]])  # 示例数据
y = np.array([2, 4, 6])  # 示例数据

# 添加一列1s到X,以便于包含截距项
X_b = np.c_[np.ones((X.shape[0], 1)), X]

# 计算正规方程的解
theta_best = np.linalg.inv(X_b.T.dot(X_b)).dot(X_b.T).dot(y)

print("最佳系数:", theta_best)

在这段代码中:

  • 我们首先将特征矩阵 X 转换为 X_b,通过添加一列1s来包含截距项(即 ( \theta_0 ))。
  • 然后,我们使用 np.linalg.inv() 来计算 ( (X_b^TX_b) ) 的逆矩阵。
  • 接着,我们计算 ( (X_bTX_b){-1}X_b^T )。
  • 最后,我们通过乘以目标值向量 y 来得到最佳系数 theta_best

这样,我们就得到了最小化代价函数的系数向量 theta_best

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【LeetCode刷题】三数之和、四数之和

【LeetCode刷题】Day 6 题目1:LCR 7.三数之和思路分析:思路1:排序暴力枚举set去重思路2:单调性双指针细节处理去重 题目2:18.四数之和思路分析:思路1:排序暴力枚举set去重思路2:单调…

浅析智能体开发(第二部分):智能体设计模式和软件架构

大语言模型(LLM)驱动的智能体(AI Agent)展现出许多传统软件所不具备的特征。不仅与传统软件的设计理念、方法、工具和技术栈有显著的差异,AI原生(AI Native)的智能体还融入了多种新概念和技术。…

SparkSQL入门

1、SparkSQL是什么? 结论:SparkSQL 是一个即支持 SQL 又支持命令式数据处理的工具 2、SparkSQL 的适用场景? 结论:SparkSQL 适用于处理结构化数据的场景,而Spark 的 RDD 主要用于处理 非结构化数据 和 半结构化数据 …

【撸源码】【ThreadPoolExecutor】线程池的工作原理深度解析——上篇

1. 前言 线程池这块,作为高频面试题,并且实际使用场景巨多,所以出了这篇文章,一块来研究一下线程池的实现原理,运行机制,从底层深挖,不再局限于面试题。 2. 线程池概览 2.1. 构造器 线程池总…

Leecode热题100---55:跳跃游戏(贪心算法)

题目: 给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false 。 贪心算…

数据采集与AI分析,亮数据+通义千问助力跨境电商前行

文章目录 前言工具介绍数据采集工具亮数据Web Scraper IDE亮点 AI数据分析工具 实战电商数据采集与AI分析电商平台选取数据采集完全托管数据集自定义数据集 AI分析 价格总结 前言 随着信息技术的飞速发展,数据采集与AI分析在跨境电商中扮演着越来越重要的角色。通过…

Langchain:数据连接封装、缓存封装和LCEL学习和探索

🌵 目录 🌵 😋 数据连接封装 🍔 文档加载器:Document Loaders 文档处理器:TextSplitter 向量数据库与向量检索 总结 🍉 缓存封装:Memory 🏖️ 对话上下文&#xf…

urllib_post请求_百度翻译

打开百度翻译,并打开控制台,输入spider,然后在网络中找到对应的接口,可以看出,该url是post请求 在此案例中找到的接口为sug,依据为: 可以看到,传递的数据为kw : XXX, 所…

Hadoop3:HDFS的Fsimage和Edits文件介绍

一、概念 Fsimage文件:HDFS文件系统元数据的一个永久性的检查点,其中包含HDFS文件系统的所有目 录和文件inode的序列化信息。 Edits文件:存放HDFS文件系统的所有更新操作的路径,文件系统客户端执行的所有写操作首先 会被记录到Ed…

移动云ECS主机:未来云计算的驱动力

文章目录 前言一、移动云云主机ECS云主机ECS产品优势云主机ECS产品功能云主机ECS应用场景 二、移动云云主机ECS选购三、移动云云主机ECS配置四、移动云云主机ECS牛刀小试五、移动云云主机ECS安装部署消息中间件RocketMQ云主机ECS安装RocketMQ云主机ECS配置RocketMQ云主机ECS启动…

如何做好云安全防护

随着云计算技术的迅猛发展和普及,越来越多的企业和个人选择将数据和业务应用迁移到云平台,以享受其带来的高效、便捷和可扩展性。然而,云环境的复杂性和开放性也带来了前所未有的安全挑战。如何确保云环境中的数据安全,成为了每一…

【Linux】lsblk 命令使用

lsblk 命令 lsblk 是一个在 Linux 系统中用来列出所有可用的块设备(例如硬盘驱动器、固态硬盘、USB 驱动器等)的命令行工具。它提供了关于这些设备的详细信息,包括它们的名称、大小、类型、挂载点等。 语法 lsblk [选项] 选项及作用 执行…

LabVIEW高温往复摩擦测试系统中PID控制

在LabVIEW开发高温往复摩擦测试系统中实现PID控制,需要注意以下几个方面: 1. 系统建模与参数确定 物理模型建立: 首先,需要了解被控对象的物理特性,包括热惯性、摩擦系数等。这些特性决定了系统的响应速度和稳定性。实验数据获取…

PVE 虚拟机环境下删除 local-lvm分区

1、删除逻辑卷 lvremote pve/data 2、扩展逻辑卷 lvextend -l 100%FREE -r pve/root 3、 修改存储目录内容 点击 Datacenter - Storage (1)删除local-lvm分区 (2)编辑local分区,在内容一项中勾选所有可选项。

黑龙江等保测评深入理解

“没有网络安全,就没有国家安全”,等级保护测评是指按照网络安全系统制定的一系列的防护过程,对已经有的和即将上线的商业服务的基础设施(系统,数据库,中间件等)所做的一系列的检查,…

Thinkphp3.2.3网站后台不能访问如何修复

我是使用Thinkphp3.2.3新搭建的PHP网站,但是网站前台可以访问,后台访问出现如图错误: 由于我使用的Hostease的Linux虚拟主机产品默认带普通用户权限的cPanel面板,对于上述出现的问题不清楚如何处理,因此联系Hostease的…

第3天 Web源码拓展_小迪网络安全笔记

1.关于web源码目录结构 #数据库配置文件 后台目录 模板目录 数据库目录 1.1数据库配置文件: 1.1就拿wordpress来说,先到官网下载源码:Download – WordPress.org,解压源码之后: 2.2找到目录下名为 wp-config-sample.php的文件,这就是数据库配置文件: 设想: 我们在渗透…

如何将word插入的形状转成图片(高清)导出?

文章目录 前言(不感兴趣可以直接看正文)一、新建画布二、插入形状三、复制四、粘贴为图片五、另存为总结 前言(不感兴趣可以直接看正文) 因为我毕业论文里的图片刚开始使用画图软件画的,但到后期论文即将胶印的时候&a…

Agent将如何影响和重塑企业服务市场?

在Sam Altman、吴恩达等几位AI业界人士的“带货”之下,Agent作为新一代生产力工具的巨大潜力和广泛的应用前景终于“破圈”、被更多的看到和讨论。其实在2023年时,我就预测过,2024年会是大语言模型应用落地和Agent的元年。 为什么Agent会是大…