2.财政收入及各类别收入预测模型
(1)某市财政收入预测模型
对Adaptive-Lasso变量选择方法识别的影响财政收入的因素建立灰色预测与神经网络的组合预测模型,其参数设置为误差精度10-7,学习次数10000次,神经元个数为Lasso变量选择方法选择的变量个数6。社会从业人数(x1)、在岗职工工资总额(x2)、社会消费品零售总额(x3)、城镇居民人均可支配收入(x4)、城镇居民人均消费性支出(x5)、固定资产投资额(x7)指标的2014年及2015年数值均通过Python建立灰色预测模型得出。Python及流行的扩展库并没有提供灰色预测功能,因此我们自行编写了灰色预测函数(GM11.py)。预测结果的精度等级见表13-6。
表13-6 灰色预测模型地方财政收入相关因素精度表
地方财政收入灰色预测的数据处理见代码清单13-4。
代码清单13-4 地方财政收入灰色预测
#-*- coding: utf-8 -*- import numpy as np import pandas as pd from GM11 import GM11 #引入自己编写的灰色预测函数 inputfile = '../data/data1.csv' #输入的数据文件 outputfile = '../tmp/data1_GM11.xls' #灰色预测后保存的路径 modelfile = '../tmp/net.model' #模型保存路径 data = pd.read_csv(inputfile) #读取数据 data.index = range(1994, 2014) data.loc[2014] = None data.loc[2015] = None l = ['x1', 'x2', 'x3', 'x4', 'x5', 'x7'] for i in l: f = GM11(data[i][range(1994, 2014)].as_matrix())[0] data[i][2014] = f(len(data)-1) #2014年预测结果 data[i][2015] = f(len(data)) #2015年预测结果 data[i] = data[i].round(2) #保留两位小数 data[l+['y']].to_excel(outputfile) #结果输出
代码详见:demo/code/1-huise.py
将数据零均值标准化后,代入地方财政收入所建立的3层神经网络预测模型(输入层6节点,隐藏层12节点,输出层1节点),得到某市财政收入2015年的预测值为2366.42亿元,相关数据见表13-7,其中红色字体的数据为预测数据。图13-2为神经网络地方财政收入真实值与预测值对比图。
表13-7 地方财政收入及其相关因素历史数据和预测表
数据详见:demo/data/revenue.xls
图13-2 地方财政收入真实值与预测值对比图
代码清单13-5为地方财政收入神经网络预测模型。
代码清单13-5 地方财政收入神经网络预测模型
#-*- coding: utf-8 -*- import pandas as pd inputfile = '../tmp/data1_GM11.xls' #灰色预测后保存的路径 outputfile = '../data/revenue.xls' #神经网络预测后保存的结果 modelfile = '../tmp/1-net.model' #模型保存路径 data = pd.read_excel(inputfile) #读取数据 feature = ['x1', 'x2', 'x3', 'x4', 'x5', 'x7'] #特征所在列 data_train = data.loc[range(1994,2014)].copy() #取2014年前的数据建模 data_mean = data_train.mean() data_std = data_train.std() data_train = (data_train - data_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(6, 12)) model.add(Activation('relu')) #用relu函数作为激活函数,能够大幅提供准确度 model.add(Dense(12, 1)) model.compile(loss='mean_squared_error', optimizer='adam') #编译模型 model.fit(x_train, y_train, nb_epoch = 10000, batch_size = 16) #训练模型,学习一万次 model.save_weights(modelfile) #保存模型参数 #预测,并还原结果。 x = ((data[feature] - data_mean[feature])/data_std[feature]).as_matrix() data[u'y_pred'] = model.predict(x) * data_std['y'] + data_mean['y'] data.to_excel(outputfile) import matplotlib.pyplot as plt #画出预测结果图 p = data[['y','y_pred']].plot(subplots = True, style=['b-o','r-*']) plt.show()
代码详见:demo/code/1-yuce.py
(2)增值税预测模型
利用Adaptive-Lasso方法进行增值税影响因素的变量选择,通过表13-8可以看出,商品进口总值(x1)、工业增加值(x3)和工业增加值占GDP(x5)比重这3个因素进入选择,其他因素的系数为0。因为可以根据工业增加值及其占GDP比重可以算出地区生产总值,所以Adaptive-Lasso方法在构建模型的过程中剔除了地区生产总值这个变量;由于批发零售业对增值税的贡献率较低,所以该因素也被剔除。
表13-8 系数表
Adaptive-Lasso变量选择见代码清单13-6。
代码清单13-6 Adaptive-Lasso变量选择
#-*- coding: utf-8 -*- import pandas as pd inputfile = '../data/data2.csv' #输入的数据文件 data = pd.read_csv(inputfile) #读取数据 #导入AdaptiveLasso算法,要在较新的Scikit-Learn才有。 from sklearn.linear_model import AdaptiveLasso model = AdaptiveLasso(gamma=1) model.fit(data.iloc[:,0:6],data['y']) model.coef_ #各个特征的系数
代码详见:demo/code/2-adaptive-lasso.py
对Adaptive-Lasso变量选择方法识别的影响增值税的因素建立神经网络预测模型,其参数设置为误差精度10-7,学习次数10000次,神经元个数为Lasso变量选择方法选择的变量个数3。商品进口总值(x1)、工业增加值(x3)和工业增加值占GDP比重(x5)指标的2014年及2015年数值可以通过Python建立灰色预测模型得出,后验差比值、预测精度等级见表13-9。
表13-9 灰色预测模型增值税相关因素精度表
增值税灰色预测如代码清单13-7所示。
代码清单13-7 增值税灰色预测
#-*- coding: utf-8 -*- import numpy as np import pandas as pd from GM11 import GM11 #引入自己编写的灰色预测函数 inputfile = '../data/data2.csv' #输入的数据文件 outputfile = '../tmp/data2_GM11.xls' #灰色预测后保存的路径 data = pd.read_csv(inputfile) #读取数据 data.index = range(1999, 2014) data.loc[2014] = None data.loc[2015] = None l = ['x1', 'x3', 'x5'] for i in l: f = GM11(data[i][range(1999, 2014)].as_matrix())[0] data[i][2014] = f(len(data)-1) #2014年预测结果 data[i][2015] = f(len(data)) #2015年预测结果 data[i] = data[i].round(6) #保留六位小数 data[l+['y']].to_excel(outputfile) #结果输出
代码详见:demo/code/2-huise.py
将数据零均值标准化后,代入增值税所建立的3层神经网络预测模型(输入层3节点,隐藏层6节点,输出层1节点),得到增值税的2015年预测值为2696434万元,相关数据见表13-10,其中红色字体的数据为预测数据。图13-3为神经网络增值税真实值与预测值对比图。
表13-10 增值税及其相关因素历史数据和预测表
数据详见:demo/data/VAT.xls
图13-3 增值税真实值与预测值对比图
图13-3 (续)
增值税神经网络预测模型如代码清单13-8所示。
代码清单13-8 增值税神经网络预测模型
#-*- coding: utf-8 -*- import pandas as pd inputfile = '../tmp/data2_GM11.xls' #灰色预测后保存的路径 outputfile = '../data/VAT.xls' #神经网络预测后保存的结果 modelfile = '../tmp/2-net.model' #模型保存路径 data = pd.read_excel(inputfile) #读取数据 feature = ['x1', 'x3', 'x5'] #特征所在列 data_train = data.loc[range(1999,2014)].copy() #取2014年前的数据建模 data_mean = data_train.mean() data_std = data_train.std() data_train = (data_train - data_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(3, 6)) model.add(Activation('relu')) #用relu函数作为激活函数,能够大幅提供准确度 model.add(Dense(6, 1)) model.compile(loss='mean_squared_error', optimizer='adam') #编译模型 model.fit(x_train, y_train, nb_epoch = 10000, batch_size = 16) #训练模型,学习一万次 model.save_weights(modelfile) #保存模型参数 #预测,并还原结果。 x = ((data[feature] - data_mean[feature])/data_std[feature]).as_matrix() data[u'y_pred'] = model.predict(x) * data_std['y'] + data_mean['y'] data[u'y_pred'] = data[u'y_pred'].round() data.to_excel(outputfile) import matplotlib.pyplot as plt #画出预测结果图 p = data[['y','y_pred']].plot(subplots = True, style=['b-o','r-*']) plt.show()
代码详见:demo/code/2-yuce.py
(3)营业税预测模型
利用Adaptive-Lasso方法进行营业税影响因素的变量选择,通过表13-11可以看出,全社会固定资产投资额(x3)、城市商品零售价格指数(1978=100)(x4)、规模以上国有及国有控股工业企业亏损面(x6)和建筑业企业利润总额(x8)这4个因素进入选择,其他因素的系数为0。
表13-11 系数表
代码清单13-9 adaptive-lasso变量选择
#-*- coding: utf-8 -*- import pandas as pd inputfile = '../data/data3.csv' #输入的数据文件 data = pd.read_csv(inputfile) #读取数据 #导入AdaptiveLasso算法,要在较新的Scikit-Learn才有。 from sklearn.linear_model import AdaptiveLasso model = AdaptiveLasso(gamma=1) model.fit(data.iloc[:,0:10],data['y']) model.coef_ #各个特征的系数
代码详见:demo/code/3-adaptive-lasso.py
对Adaptive-Lasso变量选择方法识别的影响营业税的因素建立神经网络预测模型,其参数设置为误差精度10-7,学习次数10000次,神经元个数为Lasso变量选择方法选择的变量个数3。变量选择的指标的2014年及2015年数值可以通过Python建立灰色预测模型得出,后验差比值、预测精度等级见表13-12。
表13-12 灰色预测模型营业税相关因素精度表
代码清单13-10是营业税灰色预测。
代码清单13-10 营业税灰色预测
#-*- coding: utf-8 -*- import numpy as np import pandas as pd from GM11 import GM11 #引入自己编写的灰色预测函数 inputfile = '../data/data3.csv' #输入的数据文件 outputfile = '../tmp/data3_GM11.xls' #灰色预测后保存的路径 data = pd.read_csv(inputfile) #读取数据 data.index = range(1999, 2014) data.loc[2014] = None data.loc[2015] = None l = ['x3', 'x4', 'x6', 'x8'] for i in l: f = GM11(data[i][range(1999, 2014)].as_matrix())[0] data[i][2014] = f(len(data)-1) #2014年预测结果 data[i][2015] = f(len(data)) #2015年预测结果 data[i] = data[i].round() #取整 data[l+['y']].to_excel(outputfile) #结果输出
代码详见:demo/code/3-huise.py
将数据零均值标准化后,代入营业税所建立的3层神经网络预测模型(输入层4节点,隐藏层8节点,输出层1节点),得到营业税的2015年预测值为2371484万元,相关数据见表13-13,其中红色字体的数据为预测数据。图13-4为神经网络营业税真实值与预测值对比图。
表13-13 营业税及其相关因素历史数据和预测表
数据详见:demo/data/sales_tax.xls
图13-4 营业税真实值与预测值对比图
营业税神经网络预测模型如代码清单13-11所示。
代码清单13-11 营业税神经网络预测模型
#-*- coding: utf-8 -*- import pandas as pd inputfile = '../tmp/data3_GM11.xls' #灰色预测后保存的路径 outputfile = '../data/sales_tax.xls' #神经网络预测后保存的结果 modelfile = '../tmp/3-net.model' #模型保存路径 data = pd.read_excel(inputfile) #读取数据 feature = ['x3', 'x4', 'x6', 'x8'] #特征所在列 data_train = data.loc[range(1999,2014)].copy() #取2014年前的数据建模 data_mean = data_train.mean() data_std = data_train.std() data_train = (data_train - data_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(4, 8)) model.add(Activation('relu')) #用relu函数作为激活函数,能够大幅提供准确度 model.add(Dense(8, 1)) model.compile(loss='mean_squared_error', optimizer='adam') #编译模型 model.fit(x_train, y_train, nb_epoch = 10000, batch_size = 16) #训练模型,学习一万次 model.save_weights(modelfile) #保存模型参数 #预测,并还原结果。 x = ((data[feature] - data_mean[feature])/data_std[feature]).as_matrix() data[u'y_pred'] = model.predict(x) * data_std['y'] + data_mean['y'] data[u'y_pred'] = data[u'y_pred'].round(2) data.to_excel(outputfile) import matplotlib.pyplot as plt #画出预测结果图 p = data[['y','y_pred']].plot(subplots = True, style=['b-o','r-*']) plt.show()
代码详见:demo/code/3-yuce.py
(4)企业所得税预测模型
利用Adaptive-Lasso方法进行企业所得税影响因素的变量选择,通过表13-14可以看出,规模以上工业企业盈亏相抵后的利润总额和建筑业企业利润总额这两个因素的系数为0。这是因为建筑业企业利润总额与建筑业总产值存在线性关系,所以该变量应该被剔除。第二产业增加值(x1)、第三产业增加值(x2)、全社会固定资产投资额(x3)、城市商品零售价格指数(1978=100)(x4)、规模以上国有及国有控股工业企业亏损面(x6)、建筑业总产值(x7)、限额以上连锁店(公司)零售额(x9)、地方财政总收入(x10)8个变量被选入影响企业所得税(y)的因素中。
表13-14 系数表
Adaptive-Lasso变量选择如代码清单13-12所示。
代码清单13-12 Adaptive-Lasso变量选择
#-*- coding: utf-8 -*- import pandas as pd inputfile = '../data/data4.csv' #输入的数据文件 data = pd.read_csv(inputfile) #读取数据 #导入AdaptiveLasso算法,要在较新的Scikit-Learn才有。 from sklearn.linear_model import AdaptiveLasso model = AdaptiveLasso(gamma=1) model.fit(data.iloc[:,0:10],data['y']) model.coef_ #各个特征的系数
代码详见:demo/code/4-adaptive-lasso.py
对Adaptive-Lasso变量选择方法识别的影响企业所得税的因素建立神经网络预测模型,其参数设置为误差精度10-7,学习次数5000次(数据量较小,过多容易过拟合),神经元个数为Lasso变量选择方法选择的变量个数8。变量选择的指标的2014年及2015年数值可以通过Python建立灰色预测模型得出,后验差比值、预测精度等级见表13-15。
表13-15 灰色预测模型企业所得税相关因素精度表
企业所得税灰色预测如代码清单13-13所示。
代码清单13-13 企业所得税灰色预测
#-*- coding: utf-8 -*- import numpy as np import pandas as pd from GM11 import GM11 #引入自己编写的灰色预测函数 inputfile = '../data/data4.csv' #输入的数据文件 outputfile = '../tmp/data4_GM11.xls' #灰色预测后保存的路径 data = pd.read_csv(inputfile) #读取数据 data.index = range(2002, 2014) data.loc[2014] = None data.loc[2015] = None l = ['x1', 'x2', 'x3', 'x4', 'x6', 'x7', 'x9', 'x10'] for i in l: f = GM11(data[i][range(2002, 2014)].as_matrix())[0] data[i][2014] = f(len(data)-1) #2014年预测结果 data[i][2015] = f(len(data)) #2015年预测结果 data[i] = data[i].round(2) #保留两位小数 data[l+['y']].to_excel(outputfile) #结果输出
代码详见:demo/code/4-huise.py
将数据零均值标准化后,代入企业所得税所建立的3层神经网络预测模型(输入层8节点,隐藏层6节点,输出层1节点),得到企业所得税的2015年预测值为1608361万元,相关数据见表13-16,其中红色字体的数据为预测数据。图13-5为神经网络企业所得税真实值与预测值对比图。
表13-16 企业所得税及其相关因素历史数据和预测表
数据详见:demo/data/enterprise_income.xls
图13-5 企业所得税真实值与预测值对比图
企业所得税神经网络预测模型如代码清单13-14所示。
代码清单13-14 企业所得税神经网络预测模型
#-*- coding: utf-8 -*- import pandas as pd inputfile = '../tmp/data4_GM11.xls' #灰色预测后保存的路径 outputfile = '../data/enterprise_income.xls' #神经网络预测后保存的结果 modelfile = '../tmp/4-net.model' #模型保存路径 data = pd.read_excel(inputfile) #读取数据 feature = ['x1', 'x2', 'x3', 'x4', 'x6', 'x7', 'x9', 'x10'] #特征所在列 data_train = data.loc[range(2002,2014)].copy() #取2014年前的数据建模 data_mean = data_train.mean() data_std = data_train.std() data_train = (data_train - data_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(8, 6)) model.add(Activation('relu')) #用relu函数作为激活函数,能够大幅提供准确度 model.add(Dense(6, 1)) model.compile(loss='mean_squared_error', optimizer='adam') #编译模型 model.fit(x_train, y_train, nb_epoch = 5000, batch_size = 16) #训练模型,学习五千次 model.save_weights(modelfile) #保存模型参数 #预测,并还原结果。 x = ((data[feature] - data_mean[feature])/data_std[feature]).as_matrix() data[u'y_pred'] = model.predict(x) * data_std['y'] + data_mean['y'] data[u'y_pred'] = data[u'y_pred'].round() data.to_excel(outputfile) import matplotlib.pyplot as plt #画出预测结果图 p = data[['y','y_pred']].plot(subplots = True, style=['b-o','r-*']) plt.show()
代码详见:demo/code/4-yuce.py
(5)个人所得税预测模型
利用Adaptive-Lasso方法进行个人所得税(y)影响因素的变量选择,通过表13-17可以看出,城市居民年人均可支配收入(x1)、地区生产总值(x4)、第二产业增加值(x5)和地方财政收入(x7)这4个因素进入选择,其他因素的系数为0。
表13-17 系数表
Adaptive-Lasso变量选择如代码清单13-15所示。
代码清单13-15 Adaptive-Lasso变量选择
#-*- coding: utf-8 -*- import pandas as pd inputfile = '../data/data5.csv' #输入的数据文件 data = pd.read_csv(inputfile) #读取数据 #导入AdaptiveLasso算法,要在较新的Scikit-Learn才有。 from sklearn.linear_model import AdaptiveLasso model = AdaptiveLasso(gamma=1) model.fit(data.iloc[:,0:7],data['y']) model.coef_ #各个特征的系数
代码详见:demo/code/5-adaptive-lasso.py
对Adaptive-Lasso变量选择方法识别的影响个人所得税的因素建立神经网络预测模型,其参数设置为误差精度10-7,学习次数15000次,神经元个数为Lasso变量选择方法选择的变量个数4。变量选择的指标的2014年及2015年数值可以通过Python建立灰色预测模型得出,后验差比值、预测精度等级见表13-18。
表13-18 灰色预测模型个人所得税相关因素精度表
代码清单13-16 个人所得税灰色预测
#-*- coding: utf-8 -*- import numpy as np import pandas as pd from GM11 import GM11 #引入自己编写的灰色预测函数 inputfile = '../data/data5.csv' #输入的数据文件 outputfile = '../tmp/data5_GM11.xls' #灰色预测后保存的路径 data = pd.read_csv(inputfile) #读取数据 data.index = range(2000, 2014) data.loc[2014] = None data.loc[2015] = None l = ['x1', 'x4', 'x5', 'x7'] for i in l: f = GM11(data[i][range(2000, 2014)].as_matrix())[0] data[i][2014] = f(len(data)-1) #2014年预测结果 data[i][2015] = f(len(data)) #2015年预测结果 data[i] = data[i].round() #取整 data[l+['y']].to_excel(outputfile) #结果输出
代码详见:demo/code/5-huise.py
将数据零均值标准化后,代入个人所得税所建立的3层神经网络预测模型(输入层4节点,隐藏层8节点,输出层1节点),得到个人所得税的2015年预测值为400352.4万元,相关数据见表13-19,其中红色字体的数据为预测数据。图13-2为神经网络个人所得税真实值与预测值对比图。
表13-19 个人所得税及其相关因素历史数据和预测表
数据详见:demo/data/personal_Income.xls
图13-6 个人所得税真实值与预测值对比图
个人所得税神经网络预测模型如代码清单13-17所示。
代码清单13-17 个人所得税神经网络预测模型
#-*- coding: utf-8 -*- import pandas as pd inputfile = '../tmp/data5_GM11.xls' #灰色预测后保存的路径 outputfile = '../data/personal_Income.xls' #神经网络预测后保存的结果 modelfile = '../tmp/5-net.model' #模型保存路径 data = pd.read_excel(inputfile) #读取数据 feature = ['x1', 'x4', 'x5', 'x7'] #特征所在列 data_train = data.loc[range(2000,2014)].copy() #取2014年前的数据建模 data_mean = data_train.mean() data_std = data_train.std() data_train = (data_train - data_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(4, 8)) model.add(Activation('relu')) #用relu函数作为激活函数,能够大幅提供准确度 model.add(Dense(8, 1)) model.compile(loss='mean_squared_error', optimizer='adam') #编译模型 model.fit(x_train, y_train, nb_epoch = 15000, batch_size = 16) #训练模型,学习 一万五千次 model.save_weights(modelfile) #保存模型参数 #预测,并还原结果。 x = ((data[feature] - data_mean[feature])/data_std[feature]).as_matrix() data[u'y_pred'] = model.predict(x) * data_std['y'] + data_mean['y'] data[u'y_pred'] = data[u'y_pred'].round() data.to_excel(outputfile) import matplotlib.pyplot as plt #画出预测结果图 p = data[['y','y_pred']].plot(subplots = True, style=['b-o','r-*']) plt.show()
代码详见:demo/code/5-yuce.py
(6)政府性基金收入预测模型
相比于2006年及以往年份,2007年的该市土地出让金大幅上涨,而土地出让金收入的大幅上涨直接影响了政府性基金收入。所以,为了数据的连续性,本例利用灰色预测法对2007年至2013年的政府性基金收入进行预测,灰色预测的后验差比值为0.2390,小于0.35,预测精度为好。
将数值代入计算,即可得到2014年政府性基金收入为10387002.56万元,2015年政府性基金收入为12929795.07万元,预测对比图如图13-7所示。
图13-7 灰色预测政府性基金收入真实值与预测值对比图
政府性基金收入灰色预测如代码清单13-18所示。
代码清单13-18 政府性基金收入灰色预测
#-*- coding: utf-8 -*- from __future__ import print_function import numpy as np import pandas as pd from GM11 import GM11 #引入自己编写的灰色预测函数 x0 = np.array([3152063, 2213050, 4050122, 5265142, 5556619, 4772843, 9463330]) f, a, b, x00, C, P = GM11(x0) print(u'2014年、2015年的预测结果分别为:\n%0.2f万元和%0.2f万元' %(f(8), f(9))) print(u'后验差比值为:%0.4f' %C) p = pd.DataFrame(x0, columns = ['y'], index = range(2007, 2014)) p.loc[2014] = None p.loc[2015] = None p['y_pred'] = [f(i) for i in range(1,10)] p['y_pred'] = p['y_pred'].round(2) p.index = pd.to_datetime(p.index, format='%Y') import matplotlib.pylab as plt p.plot(style=['b-o','r-*'], xticks = p.index) plt.show()
代码详见:demo/code/6-huise.py
[1] 陈庚,卢丹丹,万浩文.基于数据挖掘技术的市财政收入分析预测模型.第三届泰迪杯全国大学生数据挖掘竞赛(http://www.tipdm.org)优秀作品。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论