问题重述
通过研究,发现影响某市目前及未来地方财源的因素。结合文中目标:(1)选择模型,找出影响财政收入的关键因素;(2)基于关键因素,选择预测方法、模型预测未来收入。
具体来讲
本文分析了地方财政收入、增值税收入、营业税收入、企业所得税收入、个人所得税收入的影响因素并对未来两年采用灰色预测(GM(1,1))并以已有年度序列训练神经网络(NN),再以得到的模型预测包括未来两年在内的所有年份收入的预测值,由此可以根据预测相比于实际值情况及未来收入变化作出相应的决策判断。
文中的操作流程步骤非常值得学习,思路很清晰(实际类似问题可类比此类框架):
- 从统计局网站及各统计年鉴搜集该市财政收入及各类别收入相关数据;
- 数据预处理,得到建模用数据,构建LassoLars变量选择模型;
- 根据所选择变量建立单变量GM(1,1)Model预测该变量序列下年值,及根据所选变量(特征变量)及收入(类变量,标签变量)构建人工神经网络模型(训练模型)
- 将由GM(1,1)得到的个所选变量的预测值数据所得到的神经网络(模型预测),从而得到各种收入的预测值
方法、模型及代码
Lasso方法:
线性回归的L1正则化通常称为Lasso回归,一般来说,对于高维的特征数据,尤其线性关系是稀疏的,我们会采用Lasso回归。或者是要在一堆特征里面找出主要的特征,那么Lasso回归更是首选了。Lasso回归的损失函数优化方法常用的有两种,坐标轴下降法和最小角回归法(Least Angle Regression)。Lasso类采用的是坐标轴下降法,这里LassoLars模型采用的是最小角回归法。详细介绍参见文末Ref。
1 #导入使用的模块 2 import os 3 import numpy as np 4 import pandas as pd 5 from sklearn.linear_model import LassoLars 6 from sklearn.linear_model import Lasso 7 from keras.models import Sequential #有的同学可能会遇到 kernel died,restarting的问题,可参见我的另一片文章 8 from keras.layers.core import Dense, Activation 9 import matplotlib.pyplot as plt 10 #import tensorflow as tf 11 12 # 13 filepath='../data/data1.csv' 14 data=pd.read_csv(filepath) 15 des=data.describe() 16 r=des.T 17 r=r[['min','max','mean','std']] 18 np.round(r,2) # 保留2位小数,四舍六入五留双(五留双即遇五看五前面是偶数则保留,奇数进位) 19 #np.round([0.15,0.25,0.14,0.16],1) # array([0.2, 0.2, 0.1, 0.2]) 20 np.round(data.corr(method=