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

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 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相关性较强。

相关文章
|
1月前
|
网络协议 Java Linux
PyAV学习笔记(一):PyAV简介、安装、基础操作、python获取RTSP(海康)的各种时间戳(rtp、dts、pts)
本文介绍了PyAV库,它是FFmpeg的Python绑定,提供了底层库的全部功能和控制。文章详细讲解了PyAV的安装过程,包括在Windows、Linux和ARM平台上的安装步骤,以及安装中可能遇到的错误和解决方法。此外,还解释了时间戳的概念,包括RTP、NTP、PTS和DTS,并提供了Python代码示例,展示如何获取RTSP流中的各种时间戳。最后,文章还提供了一些附录,包括Python通过NTP同步获取时间的方法和使用PyAV访问网络视频流的技巧。
213 4
PyAV学习笔记(一):PyAV简介、安装、基础操作、python获取RTSP(海康)的各种时间戳(rtp、dts、pts)
|
1月前
|
Python
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
使用Python的socket库实现客户端到服务器端的图片传输,包括客户端和服务器端的代码实现,以及传输结果的展示。
139 3
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
|
1月前
|
JSON 数据格式 Python
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
本文介绍了如何使用Python的socket模块实现客户端到服务器端的文件传输,包括客户端发送文件信息和内容,服务器端接收并保存文件的完整过程。
149 1
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
|
13天前
|
SQL 数据挖掘 Python
数据分析编程:SQL,Python or SPL?
数据分析编程用什么,SQL、python or SPL?话不多说,直接上代码,对比明显,明眼人一看就明了:本案例涵盖五个数据分析任务:1) 计算用户会话次数;2) 球员连续得分分析;3) 连续三天活跃用户数统计;4) 新用户次日留存率计算;5) 股价涨跌幅分析。每个任务基于相应数据表进行处理和计算。
|
1月前
|
机器学习/深度学习 算法 数据挖掘
基于GWO灰狼优化的GroupCNN分组卷积网络时间序列预测算法matlab仿真
本项目展示了基于分组卷积神经网络(GroupCNN)和灰狼优化(GWO)的时间序列回归预测算法。算法运行效果良好,无水印展示。使用Matlab2022a开发,提供完整代码及详细中文注释。GroupCNN通过分组卷积减少计算成本,GWO则优化超参数,提高预测性能。项目包含操作步骤视频,方便用户快速上手。
|
1月前
|
存储 编译器 索引
Python 序列类型(2)
【10月更文挑战第8天】
Python 序列类型(2)
|
1月前
|
存储 C++ 索引
Python 序列类型(1)
【10月更文挑战第8天】
|
1月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于WOA鲸鱼优化的GroupCNN分组卷积网络时间序列预测算法matlab仿真
本项目展示了一种基于WOA优化的GroupCNN分组卷积网络时间序列预测算法。使用Matlab2022a开发,提供无水印运行效果预览及核心代码(含中文注释)。算法通过WOA优化网络结构与超参数,结合分组卷积技术,有效提升预测精度与效率。分组卷积减少了计算成本,而WOA则模拟鲸鱼捕食行为进行优化,适用于多种连续优化问题。
|
1月前
|
关系型数据库 MySQL 数据库
Mysql学习笔记(四):Python与Mysql交互--实现增删改查
如何使用Python与MySQL数据库进行交互,实现增删改查等基本操作的教程。
64 1
|
1月前
|
Ubuntu Linux Python
Ubuntu学习笔记(六):ubuntu切换Anaconda和系统自带Python
本文介绍了在Ubuntu系统中切换Anaconda和系统自带Python的方法。方法1涉及编辑~/.bashrc和/etc/profile文件,更新Anaconda的路径。方法2提供了详细的步骤指导,帮助用户在Anaconda和系统自带Python之间进行切换。
86 1
下一篇
无影云桌面