SVR不断预测平线
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SVR不断预测平线相关的知识,希望对你有一定的参考价值。
我试图通过将过去五天的回报“喂”进来,以在预测未来回报时实施支持向量回归。这是该想法的链接:http://www.quintuitive.com/2012/11/30/trading-with-support-vector-machines-svm/
[不幸的是,无论我如何更改参数(内核,C或Gamma),它都始终保持平坦的预测线。现在,我完全不知道发生了什么问题,这里的任何帮助将不胜感激。
from __future__ import division
import numpy as np
from sklearn.svm import SVR
import csv
import datetime, time
from matplotlib import pyplot as plt
data = np.array([row for row in csv.reader(open('eurusd_curncy.20140616.csv', 'rb'))])
data = data[1:,]
n_sample = 5000
n_data = data.shape[0]
t = data[:,0]
high = map(float,data[:,2])
low = map(float,data[:,4])
open_price = map(float,data[:,6])
close_price = map(float,data[:,5])
ret = np.zeros((n_data,1))
for i in range(n_data):
tm = time.strptime(t[i],"%m/%d/%Y %H:%M")
tm = datetime.datetime(tm.tm_year,tm.tm_mon,tm.tm_mday,tm.tm_hour,tm.tm_min)
t[i] = time.mktime(tm.timetuple())
t = map(float, t)
for i in range(n_data-1):
ret[i] = np.log(close_price[i+1]/close_price[i])
lag = 5
y = ret[lag:(lag+n_sample):lag]
y = y[:,0]
X = np.zeros((len(y),lag))
for i in range(len(y)):
for j in range(lag):
X[i,j] = ret[i+j]
n_train = 800
trainX = X[:n_train]
trainY = y[:n_train]
testX = X[n_train:]
testY = y[n_train:]
svr = SVR(kernel='rbf', C=1e3, epsilon=0.2, gamma=0.0001)
svr.fit(trainX, trainY)
predSvr = svr.predict(testX)
plt.plot(testY, testY, 'c.', label='true data')
plt.plot(testY, predSvr, 'm.', label='SVR')
plt.legend()
plt.show()
'eurusd_curncy.20140616.csv'没什么特别的,如果需要,您可以尝试其他一些数据。结果是一条与真实数据交叉的平线。如果我有足够的声誉,我会在这里添加图片。 :(
有人可以对此有所了解吗?预先感谢您的帮助和时间。
答案
因为您的SVR没有包含正确的GAMMA和C值
以上是关于SVR不断预测平线的主要内容,如果未能解决你的问题,请参考以下文章
优化预测基于matlab差分进化改进灰狼算法优化SVR预测含Matlab源码 1575期