+-
python – 使用支持向量回归的时间序列预测
我一直在尝试使用 python语言中的支持向量回归来实现时间序列预测工具.我使用scikit-learn的SVR模块进行非线性支持向量回归.但是我对未来事件的预测存在严重问题.回归线非常适合原始函数(来自已知数据),但只要我想预测未来步骤,它就会返回上一个已知步骤的值.

我的代码看起来像这样:

import numpy as np from matplotlib import pyplot as plt from sklearn.svm import SVR X = np.arange(0,100) Y = np.sin(X) svr_rbf = SVR(kernel='rbf', C=1e5, gamma=1e5) y_rbf = svr_rbf.fit(X[:-10, np.newaxis], Y[:-10]).predict(X[:, np.newaxis]) figure = plt.figure() tick_plot = figure.add_subplot(1, 1, 1) tick_plot.plot(X, Y, label='data', color='green', linestyle='-') tick_plot.axvline(x=X[-10], alpha=0.2, color='gray') tick_plot.plot(X, y_rbf, label='data', color='blue', linestyle='--') plt.show()

有任何想法吗?
提前致谢,
汤姆

最佳答案
你并没有真正做时间序列预测.您试图从X的单个元素预测Y的每个元素,这意味着您只是在解决标准的核心回归问题.

另一个问题是当在一系列向量[[0],[1],[2],…]上计算RBF内核时,你将在核矩阵的对角线上得到一个正值带,而值远离对角线将接近于零.核矩阵的测试集部分远离对角线,因此非常接近零,这将导致所有SVR预测接近偏差项.

对于时间序列预测,我建议将训练测试集构建为

x[0]=Y[0:K]; y[0]=Y[K] x[1]=Y[1:K+1]; y[1]=Y[K+1] ...

也就是说,尝试从先前元素的窗口预测序列的未来元素.

点击查看更多相关文章

转载注明原文:python – 使用支持向量回归的时间序列预测 - 乐贴网