目录

程序简述

利用灰色预测GM11模型预测股票收盘价,由于灰色预测模型适合短期预测和小样本,所以程序输入数据为5个,输出为1个,进行动态建模

程序输入:原序列、需要往后预测的个数

程序输出:预测值、模型结构(后验差比、发展系数、灰色作用量)

灰色预测模型 (GM11)即对原始数据作累加生成(或其它方法生成)得到近似的指数规律再进行建模的方法。灰色预测模型对于不同问题采用不同模型,模型主要解决生成序列是有指数变化规律,只能描述单调的变化过程。

数据集截图

图1,上证指数股票数据,共7128行,但出于灰色预测的特性,本文只用了最后30个数据做实验

程序/数据集下载

核心代码解析(接口,可直接运行)

程序输入原序列和需要预测个数后会返回模型结构和预测值

# -*- coding: utf-8 -*-

import matplotlib.pyplot as plt

import pandas as pd

import numpy as np

def GM11(x,n):

'''

灰色预测

x:序列,numpy对象

n:需要往后预测的个数

'''

x1 = x.cumsum()#一次累加

z1 = (x1[:len(x1) - 1] + x1[1:])/2.0#紧邻均值

z1 = z1.reshape((len(z1),1))

B = np.append(-z1,np.ones_like(z1),axis=1)

Y = x[1:].reshape((len(x) - 1,1))

#a为发展系数 b为灰色作用量

[[a],[b]] = np.dot(np.dot(np.linalg.inv(np.dot(B.T, B)), B.T), Y)#计算参数

result = (x[0]-b/a)*np.exp(-a*(n-1))-(x[0]-b/a)*np.exp(-a*(n-2))

S1_2 = x.var()#原序列方差

e = list()#残差序列

for index in range(1,x.shape[0]+1):

predict = (x[0]-b/a)*np.exp(-a*(index-1))-(x[0]-b/a)*np.exp(-a*(index-2))

e.append(x[index-1]-predict)

S2_2 = np.array(e).var()#残差方差

C = S2_2/S1_2#后验差比

if C<=0.35:

assess = '后验差比<=0.35,模型精度等级为好'

elif C<=0.5:

assess = '后验差比<=0.5,模型精度等级为合格'

elif C<=0.65:

assess = '后验差比<=0.65,模型精度等级为勉强'

else:

assess = '后验差比>0.65,模型精度等级为不合格'

#预测数据

predict = list()

for index in range(x.shape[0]+1,x.shape[0]+n+1):

predict.append((x[0]-b/a)*np.exp(-a*(index-1))-(x[0]-b/a)*np.exp(-a*(index-2)))

predict = np.array(predict)

return {

'a':{'value':a,'desc':'发展系数'},

'b':{'value':b,'desc':'灰色作用量'},

'predict':{'value':result,'desc':'第%d个预测值'%n},

'C':{'value':C,'desc':assess},

'predict':{'value':predict,'desc':'往后预测%d个的序列'%(n)},

}

if __name__ == "__main__":

data = np.array([1.2,2.2,3.1,4.5,5.6,6.7,7.1,8.2,9.6,10.6,11,12.4,13.5,14.7,15.2])

x = data[0:10]#输入数据

y = data[10:]#需要预测的数据

result = GM11(x,len(y))

predict = result['predict']['value']

predict = np.round(predict,1)

print('真实值:',y)

print('预测值:',predict)

print(result)

接口调用、运行效果

Main.py

以上证指数为例,进行灰色预测建模,效果勉强,数据集的选择和预测长度很重要

# -*- coding: utf-8 -*-

from Module.BuildModel import GM11

from sklearn.metrics import mean_absolute_error

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

import os

#路径目录

baseDir = os.path.dirname(os.path.abspath(__file__))#当前目录

staticDir = os.path.join(baseDir,'Static')#静态文件目录

resultDir = os.path.join(baseDir,'Result')#结果文件目录

#读取数据

data = pd.read_csv(staticDir+'/000001.csv',encoding='gbk')

train = data['收盘价'].values[-15:-10]#训练数据

test = data['收盘价'].values[-10:]#测试数据

#GM11动态建模

yPre = []

for i in range(test.shape[0]):

#只预测1个数

result = GM11(train,1)

yPre.append(result['predict']['value'][0])

#更新训练集

train = train.tolist()[:-1]

train.append(test[i])

train = np.array(train).reshape(-1)

#计算MAE

MAE = mean_absolute_error(test,yPre)

#打印模型

print(result['C']['desc'])

print(result['a']['desc'],np.round(result['a']['value'],2))

print(result['b']['desc'],np.round(result['b']['value'],2))

#可视化

#用来正常显示中文标签

plt.rcParams['font.sans-serif']=['SimHei']

#用来正常显示负号

plt.rcParams['axes.unicode_minus']=False

plt.plot(range(test.shape[0]),yPre,label="预测值")

plt.plot(range(test.shape[0]),test,label="观测值")

plt.legend()

plt.title('GM11预测效果,MAE:%2f'%MAE)

plt.savefig(resultDir+'/GM11预测效果.png',dpi=100,bbox_inches='tight')

图2,程序输出,模型结构

图3,预测值和观测值对比折线图,对于短期预测GM11表现良好

标签:预测,为例,python,predict,result,np,import,GM11

来源: https://www.cnblogs.com/boom-meal/p/12368483.html

python灰色预测_python实现灰色预测模型(GM11)——以预测股票收盘价为例相关推荐

  1. python财务报表预测股票价格_python实现灰色预测模型(GM11)——以预测股票收盘价为例...

    原博文 2020-02-26 18:56 − [TOC] # 程序简介 利用灰色预测GM11模型预测股票收盘价,由于灰色预测模型适合短期预测和小样本,所以程序输入数据为5个,输出为1个,进行动态建模 ...

  2. 灰色预测模型python_python实现灰色预测模型(GM11)——以预测股票收盘价为例

    [TOC] 程序简介 利用灰色预测GM11模型预测股票收盘价,由于灰色预测模型适合短期预测和小样本,所以程序输入数据为5个,输出为1个,进行动态建模 程序输入:原序列.需要往后预测的个数 程序输出:预 ...

  3. python灰色预测_python 实现 灰色预测 GM(1,1)模型 灰色系统 预测 灰色预测公式推导...

    关键词:灰色预测 python 实现 灰色预测 GM(1,1)模型 灰色系统 预测 灰色预测公式推导 一.前言 本文的目的是用Python和类对灰色预测进行封装 二.原理简述 1.灰色预测概述 灰色预 ...

  4. python空气质量分析与预测_python 空气质量AQI数据分析与预测 ---分析,相关系数矩阵...

    版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/YmeBtc/article/details ...

  5. python求股票收益率_python – 有没有办法自动获取许多股票的一般信息,如市盈率,收益率等等?...

    历史将是困难的. R的 quantmod软件包有getQuote,它与yahooQF一起是获取当前值所需的全部内容. require("quantmod") getQuote(&q ...

  6. python金融分析小知识(14)——matplotlib多子图绘制(结合股票收盘价数据)

    Hello 大家好,我是一名新来的金融领域打工人,日常分享一些python知识,都是自己在学习生活中遇到的一些问题,分享给大家,希望对大家有一定的帮助! 今天给大家讲解一下我平时在进行数据可视化的时候 ...

  7. python灰色模型代码_python 实现 灰色预测 GM(1,1)模型 灰色系统 预测 灰色预测公式推导...

    来源公式推导连接 关键词:灰色预测 python 实现 灰色预测 GM(1,1)模型 灰色系统 预测 灰色预测公式推导 一.前言 本文的目的是用Python和类对灰色预测进行封装 二.原理简述 1.灰 ...

  8. python灰色预测模型步骤人口预测_超级干货:一文读懂灰色预测模型

    灰色预测模型可针对数量非常少(比如仅4个),数据完整性和可靠性较低的数据序列进行有效预测,其利用微分方程来充分挖掘数据的本质,建模所需信息少,精度较高,运算简便,易于检验,也不用考虑分布规律或变化趋势 ...

  9. 运用自回归滑动平均模型、灰色预测模型、BP神经网络三种模型分别预测全球平均气温,并进行预测精度对比(附代码、数据)

    大家好,我是带我去滑雪,每天教你一个小技巧!全球变暖是近十年来,人们关注度最高的话题.2022年夏天,蔓延全球40℃以上的极端天气不断刷新人们对于高温的认知,人们再也不会像从前那样认为全球变暖离我们遥 ...

最新文章

  1. response返回一段html,iframe调用后台方法通过response返回html代码
  2. Run application
  3. nginx配置静态资源访问路径
  4. java excil表格开发_JAVA导出Excel电子表格的方法
  5. fastapi quickstart学习
  6. 厉害了!90后奥运冠军被北大录取
  7. iceberg对接flinksql测试
  8. page fault in nonpaged area 蓝屏_电脑蓝屏解决四个小技巧
  9. 克隆卡设备_SD Clone for mac(SD卡克隆备份软件) v3.2
  10. centos7安装禅道
  11. python实现之初等函数二——反函数
  12. 今日头条,即将崛起为中国互联网第三极
  13. 前端面试之计算机网络篇
  14. 马斯克推荐的「50种认知偏差」,这是我见过的最爆笑的解读!
  15. FigDraw 13. SCI 文章绘图之桑葚图及文章复现(Sankey)
  16. AP模式(路由器的几种模式)
  17. 高斯模型混合模型–理论上可以拟合任意概率密度分布
  18. 从“任我行”博友转载的一篇文章:堆和栈的区别
  19. Python OpenCV绘画实现 油画效果、水彩效果
  20. 计算机坤论文题目,计算机毕业论文参考文献分享

热门文章

  1. IDE、SCSI接口区别
  2. 二次函数回归方程_高三||【高三专题】三角函数提优专题卷
  3. 如何自己编写一个交通仿真软件(一)火种。
  4. 送分了QAQ(前缀和)
  5. 关于LVGL下物理按键的使用
  6. OpenFOAM 张量运算
  7. [HSI论文阅读] | HybridSN: Exploring 3-D–2-D CNN Feature Hierarchy for Hyperspectral Image Classification
  8. 人工智能守护青山绿水 内蒙古环保厅引入阿里云ET环境大脑
  9. 怎样在小方框上打对号 小方框内打对勾 word 方框打对勾
  10. 涨姿势!3D游戏里的男女性角色是这样建模出来的