Python预测 数据分析与算法 学习笔记(特征工程、时间序列)1

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
大数据开发治理平台 DataWorks,不限时长
简介: Python预测 数据分析与算法 学习笔记(特征工程、时间序列)

第3章 探索规律

3.1 相关分析

相关关系是一种与函数关系相区别的非确定性关系,而相关分析就是研究事物或现象之间是否存在这种非确定性关系的统计方法。相关分析按处理问题的不同,通常可分为自相关分析、偏相关分析、简单相关分析、互相关分析以及典型相关分析。其中自相关分析、偏相关分析适用于分析变量自身的规律;简单相关分析通常可分析任意两个等长数列间的相的相关性;而互相关分析则允许在一定的间隔下讲行简单相关分析:典型相关分析适用于分析两组变量的相关性。

3.1.1自相关分析

在Python中,可使用statsmodels.graphics.tasplots模块下的plot_acf函数来分析时间序列的自相关性。

表 plot_acf函数定义及参数说明

函数定义
plot_acf(x,ax=None,lags=None,alpha=0.5,use_vlines=Ture,unbiased=True,fft=False,title='Autocorrelation',zero=True,vlines_kwargs=None,**kwargs)
参数说明
lags 可选项,表示延迟期数(横坐标),一般需要提供一个整数值或一个数值,当提供一个整数值时,它会按np.arange(lags)进行转换,默认情况下,它是np.arange(len(corr))
alpha 可选项,标量值,当设定该值时,对应函数会返回对应的置信区间,比如当设置 alpha=0.05时,将返回95%的置信区间。若将该值设定为None,则函数不该回置信区间
use_vlines 可选项,逻辑值。若为True,则绘制垂直线和标记。若为False,则只会绘制标记。默认为marker是'o',可以通过设置"marker"参数来修改
unbiased 逻辑值,如果是True,则自协方差的分母是n-k,否则为n
fft 逻辑值,如果是 True,则使用FFT来计算ACF
title 自相关图的标题,默认为Autocorrelation
zero 逻辑值,是否包含0-lag的自相关,默认为 True
vlines_kwargs 可选项,字典对象,包含传递给vlines的关键参数
**kwargs 可选项,直接传递给 Matplotlib中的 plot和 axhline函数的可选参数
ax 可选项,Matplotlib AxesSubplot 实例,当提供时,则直接基于ax来绘图,而不需要重新创建一个新画布来绘图
x 时间序列值组成的数组对象

3.1.2偏相关分析

在Python中,可使用statsmodels.graphics.tasplots模块下的plot_pacf函数来分析时间序列的偏相关性。

表 plot_pacf函数定义及参数说明

函数定义
plot_pacf(x,ax=None,lags=None,alpha=0.05,method='ywunbiased',use_vlines=True,title='Partial Autocorrelation',zero=True,vlines_kwargs=None,**kwargs)
参数说明
x 时间序列值组成的数组对象
ax 可选项,Matplotlib AxesSubplot 实例,当提供时,则直接基于ax来绘图,而不需要重新创建一个新画布来绘图
lags 可选项,表示延迟期数(横坐标),一般需要提供一个整数值或一个数值,当提供一个整数值时,它会按np.arange(lags)进行转换;默认情况下,它是np.arange(len(corr))
alpha 可选项,标量值,当设定该值时,对应函数会返回对应的置信区间,比如当设置alpha=0.05时,将返回95%的置信区间。若将该值设定为None,则函数不返回置信区间
method 可取的值包括'ywunbiased','ywmle'和'ols',可按如下方法来选择使用。-yw or ywunbiased:默认项,在acovf的分母中进行偏差纠正的yule walker-ywm or ywmle:没有偏差纠正的yule walker-ols:基于时间序列延迟和常数项构建的回归-ld or ldunbiased:进行偏差纠正的Levinson-Durbin递归-ldb or Idbiased:没有偏差纠正的Levinson-Durbin递归
use_lines 可选项,逻辑值。若为True,则绘制垂直线和标记。若为False,则只会绘制标记。默认为marker是'o',可以通过设置"marker"参数来修改
title 自相关图的标题,默认为 Partial Autocorrelation
zero 逻辑值,是否包含0-lag 的自相关,默认为 True
vlines_kwargs 可选项,字典对象,包含传递给vlines的关键参数
**kwargs 可选项,直接传递给Matplotlib中的plot和 axhline函数的可选参数

3.1.3简单相关分析

常见的相关分析的方法主要有散点图和相关图

1.散点图

散点图就是在数据点在直角坐标系上的分布图,通常分为散点图矩阵和三维散点图。其中散点图矩阵是变量两两组合,由数据点分布图构成的矩阵,而三维散点图就是从所有变量中选择3个变量进行绘制,进一步在三维空间里观察数据的形态。

  1. 散点图矩阵

Pandas.plotting模块下的scatter_matrix函数,使用该函数可快速绘制散点图。

import warnings
warnings.filterwarnings("ignore")
import pandas as pd
import matplotlib.pyplot as plt
iris = pd.read_csv('http://image.cador.cn/data/iris.csv')
# 参数说明
#     figsize=(10,10) 设置画布大小为10x10
#     alpha=1,设置透明度,此处设置为不透明
#     hist_kwds={"bins":20} 设置对角线上直方图参数
#     可通过设置diagonal参数为kde将对角图像设置为密度图
pd.plotting.scatter_matrix(iris,figsize=(10,10),alpha=1,hist_kwds={"bins":20})
plt.show()

#对角线上为单变量的直方图

此外,我们还可以使用Seaborn库中的pairplot函数来绘制散点图矩阵。

import seaborn as sns
sns.pairplot(iris,hue="Species")
plt.show()


#通过hue参数指定了分组的变量,这里使用鸢尾花的种类进行分组。对角线上的图形表示各个变量在不同鸢尾花类型下的分布情况;其他图形分别用不同颜色为数据点着色。根据该图可以更进一步地知道不同类型鸢尾花各变量的相关分析,以及线性、非线性的变化规律。

  1. 三维散点图

常用于绘制散点图的方法是使用mpl_toolkits库,该库中的mplot3d模块可以帮助我们绘制三维图形,主要使用的是Axes3D类。

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D 
dims = {'x':'Sepal.Length','y':'Petal.Length','z':'Petal.Width'}
types = iris.Species.value_counts().index.tolist()
# 绘制散点图
fig = plt.figure()
ax = Axes3D(fig)
for iris_type in types:
    tmp_data = iris[iris.Species==iris_type]
    x,y,z = tmp_data[dims['x']], tmp_data[dims['x']], tmp_data[dims['z']]
    ax.scatter(x, y, z, label=iris_type)
# 绘制图例
ax.legend(loc='upper left')
# 添加坐标轴(顺序是Z, Y, X)
ax.set_zlabel(dims['z'])
ax.set_ylabel(dims['y'])
ax.set_xlabel(dims['x'])
plt.show()


2.相关图

所谓相关图是基于变量间的相关系数大小,通过可视化方式反应不同变量组合间相关关系的差异的图形,可以把相关图分为相关矩阵图。相关层次图。

  1. 相关矩阵图

在python中绘制相关矩阵图可以使用Seaborn库的heatmap方法,用pandas.corr函数来获取相关系数矩阵。

  1. 相关层次图

相关层次图是通过计算变量间的距离来判断各变量是否属于同一类的方法,体现的是变量之间的相关性。此外,通过将相关系数转化为距离度量进行系统聚类,旨在分析各变量的相关关系及组合影响情况。

import pandas as pd
import numpy as np
mtcars = pd.read_csv("http://image.cador.cn/data/mtcars.csv")
mtcars.drop(columns="_",inplace=True)
# 计算第四种相异性度量
d=np.sqrt(1-mtcars.corr()*mtcars.corr())
from scipy.spatial.distance import pdist,squareform
from scipy.cluster.hierarchy import linkage
from scipy.cluster.hierarchy import dendrogram
row_clusters = linkage(pdist(d,metric='euclidean'),method='ward')
row_dendr = dendrogram(row_clusters,labels = d.index)
plt.tight_layout()
plt.ylabel('Euclidean distance')
plt.plot([0,2000],[1.5,1.5],c='gray',linestyle='--')
plt.show()

变量drat、am、gear相关性较强,cyl、disp、mpg、wt相关性较强,hp、vs、qsec、carb相关性较强。

相关文章
|
2天前
|
索引 Python
【Python操作基础】——序列
【Python操作基础】——序列
|
2天前
|
数据采集 数据可视化 数据挖掘
如何利用Python中的Pandas库进行数据分析和可视化
Python的Pandas库是一种功能强大的工具,可以用于数据分析和处理。本文将介绍如何使用Pandas库进行数据分析和可视化,包括数据导入、清洗、转换以及基本的统计分析和图表绘制。通过学习本文,读者将能够掌握利用Python中的Pandas库进行高效数据处理和可视化的技能。
|
4天前
|
机器学习/深度学习 数据可视化 算法
使用Python进行数据分析的5个必备技巧
【5月更文挑战第9天】本文介绍了Python数据分析的五个关键技巧:1) 使用Pandas进行数据处理和清洗;2) 利用NumPy进行高效数值计算;3) 通过Matplotlib和Seaborn创建可视化图表;4) 使用Scikit-learn执行机器学习任务;5) 在Jupyter Notebook中进行交互式分析和文档分享。这些技巧能提升数据分析的效率和准确性。
|
5天前
|
数据采集 数据可视化 数据挖掘
Python 与 PySpark数据分析实战指南:解锁数据洞见
Python 与 PySpark数据分析实战指南:解锁数据洞见
|
7天前
|
机器学习/深度学习 数据挖掘 计算机视觉
R语言中的神经网络预测时间序列:多层感知器(MLP)和极限学习机(ELM)数据分析报告
R语言中的神经网络预测时间序列:多层感知器(MLP)和极限学习机(ELM)数据分析报告
|
7天前
|
机器学习/深度学习 运维 算法
Python数据分析中的异常检测与处理方法
在Python数据分析中,异常数据是一个常见但又十分重要的问题。本文将介绍几种常见的异常检测与处理方法,包括基于统计学方法、机器学习方法以及深度学习方法。通过对异常数据的有效检测与处理,可以提高数据分析的准确性和可信度,从而更好地指导业务决策。
|
8天前
|
数据采集 数据可视化 数据挖掘
Python在数据分析中的强大应用
【5月更文挑战第5天】Python在数据驱动时代成为数据分析师首选工具,得益于其丰富的数据科学库(如NumPy、Pandas、Matplotlib、Seaborn和SciPy)。这些库支持数据清洗、探索、建模和可视化。Python在数据清洗、文本分析、Web数据抓取和大数据处理等方面有广泛应用,并因其易学性、强大社区和广泛适用性而备受青睐。未来,Python在数据分析领域的角色将更加重要。
|
12天前
|
机器学习/深度学习 算法 数据挖掘
【Python机器学习专栏】金融数据分析中的机器学习应用
【4月更文挑战第30天】本文探讨了机器学习在金融数据分析中的应用,如股价预测、信用评分、欺诈检测、算法交易和风险管理,并以Python为例展示了如何进行股价预测。通过使用机器学习模型,金融机构能更准确地评估风险、识别欺诈行为并优化交易策略。Python结合scikit-learn库简化了数据分析过程,助力金融从业者提高决策效率。随着技术发展,机器学习在金融领域的影响力将持续增强。
|
20天前
|
机器学习/深度学习 数据可视化 数据挖掘
Python跳水:探索数据分析的深渊
Python跳水:探索数据分析的深渊
22 0
|
15天前
|
机器学习/深度学习 数据采集 算法
Python用逻辑回归、决策树、SVM、XGBoost 算法机器学习预测用户信贷行为数据分析报告
Python用逻辑回归、决策树、SVM、XGBoost 算法机器学习预测用户信贷行为数据分析报告