如何创建具有不同模式的时间序列数据集(Python)


如何创建具有不同模式的时间序列数据集(Python)
本文插图
时间序列是按时间顺序排列的一系列值 。 不管任何领域 , 我们都可能会遇到时间序列数据 。 典型的例子包括天气预报、汇率、销售数据、声波等 。 时间序列可以是表示为有序序列的任何类型的数据 。
在这篇文章中 , 我们将创建不同模式的时间序列数据 。 合成数据集的一个优点是 , 我们可以测量机器学习模型的性能 , 并了解它在实际数据中的表现 。
时间序列的常见模式包括:

  • 趋势:整体上升或下降的方向 。
  • 季节性:以固定时间间隔重复的模式 。
  • 白噪音:时间序列并不总是遵循某种模式(或包含季节性) 。 一些过程仅产生随机数据 , 这种时间序列称为白噪声 。
注意:图像并非总是平滑的 , 通常会有一些噪音 。 此外 , 时间序列可能包括不同模式的组合 。
我们将使用numpy来生成数值数组 , 并使用matplotlib来绘制序列 。 让我们从导入所需的Python库开始:
import numpy as np import matplotlib.pyplot as plt %matplotlib inline我们可以定义一个将数组作为输入并创建图形的Python函数:
def plot_time_series(time, values, label): plt.figure(figsize=(10,6)) plt.plot(time, values) plt.xlabel(''Time'', fontsize=20) plt.ylabel(''Value'', fontsize=20) plt.title(label, fontsize=20) plt.grid(True)时间序列趋势
这是最简单的一个 , 它是一个具有上升趋势的时间序列 。 我们创建一个具有时间和斜率的数组 。 然后将这些数组作为参数传递给我们的函数 , Python代码如下:
time = np.arange(100) values = time*0.4 plot_time_series(time, values, ''Upward Trend'')
【如何创建具有不同模式的时间序列数据集(Python)】
如何创建具有不同模式的时间序列数据集(Python)
本文插图
时间序列中的季节性
现在 , 我们可以绘制具有季节性的时间序列 。 我我们需要一个重复相同模式的序列 。 Python实现如下:
# Just a random pattern time = np.arange(50) values = np.where(time < 10, time**3, (time-9)**2) # Repeat the pattern 5 times seasonal = [] for i in range(5): for j in range(50): seasonal.append(values[j]) # Plot time_seasonal = np.arange(250) plot_time_series(time_seasonal, seasonal, label=''Seasonality'')
如何创建具有不同模式的时间序列数据集(Python)
本文插图
这只是一个随机模式 。 您可以用numpy尝试不同的模式 。
噪声
我们可以使用np.random.randn函数创建随机噪声 。 然后将该噪声添加到季节性序列中 , Python实现如下:
noise = np.random.randn(250)*100 seasonal += noise time_seasonal = np.arange(250) plot_time_series(time_seasonal, seasonal, label=''Seasonality with Noise'')
如何创建具有不同模式的时间序列数据集(Python)
本文插图
多种模式组合
我们可以在时间序列中看到不同模式的组合 。 例如 , 下面的时间序列包含上升趋势和季节性 , 也含有一些噪声 。
seasonal_upward = seasonal + np.arange(250)*10 time_seasonal = np.arange(250) plot_time_series(time_seasonal, seasonal_upward, label=''Seasonality + Upward Trend + Noise'')
如何创建具有不同模式的时间序列数据集(Python)
本文插图
白噪声
有些过程会产生不遵循任何模式的随机数据 。 这种时间序列被称为白噪声 , 很难分析和预测 。 让我们使用Python来创建一个白噪声示例: