某市财政收入预测分析:GM模型+神经网络

2023-11-04

# from numpy.random import seed
# seed(1)
# import tensorflow
# tensorflow.random.set_seed(2) 

import numpy as np
import pandas as pd
data = pd.read_excel("",index=False) #指定文件路径
data1 = data.iloc[:-1,1:14]
data1

在这里插入图片描述

#描述性分析
r = [data1.min(),data1.max(),data1.mean(),data1.std()]
#r
r = pd.DataFrame(r,index=['MIN','MAX','MEAN','STD']).T
np.round(r,2)

在这里插入图片描述

#相关性分析
data2 = data.iloc[:-1,1:]
data2 = pd.DataFrame(data2)
np.round(data2.corr(method='pearson'),2)

在这里插入图片描述

x11相关性很低,可以考虑舍去

#标准化
import math
data3 = pd.DataFrame(data2,dtype=np.float)
dataNM = (data3-data3.min())/(data3.max()-data3.min())
#dataNM
#绘制折线图
from matplotlib import pyplot
import matplotlib.pyplot as plt

#x = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]

dataNM.plot()
plt.legend(loc='lower right',bbox_to_anchor=(1.2, -0.3),ncol=7)
plt.figure(figsize=(10,10))

在这里插入图片描述

#Lasso变量选择
from sklearn.linear_model import Lasso
model=Lasso()
model.fit(data2.iloc[:,0:13],data2['y'])
q = model.coef_#各特征系数
q = pd.DataFrame(q,index=['x1','x2','x3','x4','x5','x6','x7','x8','x9','x10','x11','x12','x13']).T
np.round(q,4)

在这里插入图片描述

x12系数为0,所以舍去的变量应该是x12

# GM模型,预测
def GM11(x0): #自定义灰色预测函数
    import numpy as np
    x1 = x0.cumsum() #1-AGO序列
    x1 = pd.DataFrame(x1)
    z1 = (x1 + x1.shift())/2.0 #紧邻均值(MEAN)生成序列
    z1 = z1[1:].values.reshape((len(z1)-1,1))  # 转成矩阵
    B = np.append(-z1, np.ones_like(z1), axis = 1)  # 列合并-z1和形状同z1的1值矩阵  19X2
    Yn = x0[1:].reshape((len(x0)-1, 1))  # 转成矩阵 19
    [[a],[b]] = np.dot(np.dot(np.linalg.inv(np.dot(B.T, B)), B.T), Yn) #计算参数,基于矩阵运算,np.dot矩阵相乘,np.linalg.inv矩阵求逆
    f = lambda k: (x0[0]-b/a)*np.exp(-a*(k-1))-(x0[0]-b/a)*np.exp(-a*(k-2)) #还原值
    delta = np.abs(x0 - np.array([f(i) for i in range(1,len(x0)+1)]))  # 残差绝对值序列
    C = delta.std()/x0.std()
    P = 1.0*(np.abs(delta - delta.mean()) < 0.6745*x0.std()).sum()/len(x0)
    return f, a, b, x0[0], C, P #返回灰色预测函数、a、b、首项、方差比、小残差概率

#x0=data_1['x3'][:-2].values



l=['x1','x2','x3','x4','x5','x6','x7','x8','x9','x10','x11','x13','y']
data4=data2[l].copy()
data4.index=range(1996,2017)
data4.loc[2017]=None
data4.loc[2018]=None  # 添加预测行
#data2.loc[2018]=None

for i in l:  # 列计算,预测每列2016、2017预测值
    f=GM11(data4[i][:-2].values)[0]  # 利用返回的灰色预测函数,仅和对对应期数及位置有关
    data4[i][2017]=f(len(data4)-1)
    data4[i][2018]=f(len(data4))
    #data2[i][2018]=f(len(data2))
    data4[i]=data4[i].round(2)
print(data4)

在这里插入图片描述

x变量预测的还能接受,但y变量出入太大了,所以选择神经网络模型预测y值

#神经网络预测模型
feature=['x1','x2','x3','x4','x5','x6','x7','x8','x9','x10','x11','x13']#特征所在列
data_train = data.iloc[:-1,1:]
data_pre = data4.iloc[:,:14]


data_mean = data_train.mean()
data_std = data_train.std()
data_train = (data_train-data_train.mean())/data_std #数据标准化

x_train = data_train[feature].as_matrix() #特征数据
y_train = data_train['y'].as_matrix() #标签数据

from keras.models import Sequential
from keras.layers.core import Dense,Activation

model = Sequential() #建立模型
model.add(Dense(input_dim=12,output_dim=12))
model.add(Activation('relu')) #激活函数
model.add(Dense(input_dim=12,output_dim=1))
model.compile(loss='mean_squared_error',optimizer='adam') #编译模型,目标函数是均方差
model.fit(x_train,y_train,nb_epoch=10000,batch_size=16) #训练模型

#预测还原结果
x = ((data_pre[feature]-data_mean[feature])/data_std[feature]).as_matrix()
data_pre[u'y_pred'] = model.predict(x)*data_std['y']+data_mean['y']

训练花费的时间较长

#画出预测图
import matplotlib.pyplot as plt
p=data_pre[['y','y_pred']].plot(subplots=True,style=['b-o','r-*'])
plt.show()

在这里插入图片描述

data_pre[['y','y_pred']].plot()

在这里插入图片描述

data_pre

在这里插入图片描述

#导出数据

#xlsx = r"C:\Users\18703\Desktop\天津市财政收入预测模型" + '预测结果' + 'xlsx'
data_pre.to_excel('预测.xlsx')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

某市财政收入预测分析:GM模型+神经网络 的相关文章

随机推荐

  • 区块链技术对金融行业有什么冲击?

    区块链技术在经过了长达十年的发展 被越来越多的行业关注 特别是一些大型企业 对区块链技术还进行了深入的研究 区块链技术也在更多的领域被应用 区块链技术的热度虽然很高 但目前的发展还处在初级阶段 其过多的应用场景也是没有得到更大的发展 区块链
  • 蓝桥杯练习系统入门水题

    好几天没写代码了 上蓝桥杯的练习系统看了一下 做了四道巨水题之后发现有些题还要vip 无语 问题描述 Fibonacci数列的递推公式为 Fn Fn 1 Fn 2 其中F1 F2 1 当n比较大时 F
  • (计算机组成原理)指令的寻址方式

    指令寻址方式是指指令或者操作数有效地址的寻找方式 主要分为数据寻址和指令寻址 指令的地址码字段往往并不是操作数的真实地址 而是形式地址 用A表示 A 即操作数形式地址所指向的存储介质的数值 用形式地址结合指令的寻址方式可以计算出操作数的真实
  • 快速调整毕业论文格式:调整参考文献的引用样式和段落格式

    在撰写毕业论文的过程 我们需要参考并引用大量的参考文献 之前有介绍了如何在Word中使用Endnote插入参考文献 但是从Endnote样式网站下载的样式可能和学校要求的参考文献的引用格式和段落样式有些出入 我们需要根据需求在下载样式上进行
  • 二叉树 Binary Tree

    二叉树 二叉树的基本概念 1 什么是二叉树 2 二叉树的优点和缺点 3 二叉树的基本名词 4 二叉树的性质 5 特别的二叉树 满二叉树 Full Binary Tree 完全二叉树 Complete Binary Tree 平衡二叉树 Ba
  • 【C++】多态

    文章目录 1 多态的基本概念 2 动态联编和静态联编 2 多态的原理剖析 3 计算器案例 4 抽象类与纯虚函数 5 虚析构和纯虚析构函数 6 向上类型转换和向下类型转换 1 多态的基本概念 多态性提法接口和具体实现之间的另一层隔离 多态改善
  • 计算机硬件结构简略介绍

    前言 计算机硬件结构简略介绍 一 计算机硬件 从软件开发者的角度来看 计算机硬件有三个部件最为关键 分别是中央处理器CPU 内存 I O控制芯片 二 早期 早期计算机 CPU的核心频率不高 和内存的频率一样 他们都是直接连接在同一个总线 b
  • 面试之设计模式(简单工厂模式)

    案例 在面试时 面试官让你通过面对对象语言 用Java实现计算器控制台程序 要求输入两个数和运算符号 得出结果 大家可能想到是如下 public static void main String args Scanner scanner ne
  • GDB print 详解

    GDB print 详解 分类 Linux GDB 2013 04 08 11 07 145人阅读 评论 0 收藏 举报 Linux GDB 察看变量 目录 print命令的格式是 print xxx p xxx 1 print 操作符 是
  • 请说出三种减少页面加载时间的方法

    1 尽量减少页面中重复的HTTP请求数量 2 服务器开启gzip压缩 3 css样式的定义放置在文件头部 4 Javascript脚本放在文件末尾 5 压缩合并Javascript CSS代码 6 使用多域名负载网页内的多个文件 图片
  • 在Windows 11 中安装和使用 WSL 2

    文章目录 列出可安装的发行版 分发 安装WSL 2 常用命令 显示帮助 启动分发 从powershell中退出分发 关闭正在运行的分发 立即终止所有正在运行的分发和 WSL 2轻型虚拟机 更新wsl 使用VSCode连接WSL 设置代理 换
  • QEMU-从buildroot里面编译kernel(7)

    上面是我的微信和QQ群 欢迎新朋友的加入 下载交叉编译工具 https snapshots linaro org gnu toolchain 选一个最新的 选择压缩包 解压 sudo apt get install g sudo mv gc
  • 网狐棋牌:数据库

    jeefwtwo 账号数据库 QPAccountsDB 账号账号数据库 QPGamescoreDB 游戏积分数据库 QPGameMatchDB 比赛数据库 QPPlatformDB 平台数据库 QPRecordDB 记录数据库 QPTrea
  • vue-video-player基本使用

    下载 npm install vue video player 如果不使用vue的话 可以直接去官网 或者cdn获取对应js即可 在vue中的基本使用 main js中 全局 import Vue from vue import VueVi
  • 线程与进程的对比、互斥锁和条件变量的使用-多线程编程

    线程与进程的对比 线程的概念是共享CPU的需要 进程概念是共享内存的需要 一个进程里代码段 数据段 堆是共享的 但是进程中的每个线程中的栈 寄存器内容独立 进程都是独立的 通常的IPC 管道 共享内存都可以通讯 处于一个线程的代码觉得它拥有
  • Redis基础知识(二):事务机制

    文章目录 一 什么是事务机制 二 Redis模式下如何实现事务机制 2 1 显式开启一个事务 2 2 将命令入队列Queue 2 3 执行事务或丢弃 2 4 EXEC命令执行示例 2 5 DISCARD命令 放弃事务 2 6 因为命令错误导
  • RabbitMQ用途及问题

    转自 https blog csdn net u013871100 column info 27053 1 用途 1 解耦 系统A在代码中直接调用系统B和系统C的代码 如果将来D系统接入 系统A还需要修改代码 过于麻烦 2 异步 将消息写入
  • ROS学习笔记(五)---话题发布

    1 话题通信是什么 在ROS 机器人操作系统 中 话题通信是一种常用的通信机制 用于在不同的ROS节点之间传递消息 话题通信基于发布者 订阅者模式 其中一个节点 发布者 发布消息到一个特定的话题 而其他节点 订阅者 可以订阅该话题以接收消息
  • 一篇文章让你深入了解RGB数据格式和互转(YUV数据组成)

    我们日常看到的图片 视频由RGB或YUV数据组成 说明 1 RGB分为RGB16 RGB24 RGB32 RGB RGB16 RGB24 RGB32 一 RGB分RGB16 RGB24 RGB32 1 RGB16格式分为RGB565 RGB
  • 某市财政收入预测分析:GM模型+神经网络

    from numpy random import seed seed 1 import tensorflow tensorflow random set seed 2 import numpy as np import pandas as