numpy 多项式函数回归与插值拟合模型;ARIMA时间序列模型拟合

这篇具有很好参考价值的文章主要介绍了numpy 多项式函数回归与插值拟合模型;ARIMA时间序列模型拟合。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

参考:
https://blog.csdn.net/mao_hui_fei/article/details/103821601

1、多项式函数回归拟合

import numpy as np
from scipy.optimize import leastsq
import pylab as pl

x = np.arange(1, 17, 1)
y = np.array([4.00, 6.40, 8.00, 8.80, 9.22, 9.50, 9.70, 9.86, 10.00, 10.20, 10.32, 10.42, 10.50, 10.55, 10.58, 10.60])

# 第一个拟合,自由度为3
z1 = np.polyfit(x, y, 3)
# 生成多项式对象
p1 = np.poly1d(z1)
print(z1) ##多项式参数
print(p1) ##多项式函数

x ^3+ x ^2…
numpy 多项式函数回归与插值拟合模型;ARIMA时间序列模型拟合,知识点,numpy,回归,数据挖掘

from scipy.interpolate import interp1d
import numpy as np

# 假设有手机和船的时间和坐标数据
# 手机坐标数据
phone_time = [0, 1, 2, 3, 4, 5]
phone_x = [0, 2, 3, 5, 8, 10]
phone_y = [0, 1, 2, 3, 4, 5]

# 船坐标数据
ship_time = [0, 1, 2, 3, 4, 5]
ship_x = [0, 1, 1.5, 2, 2.5, 3]
ship_y = [0, 0.5, 0.75, 1, 1.25, 1.5]

# 多项式拟合
phone_polyfit_x = np.polyfit(phone_time, phone_x, 3)  # 选择三次多项式拟合(x坐标)
phone_polyfit_y = np.polyfit(phone_time, phone_y, 3)  # 选择三次多项式拟合(y坐标)
ship_polyfit_x = np.polyfit(ship_time, ship_x, 2)  # 选择二次多项式拟合(x坐标)
ship_polyfit_y = np.polyfit(ship_time, ship_y, 2)  # 选择二次多项式拟合(y坐标)

# 生成多项式对象
phone_poly_x = np.poly1d(phone_polyfit_x)
phone_poly_y = np.poly1d(phone_polyfit_y)
ship_poly_x = np.poly1d(ship_polyfit_x)
ship_poly_y = np.poly1d(ship_polyfit_y)

print(phone_polyfit_x )
print(phone_poly_x)    

# 测试拟合和插值函数
test_time = 2.5
phone_polyfit_x_result = phone_poly_x(test_time)
phone_polyfit_y_result = phone_poly_y(test_time)
ship_polyfit_x_result = ship_poly_x(test_time)
ship_polyfit_y_result = ship_poly_y(test_time)


print("多项式拟合结果:")
print("手机在时间{}的坐标: ({}, {})".format(test_time, phone_polyfit_x_result, phone_polyfit_y_result))
print("船在时间{}的坐标: ({}, {})".format(test_time, ship_polyfit_x_result, ship_polyfit_y_result))

2、多项式函数插值拟合

对于插值函数 interp1d(phone_time, phone_x, kind=‘cubic’),无法直接获取多项式的参数与具体函数表达式。这是因为该函数使用样条插值方法,它的内部实现是基于一组数据点来构建一个平滑的曲线,而不是使用多项式拟合。

样条插值使用的是一种分段函数,每个区间内使用了一个低次数的多项式函数来逼近数据点。因此,无法简单地表示为一个单一的多项式函数。

from scipy.interpolate import interp1d
import numpy as np

# 假设有手机和船的时间和坐标数据
# 手机坐标数据
phone_time = [0, 1, 2, 3, 4, 5]
phone_x = [0, 2, 3, 5, 8, 10]
phone_y = [0, 1, 2, 3, 4, 5]

# 船坐标数据
ship_time = [0, 1, 2, 3, 4, 5]
ship_x = [0, 1, 1.5, 2, 2.5, 3]
ship_y = [0, 0.5, 0.75, 1, 1.25, 1.5]

# 插值
phone_interp_x = interp1d(phone_time, phone_x, kind='cubic')  # 使用样条插值(x坐标)
phone_interp_y = interp1d(phone_time, phone_y, kind='cubic')  # 使用样条插值(y坐标)
ship_interp_x = interp1d(ship_time, ship_x, kind='linear')  # 使用线性插值(x坐标)
ship_interp_y = interp1d(ship_time, ship_y, kind='linear')  # 使用线性插值(y坐标)

print(phone_interp_x,phone_interp_x.__dict__ )
print(ship_interp_x,ship_interp_x.__dict__ )  

# 测试拟合和插值函数
test_time = 2.5

phone_interp_x_result = phone_interp_x(test_time)
phone_interp_y_result = phone_interp_y(test_time)
ship_interp_x_result = ship_interp_x(test_time)
ship_interp_y_result = ship_interp_y(test_time)

print("插值结果:")
print("手机在时间{}的坐标: ({}, {})".format(test_time, phone_interp_x_result, phone_interp_y_result))
print("船在时间{}的坐标: ({}, {})".format(test_time, ship_interp_x_result, ship_interp_y_result))

numpy 多项式函数回归与插值拟合模型;ARIMA时间序列模型拟合,知识点,numpy,回归,数据挖掘

3、ARIMA时间序列模型拟合

参考:https://blog.csdn.net/m0_46262108/article/details/122806515
https://blog.csdn.net/tecdat/article/details/128752078

安装:pip install statsmodels

import pandas as pd
from statsmodels.tsa.arima.model import ARIMA

# 假设有手机在不同时间点的坐标数据
mobile_data = [(1, 2, 10), (2, 3, 15), (3, 5, 20), (4, 6, 25)]
# 每个点为 (x, y, t) 坐标,其中 x 和 y 为手机在某个时间点的坐标值,t 为时间点

# 将坐标数据转换为 pandas DataFrame 格式
df = pd.DataFrame(mobile_data, columns=['x', 'y', 't'])

# 将时间点 t 设置为索引
df.set_index('t', inplace=True)

# 创建时间序列模型 (ARIMA 模型)
model_x = ARIMA(df['x'], order=(1, 0, 0))  # 设置 ARIMA 模型的 p、d、q 参数
model_y = ARIMA(df['y'], order=(1, 0, 0))

# 拟合模型
model_fit_x = model_x.fit()
model_fit_y = model_y.fit()

# 预测当前时间点的坐标值
current_t = 30  # 假设当前时间点为 t=30
predicted_x = model_fit_x.predict(end=current_t)
predicted_y = model_fit_y.predict(end=current_t)

print("Predicted x:", predicted_x.iloc[-1])
print("Predicted y:", predicted_y.iloc[-1])

numpy 多项式函数回归与插值拟合模型;ARIMA时间序列模型拟合,知识点,numpy,回归,数据挖掘文章来源地址https://www.toymoban.com/news/detail-570727.html

到了这里,关于numpy 多项式函数回归与插值拟合模型;ARIMA时间序列模型拟合的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python做曲线拟合(一元多项式拟合及任意函数拟合)

    目录 1. 一元多项式拟合 使用方法 np.polyfit(x, y, deg) 2. 任意函数拟合 使用 curve_fit() 方法 实例: (1)初始化 x 和 y 数据集 (2)建立自定义函数 (3)使用自定义的函数生成拟合函数绘图  polyfig 使用的是最小二乘法,用于拟合一元多项式函数。 参数说明: x 就是x坐标,

    2024年02月02日
    浏览(54)
  • 回归预测模型:MATLAB多项式回归

    1. 多项式回归模型的基本原理   多项式回归是线性回归的一种扩展,用于分析自变量 X X X 与因变量 Y Y Y 之间的非线性关系。与简单的线性回归模型不同,多项式回归模型通过引入自变量的高次项来增加模型的复杂度,从而能够拟合数据中的非线性模式。多项式回归模型可

    2024年02月19日
    浏览(41)
  • 每天五分钟机器学习:多项式非线性回归模型

    在前面的课程中,我们学习了线性回归模型和非线性回归模型的区别和联系。多项式非线性回归模型是一种用于拟合非线性数据的回归模型。与线性回归模型不同,多项式非线性回归模型可以通过增加多项式的次数来适应更复杂的数据模式。在本文中,我们将介绍多项式非线

    2024年02月16日
    浏览(48)
  • 牛顿插值法、拉格朗日插值法、三次插值、牛顿插值多项式、拉格朗日插值多项式

    两点式线性插值 调用Matlab库函数 拉格朗日二次插值: 牛顿二次插值 结果分析:通过对比不同插值方法,可以看到在一定范围内(高次会出现龙格现象),插值次数越高,截断误差越小(插值结果越接近于真实函数值);同时,对于相同次数的插值,由于不同的插值方法它们

    2024年02月11日
    浏览(48)
  • 多项式拟合

    文章内容部分参考: 建模算法入门笔记-多项式拟合(附源码) - 哔哩哔哩 (bilibili.com) (9条消息) 数学建模——人口预测模型 公有木兮木恋白的博客-CSDN博客 数学建模人口预测模型 多项式拟合是数据拟合的一种,与插值有一定区别(插值要求曲线经过给定的点,拟合不一定经

    2024年02月04日
    浏览(55)
  • Matlab 多项式拟合

    corrcoef函数 corrcoef函数用来计算矩阵相关系数。 (1)、corrcoef(x):若x为一个矩阵,返回的则是一个相关系数矩阵。 (2)、corrcoef(x,y):计算列向量x、y的相关系数,要求x、y具有相等的元素个数。如果x、y是矩阵,那么corrcoef函数会将其转换为列向量,相当于corrcoef([x(:),y(:)])。   p

    2024年02月11日
    浏览(51)
  • Matlab作图多项式拟合

    一、拟合函数 polyfit(s,y,n) polyval(p,x) poly2str(p,\\\' x \\\' ) 二、拟合步骤 1.做原始数据的散点图 2.选择恰当的次数n,用polyfit指令求得多项式 3.计算多项式p在x处的值 4.画出多项式函数的曲线图 三、拟合实例 对x等于1-10,y大于20小于40的随机数进行多项式拟合 x=1:10;y=20+20*rand(1,10);%定义

    2023年04月25日
    浏览(47)
  • 三次、五次多项式插值(附代码)

      三次、五次多项式插值在工程实践中很常见。求解多项式的系数最直接的方法是根据端点处的约束条件,列出线性方程组,再写成矩阵方程AX=B,然后用通用的方法(如高斯消元法、LU分解等)解矩阵方程。   本博文利用matlab符号计算的功能,给出三次、五次多项式插值的

    2024年02月06日
    浏览(50)
  • 基于Matlab的插值问题(Lagrange插值法、三次插值多项式)

    要求 1、 利用Lagrange插值公式 L n ( x ) = ∑ k = 0 n ( ∏ i = 0 , i ≠ k n x − x i x k − x i ) y k {L_n}(x) = sumlimits_{k = 0}^n {left( {prodlimits_{i = 0,i ne k}^n {frac{{x - {x_i}}}{{{x_k} - {x_i}}}} } right)} {y_k} L n ​ ( x ) = k = 0 ∑ n ​ ( i = 0 , i  = k ∏ n ​ x k ​ − x i ​ x − x i ​ ​ ) y k ​ 编写出

    2024年02月07日
    浏览(48)
  • 【Matlab】最小二乘法拟合多项式

    在最近的电机项目中,有遇到有传感器数据并不线性的问题,然后想要用最小二乘法做个曲线拟合,反过来去校准不线性的传感器的数据,因此记录一下使用最小二乘法来拟合多项式的曲线的步骤。本篇从最小二乘法的原始公式入手编写M文件,目的是方便使用单片机实现,或

    2023年04月22日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包