使用梯度下降法实现多项式回归

news2024/11/13 10:19:57

原文链接:使用梯度下降法实现多项式回归 - 柒墨轩 - 博客园

使用梯度下降法实现多项式回归

实验目的

本实验旨在通过梯度下降法实现多项式回归,探究不同阶数的多项式模型对同一组数据的拟合效果,并分析样本数量对模型拟合结果的影响。

实验材料与方法

数据准备
  1. 生成训练样本:我们首先生成了20个训练样本,其中自变量X服从均值为0,方差为1的标准正态分布。因变量Y由下述多项式关系加上均值为0,方差为1的误差项er​构成: Y=5+4X+3X2+2X3+er​​
  2. 数据可视化:使用Matplotlib库绘制了生成的数据点。
代码
import numpy as np
import matplotlib.pyplot as plt

# 设置随机种子以保证实验可重复性
np.random.seed(0)

# 生成20个训练样本
n_samples = 20
X = np.random.normal(0, 1, n_samples)
e_r = np.random.normal(0, 1, n_samples)  # 误差项

# 计算Y值
Y = 5 + 4 * X + 3 * X**2 + 2 * X**3 + e_r

# 使用matplotlib显示生成的数据
plt.figure(figsize=(8, 6))
plt.scatter(X, Y, color='blue', label='Actual data')
plt.title('Generated Data')
plt.xlabel('X')
plt.ylabel('Y')
plt.legend()
plt.grid(True)
plt.show()

模型定义
  1. 定义多项式回归模型:我们定义了一个MultinomialModel类,该类接受训练数据作为输入,并能够返回多项式模型的参数。类内部包括构造设计矩阵的方法、拟合数据的方法(使用梯度下降法)以及预测方法。
代码
class MultinomialModel:
    def __init__(self, degree):
        self.degree = degree
        self.coefficients = None
    
    def _design_matrix(self, X):
        """构造设计矩阵"""
        n_samples = len(X)
        design_matrix = np.ones((n_samples, self.degree + 1))
        for i in range(1, self.degree + 1):
            design_matrix[:, i] = X ** i
        return design_matrix
    
    def fit(self, X, Y, learning_rate=0.01, iterations=1000):
        """使用梯度下降法来拟合模型"""
        n_samples = len(X)
        self.coefficients = np.zeros(self.degree + 1)  # 初始化系数
        
        # 构造设计矩阵
        X_design = self._design_matrix(X)
        
        for _ in range(iterations):
            # 预测
            predictions = np.dot(X_design, self.coefficients)
            
            # 损失函数的导数
            gradient = 2 / n_samples * np.dot(X_design.T, predictions - Y)
            
            # 更新系数
            self.coefficients -= lea

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

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

相关文章

C# 离线激活码的实现方式

一、简介 离线激活码是一种在软件、游戏、应用程序或其他数字产品领域中常用的授权方式,旨在确保产品的合法使用并维护开发者的权益。当用户购买或获得这些产品的使用权后,开发者会提供一个唯一的、一次性的激活码给用户。与在线激活不同,离…

java工具安装教程

提示:先安装软件打开后关闭,在执行魔法操作 解压后会多个文件夹,从文件夹打开 要魔法哪款软件就打开对应的魔法脚本 比如:idea就运行idea魔法 点击打开 显示下面弹窗则成功,点击确定即可 打开IDEA查看:

51单片机-直流电机(PWM:脉冲宽度调制)实验-会呼吸的灯直流电机调速

作者:Whappy(菜的扣脚) 脉冲宽度调制(Pulse Width Modulation,PWM)是一种通过调节信号的占空比来控制功率输出的技术。它主要通过改变脉冲信号的高电平持续时间相对于低电平的时间来调节功率传递给负载的量…

上市公司-客户ESG数据集(dta+xlsx+参考文献)(2009-2023年)

参考《经济问题》中李普玲(2024)的做法,将供应商与主要客户数据对应起来,并对上市公司及关联上市公司的ESG数据进行匹配,形成“供应商——客户ESG”的数据集,保留客户的销售占比 一、数据介绍 数据名称&am…

标准管理系统Vue项目

系列文章目录 第一章 基础知识、数据类型学习 第二章 万年历项目 第三章 代码逻辑训练习题 第四章 方法、数组学习 第五章 图书管理系统项目 第六章 面向对象编程:封装、继承、多态学习 第七章 封装继承多态习题 第八章 常用类、包装类、异常处理机制学习 第九章 集…

Springboot与minio:

一、介绍 Minio是一个简单易用的云存储服务,它让你可以轻松地把文件上传到互联网上,这样无论你在哪里,只要有网络,就能访问或分享这些文件。如果你想要从这个仓库里取出一张图片或一段视频,让网站的访客能看到或者下载…

硬件体系架构的学习

硬件体系架构的学习 RISC全称Reduced Instruction Set Compute,精简指令集计算机; CISC全称Complex Instruction Set Computers,复杂指令集计算机。 SOC片上系统概念 System on Chip,简称Soc,也即片上系统。从狭义…

Spark-ShuffleWriter-UnsafeShuffleWriter-钨丝内存分配

一、上下文 《Spark-ShuffleWriter-UnsafeShuffleWriter》中提到在进行Page内存分配时,调用了一行代码 MemoryBlock page memoryManager.tungstenMemoryAllocator().allocate(acquired); 这里就会走MemoryManager的钨丝内存分配,下面我们来详细看下 …

python运行时错误:找不到fbgemm.dll

python运行时错误:找不到fbgemm.dll 报错: OSError: [WinError 126] 找不到指定的模块。 Error loading "D:\program\py\312\Lib\site-packages\torch\lib\fbgemm.dll" or one of its dependencies. 原因是Windows下缺失:libomp140…

Mastering openFrameworks_第十一章_网络

网络 网络为多个设备之间的数据交换提供了一种方式。它是一个主要组成部分,允许远程控制移动和平板设备应用程序中的一些参数,也用于使交互式项目在多台计算机上同步工作。在本章中,您将学习如何在openFrameworks项目中实现和使用OSC和TCP协…

BrainSegFounder:迈向用于神经影像分割的3D基础模型|文献速递--Transformer架构在医学影像分析中的应用

Title 题目 BrainSegFounder: Towards 3D foundation models for neuroimagesegmentation BrainSegFounder:迈向用于神经影像分割的3D基础模型 01 文献速递介绍 人工智能(AI)与神经影像分析的融合,特别是多模态磁共振成像&am…

系统安装CH384串口卡驱动

1. 解压驱动文件CH38XDRV.tar,并进入驱动目录 cd CH38XDRV/DRV_28S/LINUX/driver$ 2. 编译 sudo make edgeedge-PC:~/CH38XDRV/DRV_28S/LINUX/driver$ sudo make 请输入密码: 验证成功 make -C /lib/modules/4.19.0-arm64-desktop/build M/home/edge/CH38XDRV/DRV…

2024年【四川省安全员B证】新版试题及四川省安全员B证考试试卷

题库来源:安全生产模拟考试一点通公众号小程序 四川省安全员B证新版试题参考答案及四川省安全员B证考试试题解析是安全生产模拟考试一点通题库老师及四川省安全员B证操作证已考过的学员汇总,相对有效帮助四川省安全员B证考试试卷学员顺利通过考试。 1、…

数据库事务的详解

1、 介绍 什么是事务? 事务是一个原子操作。是一个最小执行单元。可以由一个或多个SQL语句组成,在同一个事务当中,所有的SQL语句都成功执行时,整个事务成功,有一个SQL语句执行失败,整个事务都执行失败。(一组操作同时…

计算机人工智能前沿进展-大语言模型方向-2024-09-14

计算机人工智能前沿进展-大语言模型方向-2024-09-14 1. Multimodal learning using large language models to improve transient identification of nuclear power plants B Qi, J Sun, Z Sui, X Xiao, J Liang - Progress in Nuclear Energy, 2024 使用大型语言模型进行多…

Html在线编辑器

Html在线编辑器提供富文本编辑器,在线文章编辑器,富文本编辑器,Html在线编辑器使用,具有高级功能的Html在线编辑器可全屏编辑,Web版Html在线编辑器在线使用,文章,网站编辑,微信公众号可以在线使用编辑器功能等。

select系统调用(实现I/O复用)

API 在一段指定时间内,监听用户感兴趣的文件描述符上的可读、可写、异常事件。 int select(int nfds, fd_set *readfds, fd_set *writefds,fd_set *exceptfds, struct timeval *timeout);文件描述符集合fd_set 是一个用于管理文件描述符集合的结构体。select调用…

flutter集成百度地图定位 ‘BMKLocationManager.h‘ file not found报错

一、写在前面 好久不见~最近接手了一个flutter的项目,需求是接入百度地图的定位插件。但是按照官网的文档来做,安卓没有问题,但是ios就惨了,各种编译报错。 flutter_bmflocation: ^3.6.0 集成报错 ‘BMKLocationManager.h’ fil…

Renesas R7FA8D1BH (Cortex®-M85)内部RTC的应用

目录 概述 1 软硬件 1.1 软硬件环境信息 1.2 开发板信息 1.3 调试器信息 2 FSP配置RTC 2.1 配置参数 2.2 RTC模块介绍 3 RTC相关函数 3.1 R_RTC_Open() 3.2 R_RTC_Close() 3.3 R_RTC_ClockSourceSet() 3.4 R_RTC_CalendarTimeSet() 3.5 R_RTC_CalendarTimeGet()…

HC-SR04超声波传感器详解(STM32)

目录 一、介绍 二、传感器原理 1.原理图 2.引脚描述 3.工作原理介绍 三、程序设计 main.c文件 ultrasonic.h文件 ultrasonic.c文件 四、实验效果 五、资料获取 项目分享 一、介绍 HC-SR04超声波传感器是通过发送和接收超声波,利用时间差和声音传播速度…