使用日期时间索引在 Python 中进行时间序列预测

Posted

技术标签:

【中文标题】使用日期时间索引在 Python 中进行时间序列预测【英文标题】:Timeseries forecasting in Python with datetime indexes 【发布时间】:2016-01-04 12:23:45 【问题描述】:

我正在尝试同时使用 SVR 和 GP 来预测时间序列。 时间序列实际上是一个以pandas.DatetimeIndex 为索引的pandas.Series

这两种算法都在 scikit-learn 中实现。而 SVR 在修改后实际上接受使用 X 轴进行预测:

train_size = 100
svr = GridSearchCV(SVR(kernel='rbf', gamma=0.001), cv=5,
               param_grid="C": [1e0, 1e1, 1e2, 1e3],
                           "gamma": np.logspace(-2, 2, 5))

# Chose train_size items randomly in the data to predict
data_train = ts.sample(n=train_size)
data_train_y = data_train.values
data_train_x = (data_train.index.values).reshape(train_size, 1)

t0 = time.time()
svr.fit(data_train_x, data_train_y)
svr_fit = time.time() - t0
print("SVR complexity and bandwidth selected and model fitted in %.3f s"
  % svr_fit)

sv_ratio = svr.best_estimator_.support_.shape[0] / train_size
print("Support vector ratio: %.3f" % sv_ratio)


min_date = min(ts.index.values)
max_date = max(ts.index.values) + np.timedelta64('1','D')

X_plot = pd.date_range(min_date, max_date, freq='H')
X_plot = X_plot.to_series()
X_plot = X_plot.reshape([len(X_plot),1])

t0 = time.time()
y_svr = svr.predict(X_plot)
svr_predict = time.time() - t0
print("SVR prediction for %d inputs in %.3f s"
  % (X_plot.shape[0], svr_predict))

高斯过程不想处理:

from sklearn import gaussian_process
gp = gaussian_process.GaussianProcess(theta0=1e-2, thetaL=1e-4, thetaU=1e-1)
gp.fit(data_train_x, data_train_y) 

它导致:

TypeError: ufunc add cannot use operands with types dtype('<M8[ns]') and dtype('<M8[ns]')

【问题讨论】:

【参考方案1】:

显然时间戳数据类型是不可接受的。它们应该被转换为浮点数。

【讨论】:

以上是关于使用日期时间索引在 Python 中进行时间序列预测的主要内容,如果未能解决你的问题,请参考以下文章

Python Pandas 索引排序/分组/日期时间

时间序列重采样错误 - 熊猫列中没有日期索引

使用另一个时间序列的索引重新采样一个时间序列

金融时间序列丨数析学院

python中时间序列数据的简单(但大)读/写

使用时间序列重新索引数据帧