Reference

《Python数据分析与挖掘实战(第2版)》

第6章,页码:P170,代码略有改进

data.csv数据下载

分析过程

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

import seaborn as sns

import sys

from GM11 import GM11

from sklearn.linear_model import Lasso

from sklearn.svm import LinearSVR

pd.set_option('max_columns',1000)

pd.set_option('max_row',300)

pd.set_option('display.float_format', lambda x: '%.5f' % x)

plt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签

plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号

data = pd.read_csv('data.csv') #读取数据

print(data.head()) #展示前几行

image.png

#描述性统计分析

#依次计算最小值、最大值、平均值、标准差

description = [data.min(), data.max(), data.mean(), data.std()]

#将结果存入数据框

description = pd.DataFrame(description, index=['Min', 'Max', 'Mean', 'STD']).T

print('描述性统计结果:\n', np.round(description, 2)) #保留两位小数

image.png

#相关性分析

corr = data.corr(method='pearson') #计算相关系数矩阵

print('相关系数矩阵为:\n', np.round(corr, 2)) #保留两位小数

image.png

#绘制相关性热力图

plt.subplots(figsize=(10, 10)) #设置画面大小

sns.heatmap(corr, annot=True, vmax=1, square=True, cmap="Blues")

plt.title('相关性热力图')

plt.show()

plt.close()

image.png

#数据预处理: Lasso回归选取关键属性

lasso = Lasso(1000) #调用Lasso()函数,设置λ的值为1000, lasso的复杂程度由λ来控制,λ越大对变量较多的线性模型的惩罚力度就越大,从而最终获得一个变量较少的模型。

lasso.fit(data.iloc[:,0:13], data['y'])

print('相关系数为:\n', np.round(lasso.coef_, 5)) #输出结果,保留5位小数

print('相关系数非零个数为:\n', np.sum(lasso.coef_ != 0)) #计算相关系数非零的个数

mask = lasso.coef_ != 0 #返回一个相关系数是否为零的布尔数组

print('相关系数是否为零:\n', mask)

image.png

mask = np.insert(mask, 13, [False])

# print(mask)

new_data = data.T[mask].T

# print(new_data)

#构建财政收入预测模型

##构建灰色预测模型并预测

new_data.index = range(1994, 2014)

new_data.loc[2014] = None

new_data.loc[2015] = None

cols = ['x1', 'x3', 'x4', 'x5', 'x6', 'x7', 'x8', 'x13']

# print(new_data)

for i in cols:

f = GM11(new_data.loc[range(1994, 2014), i].values)[0]

new_data.loc[2014, i] = f(len(new_data) - 1) #2014年预测结果

new_data.loc[2015, i] = f(len(new_data)) #2015年预测结果

new_data[i] = new_data[i].round(2) #保留两位小数

y = list(data['y'].values) #提取财政收入列,合并至新数据框中

y.extend([np.nan, np.nan])

new_data['y'] = y

print('预测结果为:\n',new_data.loc[2014:2015,:]) #预测展示

image.png

##构建支持向量回归预测模型

feature = ['x1', 'x3', 'x4', 'x5', 'x6', 'x7', 'x8', 'x13'] #属性所在列

data_train = new_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 = ((new_data[feature] - data_mean[feature])/data_std[feature]).values #预测,并还原结果

new_data[u'y_pred'] = linearsvr.predict(x) * data_std['y'] + data_mean['y']

print('真实值与预测值分别为:\n', new_data[['y', 'y_pred']])

fig = new_data[['y', 'y_pred']].plot(subplots = True, style=['b-o', 'r-*'])

plt.show()

image.png

image.png

python与财务数据挖掘_Python数据挖掘实战2:财政收入影响因素及预测相关推荐

  1. python 数据挖掘_Python数据挖掘框架scikit数据集之iris

    一.iris数据集简介 iris数据集的中文名是安德森鸢尾花卉数据集,英文全称是Anderson's Iris data set.iris包含150个样本,对应数据集的每行数据.每行数据包含每个样本的 ...

  2. python分析鸢尾花数据_python数据挖掘学习笔记】十六.逻辑回归LogisticRegression分析鸢尾花数据...

    但是很多时候数据是非线性的,所以这篇文章主要讲述逻辑回归及Sklearn机器学习包中的LogisticRegression算法 #2018-03-28 16:57:56 March Wednesday ...

  3. python特征工程意义_python数据挖掘--特征工程篇(附代码)

    记录数据挖掘路上遇到的常用特征工程方法和技巧(附代码),方便自己,方便他人,持续更新. 1.哑编码 对某一列数据进行pandas自带的(定性数据哑编码,定量数据二值化),并附上名字 pd.get_du ...

  4. python 调用数据挖掘_Python数据挖掘 环境搭建

    deepin 有很多小伙伴想学习python,但windows写python基本是坑,deepin属于linux分支,界面美观,内置大量桌面软件,对新手十分友好,这里尝试在深度系统(deepin)内安 ...

  5. 如何用python数据挖掘_Python数据挖掘-文本挖掘

    文本挖掘概要 搞什么的? 从大量文本数据中,抽取出有价值的知识,并且利用这些知识更好的组织信息的过程. 目的是什么? 把文本信息转化为人们可利用的知识. 举例来说,下面的图表利用文本挖掘技术对库克ip ...

  6. python神经网络分析案例_python神经网络实战

    机器学习实战笔记(Python实现)-04-Logistic回归 转自:机器学习实战笔记(Python实现)-04-Logistic回归 转自:简单多元线性回归(梯度下降算法与矩阵法) 转自:人工神经 ...

  7. python数据分析概述答案_Python数据分析实战(1)数据分析概述

    一.入门数据分析 1.大数据时代的基本面 大数据产业发展现状:现在数据已经呈现出了爆炸式的增长,每一分钟可能就会有:13000+个iPhone应用下载 Twitter上发布98000+新微博 发出1. ...

  8. python资本市场财务数据分析_Python对股票财务数据进行可视化分析

    对股票财务数据进行分析是非常必要,但因股票数据量很大,单凭浏览网页或在软件客户端查看是非常浪费精力的一件事,通过Python进行网页数据提取,将财务数据图表化会更加直观.以下代码在Python 3.6 ...

  9. python爬虫经典段子_Python爬虫实战(1):爬取糗事百科段子

    大家好,前面入门已经说了那么多基础知识了,下面我们做几个实战项目来挑战一下吧.那么这次为大家带来,Python爬取糗事百科的小段子的例子. 首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把 ...

最新文章

  1. CowNew开源-sql解析引擎和cownewsql阶段成果汇报
  2. 爬虫+python3(网页图片)
  3. Windows 下配置Apache+MySql+PHP环境(原创)
  4. DispatcherServlet的用途
  5. Java Hessian小试(转)
  6. nagios监控mysql主机,nginx,cpu,网卡流量
  7. python生成器迭代_python中的生成器和迭代器
  8. 傅里叶变换和拉普拉斯变换公式总结
  9. 借助echarts制作酷炫3d地球动画
  10. java从文本中提取姓名、身份证、电话、地址
  11. 关于字符集的测试报告(转)
  12. 读书笔记《能力陷阱》第四章:试着朝更多不同的方向发展自己
  13. MsysGIT -- Windows下GIT提供众多的Linux命令
  14. 使用vagrant搭建三台虚拟机环境
  15. LeetCode-344
  16. 计算机英语和普通英语区别表现,浅谈日常英语与计算机专业英语的区别
  17. keras 香草编码器_用香草javascript遍历dom
  18. 金融结算系统的基础业务之账户体系结构分析
  19. python中内置数学函数详解和实例应用之三角函数曲线_初级阶段(三)
  20. 金融风控实战——风控数据挖掘方法(决策树规则挖掘)

热门文章

  1. 基于ASP的课外培训在线教育毕设免费下载
  2. python 函数调用列表_python – 根据列表中的字符串调用函数
  3. 关于互联网大厂裁员,引发企业危机处理与个人危机处理的思考
  4. 深入理解C++浮点数(float、double)类型数据比较、相等判断
  5. OpenCV自适应阈值分割函数:adaptiveThreshold()介绍
  6. 为opencv添加contrib库
  7. APP如何进行通信的
  8. 下载Office安装包,提示找不到OfficeLR.cab文件。
  9. 如何用OpenCV自带的adaboost程序训练并检测目标
  10. 拥抱.NET Core,如何开发一个跨平台类库 (1)