数据挖掘实战—财政收入影响因素分析及预测
文章目錄
- 引言
- 一、數據探索
- 1.數據質量分析
- 1.1 缺失值分析
- 1.2 異常點分析—箱型圖分析
- 1.3 重復數據分析
 
- 2.數據特征分析
- 2.1 描述性統計分析
- 2.2 分布分析
- 2.3 相關性分析
 
 
- 二、數據預處理
- 三、模型構建
- 1.灰色預測模型
- 2.構建支持向量機回歸模型
 
 
傳送門:
- 數據挖掘實戰—財政收入影響因素分析及預測
- 數據挖掘實戰—航空公司客戶價值分析
- 數據挖掘實戰—商品零售購物籃分析
- 數據挖掘實戰—基于水色圖像的水質評價
- 數據挖掘實戰—家用熱水器用戶行為分析與事件識別
- 數據挖掘實戰—電商產品評論數據情感分析
引言
??本文運用數據挖掘技術對市財政收入進行分析,挖掘其中的隱藏的運行模式,并對未來兩年的財政收入進行預測,希望能夠幫助政府合理地控制財政收支,優化財政建設,為制定相關決策提供依據。定義數據挖掘目標如下:
- 分析、識別影響地方財政收入的關鍵屬性
- 預測2014年和2015年的財政收入
本文數據挖掘主要包括以下步驟:
一、數據探索
data.csv數據,提取碼:1234 
 表中各屬性名稱及屬性說明:
 
 
1.數據質量分析
%matplotlib inline import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns1.1 缺失值分析
 
1.2 異常點分析—箱型圖分析
for column in data.columns:fig,ax = plt.subplots(figsize=(4,4))sns.boxplot(data.loc[:,column],orient='v')ax.set_xlabel(column)
 會展示出每一個變量的箱型圖,可直觀看到有無異常點
1.3 重復數據分析
2.數據特征分析
2.1 描述性統計分析
 可通過均值、方差、最大值、最小值看出有些數據存在較大變化。
2.2 分布分析
??表格里面都是連續型數據,可以通過distplot來展示連續變量的直方圖與連續概率密度估計
# 畫直方圖與連續概率密度估計 for column in data.columns:fig,ax = plt.subplots(figsize=(6,6))sns.distplot(data.loc[:,column],norm_hist=True,bins=20)2.3 相關性分析
 可以發現上述變量除了x11外均與y有強相關性,并且這些屬性間存在多重共線性,考慮使用Lasso特征選擇模型進行特征選擇
 ??繪制相關性熱力圖,直觀顯示相關性
 很明顯可以看出除了x11外均與y有強相關性,并且這些屬性間存在多重共線性。
二、數據預處理
??通過上面分析,我們知道數據中沒有缺失值、重復值、異常值(數據來源可靠),發現有多重共線性,我們能做的是:利用Lasso特征選擇,去除特征間的多重共線性
import pandas as pd import numpy as np from sklearn.linear_model import Lassodata = pd.read_csv('data/data.csv', header=0) x, y = data.iloc[:, :-1], data.iloc[:, -1]# 取alpha=1000進行特征提取 lasso = Lasso(alpha=1000, random_state=1) lasso.fit(x, y) # 相關系數 print('相關系數為', np.round(lasso.coef_, 5)) coef = pd.DataFrame(lasso.coef_, index=x.columns) print('相關系數數組為\n', coef) # 返回相關系數是否為0的布爾數組 mask = lasso.coef_ != 0.0 # 對特征進行選擇 x = x.loc[:, mask] new_reg_data = pd.concat([x, y], axis=1) new_reg_data.to_csv('new_reg_data.csv')三、模型構建
1.灰色預測模型
??灰色預測算法是一種對含有不確定因素的系統進行預測的方法。在建立灰色預測模型之前,需先對原始時間序列進行數據處理,經過數據處理后的時間序列即成為生成列。灰色系統常用的數據處理方式有累加和累減兩種。灰色預測以灰色模型為基礎,在眾多灰色模型中,GM(1,1)模型最為常用。下面展示灰色預測算法的過程及代碼實現
 ??設特征X(0)={X(0)(i),i=1,2...,n}X^{(0)}=\{X^{(0)}(i),i=1,2...,n\}X(0)={X(0)(i),i=1,2...,n}為一非負單調原始數據序列,建立灰色預測模型如下:
??灰色預測法的通用性強,一般的時間序列場合都適用,尤其適合那些規律性差且不清楚數據產生機理的情況。灰色預測模型的優點是預測精度高,模型可檢驗、參數估計方法簡單、對小數據集有很好的的預測效果;缺點是對原始數據序列的光滑度要求很高,在原始數據列光滑性較差的情況下灰色預測模型的預測精度不高,甚至通不過檢驗,結果只能放棄使用灰色模型進行預測。
 ??利用GM(1,1)灰色預測方法得到關鍵影響因素在2014和2015年的預測值
預測完后利用GM11函數中的C、P值進行檢驗,衡量灰色預測模型的精度
2.構建支持向量機回歸模型
??使用支持向量回歸模型對財政收入進行預測,由于數據量小,就沒有設置測試集
from sklearn.svm import LinearSVR import matplotlib.pyplot as pltdata = pd.read_excel('new_reg_data_GM11.xls',index_col=0,header=0) # 讀取數據 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].values # 屬性數據 y_train = data_train['y'].values # 標簽數據# 調用LinearSVR()函數 linearsvr = LinearSVR() linearsvr.fit(x_train, y_train) x = ((data[feature] - data_mean[feature]) / data_std[feature]).values # 預測,并還原結果。 data[u'y_pred'] = linearsvr.predict(x) * data_std['y'] + data_mean['y'] # SVR預測后保存的結果 data.to_excel('new_reg_data_GM11_revenue.xls')print('真實值與預測值分別為:\n', data[['y', 'y_pred']])fig = data[['y', 'y_pred']].plot(subplots=True, style=['b-o', 'r-*']) # 畫出預測結果圖 plt.show() 真實值與預測值分別為:y y_pred 1994 64.87 39.178714 1995 99.75 85.572845 1996 88.11 96.280182 1997 106.07 107.925220 1998 137.32 152.320388 1999 188.14 189.199850 2000 219.91 220.381728 2001 271.91 231.055736 2002 269.10 220.501519 2003 300.55 301.152180 2004 338.45 383.844627 2005 408.86 463.423139 2006 476.72 554.914429 2007 838.99 691.053569 2008 843.14 842.424578 2009 1107.67 1086.676160 2010 1399.16 1377.737429 2011 1535.14 1535.140000 2012 1579.68 1737.264098 2013 2088.14 2083.231695 2014 NaN 2185.297088 2015 NaN 2535.939620如果對您有幫助,麻煩點贊關注,這真的對我很重要!!!如果需要互關,請評論或者私信!
 
總結
以上是生活随笔為你收集整理的数据挖掘实战—财政收入影响因素分析及预测的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: idea 重启
- 下一篇: spring mvc学习(54):简单异
