多项式回归

news2024/11/17 11:38:10

多项式回归

  • 多项式回归 是非线性回归的一种,之前讨论的线性回归都是直线,而多项式回归则是曲线的回归,它通过引入原始预测变量的高阶项(如平方、立方等)来拟合数据的非线性模式。
  • 在多项式回归中,虽然模型对数据的关系是非线性的,但它依然是线性的,因为这种非线性体现在特征变换上,而不是模型的系数和变量之间的关系。这就是为什么多项式回归被视为线性回归的一个特例。
  • 例如,一个二次多项式回归模型可以表述为 y = β 0 + β 1 x + β 2 x 2 + ϵ y = \beta_0 + \beta_1x + \beta_2x^2 + \epsilon y=β0+β1x+β2x2+ϵ,其中模型对于系数 (\beta) 是线性的,尽管它对于 (x) 是非线性的。

本文基于教程链接数据基于https://github.com/trekhleb/homemade-machine-learning/blob/master/data/non-linear-regression-x-y.csv

首先,我们取到的数据集散点图如下,这种情况下用一条直线来回归则有些不恰当:
在这里插入图片描述
所以就需要使用一条多项式来模拟曲线回归。在多项式回归中最重要的就是选择多项式的复杂度,
Y = β 0 + β 1 X + β 2 X 2 + β 3 X 3 + . . . + β n X n + ϵ Y = \beta_0 + \beta_1X + \beta_2X^2 + \beta_3X^3 + ... + \beta_nX^n + \epsilon Y=β0+β1X+β2X2+β3X3+...+βnXn+ϵ多项式的复杂度(即公式中的n)不宜太低(欠拟合)或过高(过拟合)。如下图就是过低导致的欠拟合:
在这里插入图片描述
具体python代码如下:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split #用于划分训练集和测试集。
from sklearn.preprocessing import PolynomialFeatures #用于生成多项式特征。
from sklearn.linear_model import LinearRegression #用于执行线性回归。
from sklearn.metrics import mean_squared_error #用于评估模型性能。


# 导入数据
path = 'non-linear-regression-x-y.csv'
data = pd.read_csv(path)

# 分离特征和目标变量
X = data['x'].values.reshape(-1, 1)  # 重塑X为二维数组
y = data['y'].values

"""
绘制数据散点图
"""
# 绘制散点图
plt.scatter(X, y)
plt.xlabel('X Value')
plt.ylabel('Y Value')
plt.title('Scatter Plot of X vs Y')
plt.show()

# 创建多项式特征(例如,二次多项式)
poly = PolynomialFeatures(degree=8)
X_poly = poly.fit_transform(X)

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X_poly, y, test_size=0.3, random_state=42)

# 创建并训练模型
model = LinearRegression()
model.fit(X_train, y_train)

# 预测
y_pred = model.predict(X_test)

# 评估模型
mse = mean_squared_error(y_test, y_pred)
print(f"均方误差: {mse}")

# 可选:绘制模型拟合结果
import matplotlib.pyplot as plt
plt.scatter(X, y, color='blue')
plt.plot(X, model.predict(poly.fit_transform(X)), color='red')
plt.title('Non-linear Regression')
plt.xlabel('X')
plt.ylabel('Y')
plt.show()

多项式回归的结果如下,本数据集中使用了degree=8(即n=8)均方误差: 107.16818285704927:
在这里插入图片描述

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

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

相关文章

06 python 文件基础操作

6.1 .1文件读取操作 演示对文件的读取 # 打开文件 import timef open(02_word.txt, r, encoding"UTF-8") print(type(f))# #读取文件 - read() # print(f读取10个字节的结果{f.read(10)}) # print(f读取全部字节的结果{f.read()})# #读取文件 - readLines() # lines…

头歌-Python 基础

第1关:建模与仿真 1、 建模过程,通常也称为数学优化建模(Mathematical Optimization Modeling),不同之处在于它可以确定特定场景的特定的、最优化或最佳的结果。这被称为诊断一个结果,因此命名为▁▁▁。 填空1答案:决…

Talk | UCSB博士生王丹青: 大语言模型的协作学习以及个性化生成评估

本期为TechBeat人工智能社区第555期线上Talk。 北京时间12月13日(周三)20:00,加州大学圣塔芭芭拉分校博士生—王丹青的Talk已准时在TechBeat人工智能社区开播! 她与大家分享的主题是: “大语言模型的协作学习以及个性化生成评估”,介绍了她的…

re:Invent 产品体验分享:Amazon ElastiCache Serverless 缓存即时扩展功能与感受

授权说明:本篇文章授权活动官方亚马逊云科技文章转发、改写权,包括不限于在亚马逊云科技开发者社区、 知乎、自媒体平台、第三方开发者媒体等亚马逊云科技官方渠道)。 文章目录 前言产品介绍产品使用步骤1.创建缓存服务2.安全组开放访问权限…

高效营销系统集成:百度营销的API无代码解决方案,提升电商与广告效率

百度营销API连接:构建无代码开发的高效集成体系 在数字营销的高速发展时代,企业追求的是快速响应市场的能力以及提高用户运营的效率。百度营销API连接正是为此而生,它通过无代码开发的方式,实现了电商平台、营销系统和CRM的一站式…

uniapp用picker实现自定义三级联动(children)

数据大概得结构&#xff1a; html: <view class"invite"><u-cell title"点击选则" isLink :value"value" click"showstrue"></u-cell><u-picker :show"shows" ref"uPicker" :columns"…

微服务最佳实践:构建可扩展且高效的系统

微服务架构彻底改变了现代软件开发&#xff0c;提供了无与伦比的敏捷性、可扩展性和可维护性。然而&#xff0c;有效实施微服务需要深入了解最佳实践&#xff0c;以充分发挥微服务的潜力&#xff0c;同时避免常见的陷阱。在这份综合指南中&#xff0c;我们将深入研究微服务的关…

【Vue】vue增加导航标签

系列文章 【Vue】vue增加导航标签 本文链接&#xff1a;https://blog.csdn.net/youcheng_ge/article/details/134965353 【Vue】Element开发笔记 本文链接&#xff1a;https://blog.csdn.net/youcheng_ge/article/details/133947977 【Vue】vue&#xff0c;在Windows IIS平台…

关于pytorch中的dim的理解

今天碰到一个代码看起来很简单&#xff0c;但是细究原理又感觉好像不太通不太对劲&#xff0c;就是多维tensor数据的操作&#xff0c;比如&#xff1a;y.sum(dim2)&#xff0c;乍一看很简单数据相加操作&#xff0c;但是仔细一想&#xff0c;这里在第3维度的数据到底是横向相加…

Python中的继承:概念、用法与示例

目录 一、引言 二、继承的概念 三、继承的用法 1、继承父类的属性和方法 2、添加新的属性和方法 3、覆盖父类的方法 四、示例代码展示 五、继承中的多态性 六、继承中的封装和抽象 七、继承中的多重继承 总结 一、引言 面向对象编程&#xff08;OOP&#xff09;是一…

循环神经网络(1)循环神经网络的记忆能力实验

循环神经网络&#xff08;Recurrent Neural Network&#xff0c;RNN&#xff09;是一类具有短期记忆能力的神经网络&#xff0e;在循环神经网络中&#xff0c;神经元不但可以接受其他神经元的信息&#xff0c;也可以接受自身的信息&#xff0c;形成具有环路的网络结构&#xff…

node加密集合(前端加密、后台解密)

文章目录 一、crypto 加解密生成私密钥公钥加密&#xff08;也可私钥加密&#xff09;私钥解密&#xff08;也可公钥解密&#xff09; 二、node-rsa加解密生成公私秘钥使用公钥加密&#xff08;也可私钥加密&#xff09;使用私钥解密&#xff08;也可公钥解密&#xff09; 三、…

Shell三剑客:正则表达式(元字符)

一、定义&#xff1a;元字符字符是这样一类字符&#xff0c;它们表达的是不同字面本身的含义 二、分类&#xff1a; 1、基本正则表达式元字符 # ^ 行首定位 [rootlocalhost ~]# grep root /etc/passwd root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/…

洁丽雅×实在RPA丨用取数宝获取全域经营数据,成本降低80%以上

12月6日&#xff0c;实在智能“实力派数智先锋访谈节”邀请到洁丽雅数据部负责人韩宇轩&#xff0c;围绕“「取数宝」为企业带来效率提升和成本降低”的话题&#xff0c;为线上观众分享了洁丽雅在数字化转型过程中的实践和经验。 洁丽雅组建于2003年&#xff0c;前身是1986年成…

智能客服的应用——政务领域

#本文来源清华大学数据治理研究中心政务热线数智化发展报告 &#xff0c;如有侵权&#xff0c;请联系删除。 面对地方政务热线发展所面临的挑战&#xff0c;数智化转型已经成为了热线系统突破当前发展瓶颈、实现整体提质增效的关键手段。《意见》中也明确指出&#xff0c;政务…

用友 U8总账凭证打印设置

总账--凭证打印——设置 是设置凭证打印显示的格子框&#xff0c;勾上就有框&#xff0c;去掉就没有框。

打印机怎么扫描文件到电脑?6个步骤!轻松完成!

“在工作时我经常需要用到打印机&#xff0c;有时候需要将部分文件扫描到电脑。但是我不是很清楚应该如何操作&#xff0c;有什么方法可以让打印机快速传输文件到电脑的方法吗&#xff1f;” 在人们的工作和学习中&#xff0c;打印机成了很多用户的必备工具。人们可以用它来打印…

swing快速入门(八)

注释很详细&#xff0c;直接上代码 上一篇 新增内容 cardLayout布局管理器 事件监听器的创建与绑定 多种布局与容器的结合使用 import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener;public class swing_test_6 {public static v…

虚幻学习笔记14—重叠和碰撞事件

一、前言 在开发应用当中两个物体的重叠和碰撞事件会经常用到&#xff0c;在虚幻中哲两个有很大的区别&#xff0c;在官方文档碰撞概述其实已经讲了怎样发生碰撞和重叠&#xff0c;但是还是遗漏不少注意事项合细节&#xff0c;主要文档写的太粗糙了&#xff0c;这也让我在使用的…

线性回归问题

目录 一、线性回归关键思想 1、线性模型 2、基础优化算法 二、线性回归的从零开始实现 1、生成数据集 2、读取数据集 3、初始化模型参数 4、定义模型 5、定义损失函数 6、定义优化算法 7、训练 三、线性回归的简洁实现 1、生成数据集 2、读取数据集 3、定义模型…