IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 元宵节 自回归模型 -> 正文阅读

[人工智能]元宵节 自回归模型

自回归模型(AutoRegression Model)可以用来预测时间序列将来的值,该模型假定前后值之间的关系是线性的。在使用该模型时,通常要假定一个随机变量的值依赖于它前面的值。我们要做的是拟合数据,为数据找到适当的参数。自回归模型的数学公式如下:
x t x_t xt?=c+ ∑ i = 1 p a i ? x k \sum_{i=1}^{p}a_i*x_k i=1p?ai??xk?+ g t g_t gt? (k=t-i)
上述公式中,c为常量,最后一项为随机分量,又称为白噪声。
在进行回归分析时,如果在样本拟合程度非常好的情况下引入新的数据点,可能会出现拟合表现立刻变差的情况。我们可以通过交叉验证,或者使用没有过拟合问题的算法来解决这个问题。
下面通过scipy.optimize.least()函数来搭建一个模型,我们用太阳黑子的数据来训练该模型。代码如下:

'''Xu Yong Kang'''
from scipy.optimize import leastsq
import statsmodels.api as sm
import matplotlib.pyplot as plt
import numpy as np

#使用scipy.optimize.leastp函数来搭建模型
def model(p,x1,x10):
    p1,p10=p
    return p1*x1+p10*x10

def error(p,data,x1,x10):
    return data-model(p,x1,x10)

#拟合模型
def fit(data):
    p0=[0.5,0.5]
    params=leastsq(error,p0,args=(data[10:],data[9:-1],data[:-10]))
    return params

#在太阳黑子数据集上训练模型
data_loader=sm.datasets.sunspots.load_pandas()
sunspots=data_loader.data['SUNACTIVITY'].values
cutoff=0.9*len(sunspots)
params=fit(sunspots[:int(cutoff)])
print('Params',params)    #得到参数
print(params[0].shape)
print(params[1])
#预测值并计算各指标
pred=params[0][0]*sunspots[int(cutoff-1):-1]+params[0][1]*sunspots[int(cutoff-10):-10]
actual=sunspots[int(cutoff):]

print('Root mean square error',np.sqrt(np.mean((actual-pred)**2)))
print('Mean absolute error',np.mean(np.abs(actual-pred)))
print('Mean absolute percentage error',100*np.mean(np.abs(actual-pred)/actual))
print('Cofficient of determination',1-((actual-pred)**2).sum()/((actual-actual.mean())**2).sum())

year_range=data_loader.data['YEAR'].values[int(cutoff):]
plt.plot(year_range,actual,'x',label='Actual Sunspots',color='red')
plt.plot(year_range,pred,'o',label='Prediction',color='blue')
plt.grid(True)
plt.xlabel('Year')
plt.ylabel('Activity')
plt.legend()
plt.show()

我们可以从训练结果中得到参数

Params (array([0.67172672, 0.33626295]), 2)

通过这些可以得到预测值
太阳黑子预测
从图中我们可以发现,许多预测几乎是成功的,但也有一些效果很差。
注:
在pred的计算上存在一个关于numpy广播的问题

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-02-16 13:05:31  更:2022-02-16 13:05:51 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 20:25:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码