错误预测股票价格

时间:2017-03-08 09:22:44

标签: python-2.7 machine-learning scikit-learn stock

我有一个Python代码,用于分析过去1年来Google财经中Apple的历史数据。这是数据集的link。我使用的代码如下所示:

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

t=time.time()

dates=[]
prices=[]
f1=open('rbf.txt','wb')
f2=open('lin.txt','wb')
f3=open('poly.txt','wb')
def get_data(fname):
    with open(fname,'rb') as csvfile:
        csvFileReader=csv.reader(csvfile)
        next(csvFileReader)
        for row in csvFileReader:
            l=row[0].split()
            s=l[1].strip(',')
            dates.append(int(s))
            prices.append(float(row[1]))
    return

def predict_prices(dates,prices,x):
    dates=np.reshape(dates,(len(dates),1))

    svr_lin=SVR(kernel='linear', C=1e3)
    svr_poly=SVR(kernel='poly', C=1e3, degree=2)
    svr_rbf=SVR(kernel='rbf',C=1e3,gamma=0.1)
    svr_lin.fit(dates,prices)
    svr_poly.fit(dates,prices)
    svr_rbf.fit(dates,prices)

    f1.write(svr_rbf.predict(dates))
    print type(svr_rbf.predict(dates))
    print type(svr_rbf.predict(dates)[0])
    print type(svr_rbf.predict(dates)[0])
    f2.write(svr_lin.predict(dates))
    f3.write(svr_poly.predict(dates))
    '''
    plt.scatter(dates,prices,color='black',label='Data')
    plt.plot(dates,svr_rbf.predict(dates),color='red',label='RBF model')
    plt.plot(dates,svr_lin.predict(dates),color='green',label='Linear model')
    plt.plot(dates,svr_poly.predict(dates),color='blue',label='Polynomial model')
    plt.xlabel('Dates')
    plt.ylabel('Prices')
    plt.title('Support Vector Regression')
    plt.legend()
    plt.show()
    '''
    return svr_rbf.predict(x)[0],svr_lin.predict(x)[0],svr_poly.predict(x)[0]

get_data('aapl.csv')
predicted_price=predict_prices(dates,prices,6)
f1.close()
f2.close()
f3.close()
print predicted_price
print time.time()-t

我需要解释系统返回的最终预测值。我作为输出获得的值是我在调用预测函数时作为硬编码参数传递的日期的股票价格,还是其他的东西?如果是,我获得的输出将减少35点。当前数据集的顺序相反,即最新。如果我先把它变成最老的那么它会给我正确的预测吗?这个类比的原因在于它的预测大约是109,这是1年前股票的价格,这也是1年前日期和文件最后一行的股票价值。 #39;数据。我该如何纠正呢?请指出我正确的方向。提前致谢。我得到的输出是:

0 个答案:

没有答案