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

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

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

相关文章

5.22R语言初步学习-1

今天上课讲R语言,要干什么没讲,分析什么,目的是什么没讲。助教基本上就是让我们打开窗口,按要求抄代码指令,代码原理也没讲......再加上最近正好在学概率论与数理统计,肯定是有用的,所以还是学习…

PHP质量工具系列之php_CodeSniffer

PHP_CodeSniffer 是一组两个 PHP 脚本:主脚本 phpcs 对 PHP、JavaScript 和 CSS 文件进行标记,以检测是否违反定义的编码标准;第二个脚本 phpcbf 自动纠正违反编码标准的行为。PHP_CodeSniffer 是一个重要的开发工具,可以确保你的…

【简单介绍下近邻算法】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…

Python-3.12.0文档解读-内置函数hash()详细说明+记忆策略+常用场景+巧妙用法+综合技巧

一个认为一切根源都是“自己不够强”的INTJ 个人主页:用哲学编程-CSDN博客专栏:每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 详细说明 功能描述 参数 返回值 特性 使用示例 注意事项 记忆策略 常用场景 …

Predictable MDP Abstraction for Unsupervised Model-Based RL

ICML 2023 paper code Intro 文章提出了一种用于无监督基于模型强化学的方法,称为可预测MDP抽象(Predictable MDP Abstraction, PMA)。在MBRL中,一个关键部分是能够准确建模环境动力学动态模型。然而,这个预测模型误…

【SQL国际标准】ISO/IEC 9075:2023 系列SQL的国际标准详情

目录 🌊1. 前言 🌊2. ISO/IEC 9075:2023 系列SQL的国际标准详情 🌊1. 前言 ISO(国际标准化组织,International Organization for Standardization)是一个独立的、非政府间的国际组织,其宗旨是…

IPKISS ------ AMF 添加自定义层

IPKISS ------ AMF 添加自定义层 正文 正文 很多时候,我们想要添加属于我们自己的层,此时我们需要向 AMF pdk 中的 gdsii.py 和 layers.py 文件添加层的信息。这两个文件的目录如下: 在 gdsii.py 文件下的 TECH.GDSII.LAYERTABLE 字典中我们…

工业大模型带来智能生产新范式

在当前工业行业的发展背景下,大模型技术展现出广阔的应用前景,在提升专业知识的可获取性和传承、优化软件技术的应用、提高数据驱动决策的准确性和效率等方面拥有显著潜力。 ‍‍‍‍‍‍‍‍‍‍据了解,蓝卓“基于supOS工业操作系统的工业大…

查看目录或文件的磁盘使用情况

在排查问题过程中,会遇到磁盘占满,需要排查具体哪个文件占用比较大,此时可以使用du 命令 du [选项] [文件或目录...] 常用的选项包括: -h 或 --human-readable:以人类可读的格式(如 K、M、G)…

WAF绕过(下)

过流量检测 这里的流量检测就是在网络层的waf拦截到我们向webshell传输的数据包,以及webshell返回的数据 包,检测其中是否包含敏感信息的一种检测方式。如果是大马的情况下,可以在大马中添加多处判断代码,因此在执行大马提供的功…

吉林大学软件工程易错题

1.【单选题】软件工程方法是( )。 A、为开发软件提供技术上的解决方法 (软件工程方法 ) B、为支持软件开发、维护、管理而研制的计算机程序系统(软件工程工具) …

Vue 3 的 setup语法糖工作原理

前言 我们每天写vue3项目的时候都会使用setup语法糖,但是你有没有思考过下面几个问题。setup语法糖经过编译后是什么样子的?为什么在setup顶层定义的变量可以在template中可以直接使用?为什么import一个组件后就可以直接使用,无需…

KDE-Ambari-Metrics-Collector问题排查解决手册

文档说明 本文档是为了解决KDE平台的Ambari-Metrics-Collector服务在运行时遇到的问题而提供的问题排查和解决方法的参考文档 说明: 当前的Ambari-Metrics-Collector服务包括了ams-collector和ams-hbase两个程序,在Ambari-Metrics-Collector安装的节点执行ps -elf|grep am…

远动通讯屏具体干啥作用

远动通讯屏具体干啥作用 远动通讯屏主要用于电力系统中的各类发电厂、变电站、光伏电站、开闭所、配电房等,具有实时传输数据和远程控制功能。它的主要作用包括: 数据采集:远动通讯屏能够采集各种模拟量、开关量和数字量等信息&#xff0c…

pod介绍之 容器分类与重启策略

目录 一 pod 基础概念介绍 1,pod 是什么 2,Pod使用方式 3,如何解决一个pod 多容器通信 4,pod 组成 5, k8s 中的 pod 二 pause容器 1,pause容器 是什么 2,pause容器作用 3&#xff…

Vue开发实例(十三)用户登录功能

使用Vue实现登录具有以下几个好处: 响应式界面:Vue框架的响应式特性可以帮助开发者轻松地实现用户登录界面的交互效果,包括表单验证、实时错误提示等,从而提升用户体验。组件化开发:Vue框架支持组件化开发,…

最新版npm详解

如:npm中搜索 jQuery image.png image.png 接地气的描述:npm 类似于如下各大手机应用市场 image.png image.png 查看本地 node 和 npm 是否安装成功 image.png image.png 或 npm install -g npm image.png image.png image.png image.png image.…

【数据库】MySQL

文章目录 概述DDL数据库操作查询使用创建删除 表操作创建约束MySqL数据类型数值类型字符串类型日期类型 查询修改删除 DMLinsertupdatedelete DQL基本查询条件查询分组查询分组查询排序查询分页查询 多表设计一对多一对一多对多设计步骤 多表查询概述内连接外连接 子查询标量子…

这所211专硕22408复试线310分,学硕收调剂!辽宁大学计算机考研考情分析!

辽宁大学信息学院下设计算机科学与技术、电子信息科学与技术、通信工程、信息管理与信息系统、软件工程5个本科专业,有计算机软件与理论、计算机应用技术2个硕士学位授权点,软件工程和计算机技术两个专业硕士学位点,1个计算机应用研究所、1个…

案例题(第一版)

案例题目 软件架构设计考点(历年必考) 软件架构设计通常在每年的第一题,该题必考 必备概念 必备概念即考试必须要默写出来的概念 概念描述软件架构风格是指描述特定软件系统组织方式和惯用模式。组织方式描述了系统的组成构件和这些构件的组…