繁体   English   中英

支持向量回归的时间序列预测

[英]Time series forecasting with support vector regression

我正在尝试使用支持向量回归进行简单的时间序列预测。

我试图理解这里提供的答案。

我修改了汤姆的代码以反映所提供的答案:

import numpy as np
from matplotlib import pyplot as plt
from sklearn.svm import SVR

X = np.arange(0,100)
Y = np.sin(X)

a = 0
b = 10
x = []
y = []
while b <= 100:
    x.append(Y[a:b])
    a += 1
    b += 1
b = 10

while b <= 90:
    y.append(Y[b])
    b += 1

svr_rbf = SVR(kernel='rbf', C=1e5, gamma=1e5)
y_rbf = svr_rbf.fit(x[:81], y).predict(x)

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[10:], y_rbf[:-1], label='data', color='blue', linestyle='--')
plt.show()

但是,我仍然得到相同的行为-预测只是返回了最后一个已知步骤的值。 奇怪的是,如果将内核设置为linear ,结果会好得多。 为什么rbf内核预测无法按预期工作?

谢谢。

我知道这是一个老问题,但我会回答,因为其他人可能会从中受益。

如果您的示例适用于线性内核而不适用于rbf,则您用于C和gamma的值很可能是问题。 C和gamma是用于非线性核的SVM参数。 为了更好地说明C和gamma的直观含义,请在此处查看: http ://scikit-learn.org/stable/auto_examples/svm/plot_rbf_parameters.html?

为了预测正弦波的值,请尝试C = 1和gamma = 0.1。 它的性能要比您拥有的值好得多。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM