Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python SVR不断预测扁平线_Python_Scikit Learn_Svm - Fatal编程技术网

Python SVR不断预测扁平线

Python SVR不断预测扁平线,python,scikit-learn,svm,Python,Scikit Learn,Svm,我试图通过“输入”过去五天的收益来实现支持向量回归预测未来收益。以下是该想法的链接: 不幸的是,无论我如何更改参数(kernel、C或gamma),它总是给出一条平坦的预测线。现在我完全不知道哪里出了问题,这里的任何帮助都将不胜感激 from __future__ import division import numpy as np from sklearn.svm import SVR import csv import datetime, time from matplotlib impor

我试图通过“输入”过去五天的收益来实现支持向量回归预测未来收益。以下是该想法的链接:

不幸的是,无论我如何更改参数(kernel、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值

这些线不应该是
plt.plot(testX,
?@DanGetz:testX是一个N乘5的矩阵。plot(testX,…)没有任何意义,是吗?嗨,Sukhlal,欢迎来到StackOverflow。你应该正确解释你的答案。请阅读“如何回答”指南。