回归分析系列14— 多项式回归

news2024/12/23 5:27:38

17 多项式回归

17.1 简介

多项式回归是线性回归的一种扩展,它允许回归模型包括输入变量的高次项。这种方法特别适合处理非线性关系的数据。

17.2 多项式回归模型

在多项式回归中,模型形式如下:

eq?y%20%3D%20%5Cbeta_0%20+%20%5Cbeta_1%20x%20+%20%5Cbeta_2%20x%5E2%20+%20%5Cdots%20+%20%5Cbeta_p%20x%5Ep%20+%20%5Cepsilon

其中,p 是多项式的阶数,β0,β1,…,βp是待估计的系数。通过增加高次项,模型能够捕捉到输入变量与输出变量之间的非线性关系。

在Python中,我们可以使用scikit-learn中的PolynomialFeaturesLinearRegression类来实现多项式回归。

import numpy as np
import matplotlib.pyplot as plt
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
from sklearn.pipeline import make_pipeline

# 生成模拟数据
np.random.seed(42)
X = np.sort(np.random.rand(100, 1) * 10, axis=0)
y = 2 - 3 * X + X**2 + np.random.randn(100, 1) * 2

# 构建多项式回归模型
degree = 2  # 二次多项式
polyreg = make_pipeline(PolynomialFeatures(degree), LinearRegression())
polyreg.fit(X, y)

# 预测
X_fit = np.linspace(0, 10, 100).reshape(-1, 1)
y_pred = polyreg.predict(X_fit)

# 绘图
plt.scatter(X, y, color='blue')
plt.plot(X_fit, y_pred, color='red')
plt.xlabel('X')
plt.ylabel('y')
plt.title(f'Polynomial Regression (degree={degree})')
plt.show()

17.3 选择多项式的阶数

在多项式回归中,选择合适的多项式阶数非常重要。阶数过低可能导致欠拟合,而阶数过高则可能导致过拟合。通过交叉验证,可以帮助我们选择最合适的阶数。

from sklearn.model_selection import cross_val_score

# 定义不同阶数的多项式
degrees = [1, 2, 3, 4, 5]

# 评估不同阶数下的模型性能
for degree in degrees:
    polyreg = make_pipeline(PolynomialFeatures(degree), LinearRegression())
    scores = cross_val_score(polyreg, X, y, scoring='neg_mean_squared_error', cv=5)
    print(f"Degree {degree}: Mean Squared Error: {-scores.mean():.2f}")

17.4 高维数据中的多项式回归

在处理高维数据时,多项式回归容易产生过拟合问题。为了缓解这一问题,可以结合正则化技术,如岭回归或套索回归。

from sklearn.linear_model import Ridge

# 构建正则化的多项式回归模型
degree = 3
polyreg_ridge = make_pipeline(PolynomialFeatures(degree), Ridge(alpha=1.0))
polyreg_ridge.fit(X, y)

# 预测
y_pred_ridge = polyreg_ridge.predict(X_fit)

# 绘图
plt.scatter(X, y, color='blue')
plt.plot(X_fit, y_pred_ridge, color='red')
plt.xlabel('X')
plt.ylabel('y')
plt.title(f'Ridge Polynomial Regression (degree={degree})')
plt.show()

17.5 多项式回归的应用

多项式回归适用于许多实际问题,特别是当数据中存在明显的非线性关系时。例如,在经济学中,多项式回归可以用于预测非线性趋势的经济指标;在医学研究中,它可以用于建模药物剂量与疗效之间的复杂关系。

 

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

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

相关文章

Vue项目-三级联动的路由跳转与传参

三级联动组件的路由的跳转与传参 三级联动,用户可以点击的:一级分类、二级分类和三级分类 以商城项目为例,Home模块跳转到Search模块,以及会把用户选中的产品(产品名字、产品ID)在路由跳转的时候&#xff…

【控糖有道,健康无忧!糖尿病患者的饮食黄金法则大揭秘】

在快节奏的现代生活中,糖尿病作为一种常见的慢性疾病,正悄然影响着越来越多人的生活质量。面对这一挑战,科学合理的饮食管理成为了控制病情、提升生活品质的关键。今天,就让我们一同揭开糖尿病饮食的黄金法则,让“控糖…

CentOS服务器三级等保加固

1.密码周期: vim /etc/login.defs max_days:90 mindays:2 minlen:8 warnage:72.密码复杂度: vim /etc/pam.d/system-auth : password requisite pam_cracklib.so retry3 difok3 minlen8 lcredit-1 dcredit-1 ucredit-1 ocredit-1 【Ubuntu系统->vim /etc/pam.d/c…

Linux组的介绍,所有者,所在组,修改所在组

目录 linux组的介绍 文件/目录所有者 组的创建 文件/目录所在组 其它组 改变用户所在组 linux组的介绍 每个用户必须属于一个组,不能独立于组外。 这个文件是谁创建的,这个文件的所有者就是谁。 这个文件属于组1,那么组2对它来说就…

VoLTE基本信令流程(整理的学习笔记)

VoLTE基本信令流程 1. 注册基本过程 UE进行Attach,建立QCI9的默认承载使用IMS APN建立PDN连接,建立 QCI5 的默认承载,用于传送 SIP 信令,同时获取到了IMS入口的P-CSCF地址信息UE 通过 QCI5 的默认承载向 IMS 发起注册请求IMS 域…

亚马逊ERP全功能 无隐藏收费的几个地方

亚马逊全功能 ERP 采集图片订单翻译,无任何隐藏收费。 说说有关采集和管理的软件!1. 对于做跟卖的人来说需要大量采集产品,采集过来的产品还需要进行文本、图片翻译、修图等操作,图片储存和站点维护另算。市面上有些 ERP 软件在这…

美国高防服务器到底怎么选

美国高防服务器因其强大的硬件设施、高度的网络连接性、丰富的带宽资源和先进的防御技术而受到全球用户的欢迎。以下是选择美国高防服务器时需要考虑的关键因素,rak部落为您整理发布美国高防服务器到底怎么选。 确定服务器需求 容量和带宽:根据业务规模…

共享电动单车管理系统 ---附源码131016

摘 要 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于共享电动单车管理系统当然也不能排除在外,随着网络技术的不断成熟,带动了共享电动单车管理系统,它彻底…

React 学习——Class类组件生命周期函数

componentDidMount:组件渲染完执行一次,发送网络请求 componentWillUnmount:组件卸载的时候执行,副作用(清理的工作 清除定时器 事件绑定) import { Component,useState } from react; class Counter e…

敏捷架构开发方法和实践:迎接数字化时代的挑战

在当前飞速发展的数字化时代,传统企业架构的局限性日益显现,特别是在应用敏捷方法的过程中,许多企业发现其架构和组织结构无法支持真正的敏捷转型。为应对这一挑战,《数字化时代的敏捷架构》提出了一个全新的架构框架——敏捷架构…

Typora 软件介绍和利用

Typora 软件介绍 Typora 是一款功能强大的 Markdown 编辑器,以简洁直观的设计和无缝的实时预览而著称。本文将详细介绍 Typora 的功能、优势以及使用体验。 目录 简介主要功能软件优势使用体验系统支持安装与设置 简介 Typora 是一款由 Abner Lee 开发的 Markdo…

最新完整版手机APP软件应用下载类网站模板源码/手游导航源码app软件下载

源码简介: 手机APP软件应用下载类网站模板源码,它是最新完整版,也是手游导航源码,app软件排行榜下载网页源码。 这是一款带有强大后台的app软件手游类源码,界面设计得很漂亮,非常适合做app软件、手机软件…

PPT分享:埃森哲-流程制造的智能工厂规划设计

在分享PPT之前,笔者与大家一起熟悉下,流程制造是什么,与离散制造有哪些区别。 往期回顾>> 125页PPT:某行业数据架构蓝图规划方案 170页PPT:制造业采购供应链及财务管控业务流程蓝图规划 60页PPT:集团SRM项目业…

OpenGL-ES 学习(8) ---- FBO

目录 FBO OverViewFBO 优点使用FBO的步骤 FBO OverView FBO(FrameBuffer Object) 指的是帧缓冲对象,实际上是一个可以添加缓冲区容器,可以为其添加纹理或者渲染缓冲区对象(RBO) FBO(FrameBuffer Object) 本身不能用于渲染,只有添加了纹理或者…

【JS】如何给fetch添加超时功能

前言 Ajax有两种方式实现请求,分别是xhr和fetch,前者有超时功能,fetch则不然。下文尝试给fetch添加超时功能。 实现 使用终止器,在controller.abort()时便会在使用其signal信号的fetch函数发送一个终止信号,请求就会…

PTA 求整数的位数及各位数字之和

对于给定的正整数N,求它的位数及其各位数字之和。 输入格式: 输入在一行中给出一个不超过109的正整数N。 输出格式: 在一行中输出N的位数及其各位数字之和,中间用一个空格隔开。 输入样例: 321输出样例&#xff…

maven进阶(超详细)

多模块开发 1.抽取entity模块 将先前的SSMProject01项目中的entity文件夹抽取出来,成为一个独立的模块 在SSMProject01项目中引入maven_03_entity 首先找到maven_03_entity的pom文件 直接引入SSMProject01 尝试编译(compile)SSMProject01项…

前后端分离项目实战-通用管理系统搭建(前端Vue3+ElementPlus,后端Springboot+Mysql+Redis)第三篇:登录功能优化

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

Vue自己实现监视数据、Vue.set创建属性、Vue监视数据的原理

目录 1. 自己实现监视数据2. 使用Vue.set创建一个数据属性3. Vue监视数据的原理 1. 自己实现监视数据 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> </head> <body&g…

【blender小技巧】如何拆分模型、合并和删除模型,删除多余骨骼

文章目录 前言进入面选择模式选取全部面拆分模型1、选中项——单独拆分2、按材质——按材质拆分3、按按松散块 合并模型删除模型某一块删除多余骨骼1、手动删除2、使用CATS插件的Fix Model 最终效果完结 前言 有时候&#xff0c;我们得到的模型是一个整体&#xff0c;想修改其…