linux下网站搭建,网站弹广告是什么样做的,做网站的案例,吉林省建设工程造价网站【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈机器学习与数据挖掘实战 ⌋ ⌋ ⌋ 机器学习是人工智能的一个分支#xff0c;专注于让计算机系统通过数据学习和改进。它利用统计和计算方法#xff0c;使模型能够从数据中自动提取特征并做出预测或决策。数据挖掘则是从大型数… 【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈机器学习与数据挖掘实战 ⌋ ⌋ ⌋ 机器学习是人工智能的一个分支专注于让计算机系统通过数据学习和改进。它利用统计和计算方法使模型能够从数据中自动提取特征并做出预测或决策。数据挖掘则是从大型数据集中发现模式、关联和异常的过程旨在提取有价值的信息和知识。机器学习为数据挖掘提供了强大的分析工具而数据挖掘则是机器学习应用的重要领域两者相辅相成共同推动数据科学的发展。本专栏介绍机器学习与数据挖掘的相关实战案例。 【GitCode】专栏资源保存在我的GitCode仓库https://gitcode.com/Morse_Chen/ML-DM_cases。 文章目录 一、目标分析一背景二数据说明三分析目标 二、数据准备三、特征工程一Lasso回归二特征选择 四、模型训练一灰色预测模型二关键特征预测三SVR模型预测 五、性能度量小结 一、目标分析
一背景
财政收入是政府理财的重要环节是政府进行宏观调控的重要手段之一也是政府提供公共产品满足公共支出需要的重要经济基础。财政收入规模是衡量一个国家或一个地区财力和相关政府在社会经济生活中职能范围的重要指标。只有在组织财政收入的过程中正确处理各种物质利益关系才能达到充分调动各方面的积极性达到优化资源配置协调分配关系的目的。财政收入的变化受到经济发展水平和分配政策的制约同时也会影响到后续财政支出的规划从而影响到下一阶段的发展规划与相关决策。
本案例利用某市财政收入的历史数据建立合理的模型对该市2014年和2015年财政收入进行预测希望预测结果能够帮助政府合理的控制财政收支优化财源建设为制政府定相关决策提供依据。
二数据说明
考虑到数据的可得性本案例所用的财政收入数据分为地方一般预算收入和政府性基金收入。
地方一般预算收入包括以下两个部分。
税收收入。主要包括企业所得税与地方所得税中中央和地方共享的40%地方享有的25%的增值税、营业税和印花税等。非税收收入。包括专项收入、行政事业性收费收入、罚没收入、国有资本经营收入和其他收入等。
政府性基金收入是国家通过向社会征收以及出让土地、发行彩票等方式取得收入。并专项用于支持特定基础设施建设和社会事业发展的收入。
本案例所用数据集data.csv内容如下。 本案例所用数据特征名称及说明如下表所示。
特征名称特征说明社会从业人数 x 1 x_1 x1就业人数的上升伴随着居民消费水平的提高从而间接影响财政收入的增加。在岗职工工资总额 x 2 x_2 x2反映的是社会分配情况主要影响财政收入中的个人所得税房产税以及潜在消费能力。社会消费品零售总额 x 3 x_3 x3代表社会整体消费情况是可支配收入在经济生活中的实现。当社会消费品零售总额增长时表明社会消费意愿强烈部分程度上会导致财政收入中增值税的增长当消费增长时也会引起经济系统中其他方面发生变动最终导致财政收入的增长。城镇居民人均可支配收入 x 4 x_4 x4居民收入越高消费能力越强同时意味着其工作积极性越高创造出的财富越多从而能带来财政收入更快和持续的增长。城镇居民人均消费性支出 x 5 x_5 x5居民在消费商品的过程中会产生各种税费税费又是调节生产规模的手段之一。在商品经济发达的如今居民消费的越多对财政收入的贡献就越大。年末总人口 x 6 x_6 x6在地方经济发展水平既定的条件下人均地方财政收入与地方人口数呈反比例变化。全社会固定资产投资额 x 7 x_7 x7全社会固定资产投资是建造和购置固定资产的经济活动即固定资产再生产活动。主要通过投资来促进经济增长扩大税源进而拉动财政税收收入整体增长。地区生产总值 x 8 x_8 x8表示地方经济发展水平。一般来讲政府财政收入来源于当期的地区生产总值。在国家经济政策不变、社会秩序稳定的情况下地方经济发展水平与地方财政收入之间存在着密切的相关性越是经济发达的地区其财政收入的规模就越大。第一产业产值 x 9 x_9 x9由于取消农业税实施三农政策使得第一产业产值对财政收入的影响更小。税收 x 10 x_{10} x10由于其具有征收的强制性、无偿性和固定性特点可以为政府履行其职能提供充足的资金来源。因此各国都将其作为政府财政收入的最重要的收入形式和来源。居民消费价格指数 x 11 x_{11} x11反映居民家庭购买的消费品及服务价格水平的变动情况影响城乡居民的生活支出和国家的财政收入。第三产业与第二产业产值比 x 12 x_{12} x12表示产业结构。第三产业生产总值代表国民经济水平是财政收入的主要影响因素当产业结构逐步优化时财政收入也会随之增加。居民消费水平 x 13 x_{13} x13在很大程度上受整体经济状况GDP的影响从而间接影响地方财政收入。
三分析目标
结合某市财政收入的数据情况可以实现以下目标。
分析、识别影响地方财政收入的关键特征。预测2014年和2015年的财政收入。
本案例包括以下步骤。
对原始数据进行探索性分析了解原始特征之间的相关性。利用Lasso特征选择模型进行特征提取。建立单个特征的灰色预测模型以及支持向量回归预测模型。使用支持向量回归预测模型得出2014–2015年财政收入的预测值。对上述建立的财政收入预测模型进行评价。
本案例的总体流程图如下图所示。 二、数据准备
本案例采用的数据是某市财政收入数据均来自某市的统计年鉴。本案例仅对1994–2013年的数据进行分析。获取数据后发现影响地方财政收入的特征有很多在建立模型之前需要判断财政收入与所给特征之间的相关性、各特征之间的相关性以此判断所给特征是否可以用作建模的关键特征不能用作关键特征的需要删除本案例利用Pearson相关系数判断各特征之间的相关性。
相关代码如下。
import numpy as np
import pandas as pddata pd.read_csv(../data/data.csv) # 读取数据
# 保留两位小数并将结果保存为’.csv’文件
np.round(data.corr(method pearson), 2).to_csv(../tmp/data_cor.csv)
print(相关系数矩阵为\n, np.round(data.corr(method pearson), 2))数据各特征之间的Pearson相关系数如下表所示。 x 1 x_1 x1 x 2 x_2 x2 x 3 x_3 x3 x 4 x_4 x4 x 5 x_5 x5 x 6 x_6 x6 x 7 x_7 x7 x 8 x_8 x8 x 9 x_9 x9 x 10 x_{10} x10 x 11 x_{11} x11 x 12 x_{12} x12 x 13 x_{13} x13 y y y x 1 x_1 x11.000.950.950.970.970.990.950.970.980.98-0.290.940.960.94 x 2 x_2 x20.951.001.000.990.990.920.990.990.980.98-0.130.891.000.98 x 3 x_3 x30.951.001.000.990.990.921.000.990.980.99-0.150.891.000.99 x 4 x_4 x40.970.990.991.001.000.950.991.000.991.00-0.190.911.000.99 x 5 x_5 x50.970.990.991.001.000.950.991.000.991.00-0.180.900.990.99 x 6 x_6 x60.990.920.920.950.951.000.930.950.970.96-0.340.950.940.91 x 7 x_7 x70.950.991.000.990.990.931.000.990.980.99-0.150.891.000.99 x 8 x_8 x80.970.990.991.001.000.950.991.000.991.00-0.150.901.000.99 x 9 x_9 x90.980.980.980.990.990.970.980.991.000.99-0.230.910.990.98 x 10 x_{10} x100.980.980.991.001.000.960.991.000.991.00-0.170.900.990.99 x 11 x_{11} x11-0.29-0.13-0.15-0.19-0.18-0.34-0.15-0.15-0.23-0.171.00-0.43-0.16-0.12 x 12 x_{12} x120.940.890.890.910.900.950.890.900.910.90-0.431.000.900.87 x 13 x_{13} x130.961.001.001.000.990.941.001.000.990.99-0.160.901.000.99 y y y0.940.980.990.990.990.910.990.990.980.99-0.120.870.991.00
根据相关系数表所示的结果得到以下分析。
居民消费价格指数 x 11 x_{11} x11与财政收入 y y y的线性关系不显著呈现一定程度的负相关。其余特征均与财政收入呈现高度的正相关关系。按相关性大小依次是 x 3 , x 4 , x 5 , x 7 , x 8 , x 10 , x 13 , x 2 , x 9 , x 1 , x 6 x_3, x_4, x_5, x_7, x_8, x_{10}, x_{13}, x_2, x_9, x_1, x_6 x3,x4,x5,x7,x8,x10,x13,x2,x9,x1,x6 和 x 12 x_{12} x12。 同时各特征之间存在着严重的共线性。特征 x 1 , x 4 , x 5 , x 6 , x 8 , x 9 , x 10 x_1, x_4, x_5, x_6, x_8, x_9, x_{10} x1,x4,x5,x6,x8,x9,x10 与除了 x 11 x_{11} x11之外的特征均存在严重的共线性特征 x 2 , x 3 , x 7 x_2, x_3, x_7 x2,x3,x7 与除了 x 11 x_{11} x11和 x 12 x_{12} x12外的其他特征存在着严重的共线性。 x 11 x_{11} x11与各特征的共线性不明显 x 12 x_{12} x12与除了 x 2 , x 3 , x 7 , x 11 x_2, x_3, x_7, x_{11} x2,x3,x7,x11 之外的其他特征有严重的共线性 x 13 x_{13} x13与除了 x 11 x_{11} x11之外的各特征有严重的共线性。 x 2 x_2 x2和 x 3 x_3 x3 x 2 x_2 x2和 x 13 x_{13} x13 x 3 x_3 x3和 x 13 x_{13} x13等多对特征之间存在完全的共线性。
根据对相关系数表分析可知以下两点。选取的各特征除了 x 11 x_{11} x11外其他特征与 y y y的相关性很强可以用作财政收入预测分析的关键特征特征之间存在着信息的重复在建立模型之前需要对特征进行进一步筛选。
三、特征工程
虽然在数据准备过程中对特征进行了初步筛选但是引入的特征太多而且这些特征之间存在着信息的重复。为了保留重要的特征建立精确、简单的模型需要对原始特征进一步筛选考虑到传统的特征选择方法存在一定的局限性本案例采用最近广泛使用的Lasso特征选择方法对原始特征进一步筛选。
一Lasso回归
Lasso回归方法以缩小特征集降阶为思想是一种收缩估计方法。Lasso方法可以将特征的系数进行压缩并使某些回归系数变为0进而达到特征选择的目的可以广泛地应用于模型改进与选择。通过选择惩罚函数借用Lasso思想和方法实现特征选择的目的。模型选择本质上是寻求模型稀疏表达的过程而这种过程可以通过优化一个“损失”“惩罚”的函数问题来完成。
Lasso参数估计如下式所示。 β ^ ( lasso ) arg min β 2 ∥ y − ∑ j 1 p x i β i ∥ 2 λ ∑ j 1 p ∣ β i ∣ \hat\beta(\text{lasso}) \argmin_\beta^2 \left\Vert y-\sum_{j1}^p x_i\beta_i\right\Vert^2 \lambda\sum_{j1}^p|\beta_i| β^(lasso)βargmin2 y−j1∑pxiβi 2λj1∑p∣βi∣ λ \lambda λ为非负正则参数控制着模型的复杂程度 λ \lambda λ越大对特征较多的线性模型的惩罚力度就越大从而最终获得一个特征较少的模型 λ ∑ j 1 p ∣ β i ∣ \lambda\sum_{j1}^p|\beta_i| λ∑j1p∣βi∣称为惩罚项。调整参数 λ \lambda λ可以采用交叉验证法选取交叉验证误差最小的 λ \lambda λ值。最后按照得到的 λ \lambda λ值用全部数据重新拟合模型即可。
值得注意的是当原始特征中存在共线性时Lasso回归不失为一种很好的处理共线性的方法它可以有效地对存在共线性的特征进行筛选。
二特征选择
根据相关系数表的结果分析可知原始数据中各特征之间存在严重的共线性。
特征 x 1 、 x 4 、 x 5 、 x 6 、 x 8 、 x 9 、 x 10 x_1、x_4、x_5、x_6、x_8、x_9、x_{10} x1、x4、x5、x6、x8、x9、x10与除了 x 11 x_{11} x11之外的特征均存在严重的共线性。特征 x 2 、 x 3 、 x 7 x_2、x_3、x_7 x2、x3、x7与除了 x 11 x_{11} x11和 x 12 x_{12} x12外的其他特征存在着严重的共线性。
本案例可以利用Lasso回归方法进行特征筛选。相关代码如下。
import pandas as pd
import numpy as np
from sklearn.linear_model import Lassodata pd.read_csv(../data/data.csv) # 读取数据
# 调用Lasso()函数设置λ的值为1000
lasso Lasso(1000)
lasso.fit(data.iloc[:, 0:13], data[y])
print(相关系数为, np.round(lasso.coef_, 5)) # 输出结果保留五位小数print(相关系数非零个数为, np.sum(lasso.coef_ ! 0)) # 计算相关系数非零的个数# 返回一个相关系数是否为零的布尔数组
mask lasso.coef_ ! 0
print(相关系数是否为零, mask)data data.iloc[:, 0:13]
new_reg_data data.iloc[:, mask] # 返回相关系数非零的数据
new_reg_data.to_csv(../tmp/new_reg_data.csv) # 存储数据
print(输出数据的维度为, new_reg_data.shape) # 查看输出数据的维度各特征对应的系数如下表所示。从表的结果可以看出利用Lasso回归方法识别影响财政收入的关键影响因素是社会从业人数 x 1 x_1 x1、社会消费品零售总额 x 3 x_3 x3、城镇居民人均可支配收入 x 4 x_4 x4、城镇居民人均消费性支出 x 5 x_5 x5、全社会固定资产投资额 x 7 x_7 x7、地区生产总值 x 8 x_8 x8、第一产业产值 x 9 x_9 x9 、居民消费水平 x 13 x_{13} x13。 x 1 x_1 x1 x 2 x_2 x2 x 3 x_3 x3 x 4 x_4 x4 x 5 x_5 x5 x 6 x_6 x6 x 7 x_7 x7 x 8 x_8 x8 x 9 x_9 x9 x 10 x_{10} x10 x 11 x_{11} x11 x 12 x_{12} x12 x 13 x_{13} x13-0.00010.0000.124-0.0100.0650.0000.3170.035-0.0010.0000.0000.000-0.040
四、模型训练
为实现对2014年和2015年的财政预测本案例利用SVRSupport Vector Regression支持向量回归建立预测模型。由于原始数据中没有提供关键特征2014年和2015年的数据所以本案例利用灰色预测模型预测关键特征2014年和2015年的值。利用支持向量回归Support Vector RegressionSVR预测模型和灰色模型预测值预测2014年和2015年的财政收入。
一灰色预测模型
灰色预测模型是一种对含有不确定因素的系统进行预测的方法。在建立灰色预测模型之前需先对原始时间序列进行数据处理经过数据处理后的时间序列即称为生成列灰色系统常用的数据处理方式有累加、累减和加权累加3种。灰色预测模型是利用离散随机数经过生成变为随机性被显著削弱而且较有规律的生成数建立起的微分方程形式的模型。灰色预测是以灰色模型为基础的在众多的灰色模型中GM(1,1)模型最为常用。
设特征 X ( 0 ) { X ( 0 ) ( i ) , i 1 , 2 , ⋯ , n } X^{(0)}\{X^{(0)}(i), i1,2,\cdots,n\} X(0){X(0)(i),i1,2,⋯,n} 为一非负单调原始数据序列建立灰色预测模型如下。
对 X ( 0 ) X^{(0)} X(0) 进行一次累加得到累加序列 X ( 1 ) { X ( 1 ) ( k ) , k 0 , 1 , 2 , ⋯ , n } X^{(1)} \{X^{(1)}(k), k0,1,2,\cdots,n\} X(1){X(1)(k),k0,1,2,⋯,n}。
对 X ( 1 ) X^{(1)} X(1) 建立一阶线性微分方程如下式所示即GM(1,1)模型。 d X ( 1 ) d t a X ( 1 ) μ \frac{\mathrm{d}X^{(1)}}{\mathrm{d}t} aX^{(1)} \mu dtdX(1)aX(1)μ
求解微分方程得到预测模型如下式所示。 X ^ ( 1 ) ( k 1 ) [ X ( 0 ) ( 1 ) − μ a ] e − a k μ a \hat X^{(1)}(k1) \left[X^{(0)}(1)-\frac{\mu}{a}\right]\mathrm{e}^{-ak}\frac{\mu}{a} X^(1)(k1)[X(0)(1)−aμ]e−akaμ
由于GM(1,1)模型得到的是一次累加量将GM(1,1)模型所得数据 X ^ ( 1 ) ( k 1 ) \hat X^{(1)}(k1) X^(1)(k1) 经过累减还原为 X ^ ( 0 ) ( k 1 ) \hat X^{(0)}(k1) X^(0)(k1) 即 X ( 0 ) X^{(0)} X(0) 的灰色预测模型如下式所示。 X ^ ( 0 ) ( k 1 ) ( e − a ^ − 1 ) [ X ( 0 ) ( n ) − μ ^ a ^ ] e − a ^ k \hat X^{(0)}(k1) (\mathrm{e}^{-\hat a}-1)\left[X^{(0)}(n)-\frac{\hat\mu}{\hat a}\right]\mathrm{e}^{-\hat ak} X^(0)(k1)(e−a^−1)[X(0)(n)−a^μ^]e−a^k
灰色预测模型可以利用后验差检验模型精度使用后验差检验法的判别规则如下表所示。
PC模型精度0.950.35好0.800.5合格0.700.65勉强合格0.700.65不合格
在后验差检验判别参照表中P和C计算公式如下式所示。 C σ ( delta ) σ ( X ( 0 ) ) C\frac{\sigma(\text{delta})}{\sigma(X^{(0)})} Cσ(X(0))σ(delta) P S L P\frac{S}{L} PLS
在C的计算公式中 delta ∣ X ( 0 ) − X ^ ( 0 ) ∣ \text{delta}|X^{(0)}-\hat X^{(0)}| delta∣X(0)−X^(0)∣ σ \sigma σ表示标准差 S S S表示的 ∣ delta − mean ( delta ) ∣ 0.6745 ⋅ σ ( X ( 0 ) ) |\text{delta} - \text{mean}(\text{delta})|0.6745\cdot\sigma(X^{(0)}) ∣delta−mean(delta)∣0.6745⋅σ(X(0)) 数量mean(delta)表示delta的平均值 L L L表示 X ( 0 ) X^{(0)} X(0)的长度。
灰色预测法的通用性比较强些一般的时间序列场合都可以用尤其适合那些规律性差且不清楚数据产生机理的情况。
相关代码如下。
# 自定义灰色预测函数
def GM11(x0): # x0为矩阵形式import numpy as npx1 x0.cumsum() # 1-AGO序列# 紧邻均值MEAN生成序列z1 (x1[:len(x1) - 1] x1[1:]) / 2.0z1 z1.reshape((len(z1), 1))B np.append(-z1, np.ones_like(z1), axis 1)Yn x0[1:].reshape((len(x0)-1, 1))# 计算参数[[a], [b]] np.dot(np.dot(np.linalg.inv(np.dot(B.T, B)), B.T), Yn) # 还原值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)# 返回灰色预测函数、a、b、首项、方差比、小残差概率return f, a, b, x0[0], C, P二关键特征预测
利用灰色预测模型得到以下特征的2014年和2015年的预测值。
社会从业人数 x 1 x_1 x1社会消费品零售总额 x 3 x_3 x3城镇居民人均可支配收入 x 4 x_4 x4城镇居民人均消费性支出 x 5 x_5 x5年末总人口 x 6 x_6 x6全社会固定资产投资额 x 7 x_7 x7地区生产总值 x 8 x_8 x8居民消费水平 x 13 x_{13} x13
相关代码如下。
import pandas as pd
import numpy as npnew_reg_data pd.read_csv(../tmp/new_reg_data.csv) # 读取经过特征选择后的数据
data pd.read_csv(../data/data.csv) # 读取总的数据
new_reg_data.index range(1994, 2014)
new_reg_data.loc[2014] None
new_reg_data.loc[2015] None
Accuracy [] # 存放灰色预测模型精度
l [x1, x3, x4, x5, x6, x7, x8, x13]
for i in l:f GM11(new_reg_data.loc[range(1994, 2014), i].as_matrix())[0]new_reg_data.loc[2014, i] f(len(new_reg_data) - 1) # 2014年预测结果new_reg_data.loc[2015, i] f(len(new_reg_data)) # 2015年预测结果new_reg_data[i] new_reg_data[i].round(2) # 保留两位小数C GM11(new_reg_data.loc[range(1994, 2014), x1].as_matrix())[4]P GM11(new_reg_data.loc[range(1994, 2014), x1].as_matrix())[5]if P0.95 and C0.35:Accuracy.append(好)elif 0.8P0.95 and 0.35C0.5:Accuracy.append(合格)elif 0.7P0.8 and 0.5C0.65:Accuracy.append(勉强合格)else :Accuracy.append(不合格)new_reg_data new_reg_data.iloc[:, 1:]
new_reg_data.loc[模型精度, :] Accuracy
outputfile ../tmp/new_reg_data_GM11.xls # 灰色预测后保存的路径
# 提取财政收入列合并至新数据框中
y list(data[y].values)
y.extend([np.nan, np.nan])
new_reg_data.loc[range(1994, 2016),y] y
new_reg_data.to_excel(outputfile) # 结果输出
# 预测结果展示
print(预测结果为\n, new_reg_data.loc[[2014, 2015, 模型精度], :])三SVR模型预测
构建支持向量回归预测模型并将关键特征灰色预测代码中的预测结果代入建立的地方财政收入支持向量回归预测模型预测2014年和2015年的财政收入。地方财政收入真实值与预测值的对比图如下图所示。
相关代码如下。
from sklearn.svm import LinearSVR
import matplotlib.pyplot as pltdata pd.read_excel(../tmp/new_reg_data_GM11.xls) # 读取数据
data data.drop(Unnamed: 0, axis1, errorsignore) # 如果该列存在则删除不存在则跳过
data data.drop(labels模型精度, axis0, errorsignore) # 删除行
feature [x1, x3, x4, x5, x6, x7, x8, x13] # 特征所在列
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() # 标签数据
linearsvr LinearSVR(random_state123) # 调用LinearSVR()函数
linearsvr.fit(x_train, y_train)# 预测2014年和2015年财政收入并还原结果。
x ((data[feature] - data_mean[feature]) / data_std[feature]).as_matrix()
data[uy_pred] linearsvr.predict(x) * data_std[y] data_mean[y]
outputfile ../tmp/new_reg_data_GM11_revenue.xls
data.to_excel(outputfile)
print(真实值与预测值分别为\n, data[[y, y_pred]])print(预测图为, data[[y, y_pred]].plot(style [b-o, r-*])) # 画出预测结果图
plt.xlabel(年份)
plt.xticks(range(1994,2015,2))
plt.show()五、性能度量
整理关键特征灰色预测的结果如下表所示。从表中可以看出2014年和2015年关键特征的灰色模型预测值精度均较高可以用于预测2014年和2015年财政收入的关键特征数据。
2014预测值2015预测值预测精度等级 x 1 x_1 x18142148.248460489.28好 x 3 x_3 x37042.318166.92好 x 4 x_4 x443611.8447792.22好 x 5 x_5 x535046.6338384.22好 x 6 x_6 x68505522.588627139.31好 x 7 x_7 x74600.45214.78好 x 8 x_8 x818686.2821474.47好 x 13 x_{13} x1344506.4749945.88好
利用关键特征灰色预测的结果中的预测值和SVR模型预测2014年和2015年财政收入。整理后如下表所示y_pred表示预测值。
年份yy_pred年份yy_pred年份yy_pred199464.8737.8258552002269.1220.0294420101399.161378.7089199599.7584.4605662003300.55300.8219420111535.141536.3989199688.1195.4007222004338.45383.7249820121579.681739.00821997106.07107.012122005408.86463.3493620132088.142085.44731998137.32151.497112006476.72554.9438520142187.17991999188.14188.540742007838.99691.3577220152538.09382000219.91219.912008843.14843.016172001271.91230.7646220091107.671087.4603
支持向量回归预测模型的代码结果中已给出地方财政收入真实值与预测值的对比图。利用回归模型性能度量指标对地方财政收入预测模型进行性能度量。如下表所示平均绝对误差与中值绝对误差较小可解释方差值与R方值十分接近1从真实值与预测值的对比图可以看出预测值和真实值曲线基本重合表明建立的支持向量回归模型拟合效果优良可以用于预测财政收入。
相关代码如下。
from sklearn.metrics import mean_absolute_error # 平均绝对误差
from sklearn.metrics import median_absolute_error # 中值绝对误差
from sklearn.metrics import explained_variance_score # 可解释方差
from sklearn.metrics import r2_score # R方值
import pandas as pddata pd.read_excel(../tmp/new_reg_data_GM11_revenue.xls) # 读取数据
data data.drop(Unnamed: 0, axis1, errorsignore) # 如果该列存在则删除不存在则跳过
mean_ab_error mean_absolute_error(data.loc[range(1994, 2014), y], data.loc[range(1994,2014), y_pred], multioutput raw_values)
median_ab_error median_absolute_error(data.loc[range(1994, 2014), y], data.loc[range(1994, 2014), y_pred])
explain_var_score explained_variance_score(data.loc[range(1994, 2014), y], data.loc[range(1994, 2014), y_pred], multioutput raw_values)
r2 r2_score(data.loc[range(1994, 2014), y], data.loc[range(1994, 2014), y_pred], multioutput raw_values)print(平均绝对误差, mean_ab_error, \n, 中值绝对误差, median_ab_error, \n, 可解释方差, explain_var_score, \n, R方值:, r2)指标指标值平均绝对误差34.26585201中值绝对误差17.749581395641485可解释方差0.99086819R方值0.99085796
小结
本案例结合某市财政收入原始数据重点介绍了SVR模型在财政预测方面的应用主要内容包含数据探索、特征选取、模型构建和性能度量。其中利用Pearson相关系数探对原始数据进行相关性分析得到与财政收入相关性较高的特征并且了解到各特征之间存在严重的共线性。利用Lasso回归模型对原始特征进行筛选得到用于建模的关键特征。
针对历史数据构建灰色预测模型对所选关键特征2014年和2015年的值进行预测。最后根据所选特征原始数据建立SVR模型然后利用灰色预测模型对所选特征的预测值进行预测最终得到2014年和2015年的财政收入预测值。利用回归模型性能度量指标对SVR模型进行评价模型精度较高可以用于指导实际工作。 附以上文中的数据集及相关资源下载地址 链接https://pan.quark.cn/s/bc0a61378df2 提取码n2Kw