我开始用tensorflow学习ML . 我用DNNRegressor Build 了一个模型来分析时间序列以太坊数据 . 带有测试数据的模型非常有效 .
我有两个问题,首先是如何用这个模型确定均方误差 .
第二个也是更重要的是,是否有可能提前一步预测下周预测?怎么样?
这是代码
from datetime import datetime
import os
import math
import csv
import numpy as np
import tensorflow as tf
import pickle
import pandas
from matplotlib import pyplot as plt
from matplotlib.collections import LineCollection
from six.moves.urllib.request import urlopen
from six.moves.urllib.parse import urlencode
df = pandas.read_csv('eth_1.csv')
x=df[df.columns[0]]
y=df[df.columns[1]]
X=np.transpose(y)
offset = int(X.shape[0] * 0.7)
date_test,date_train= x[offset:], x[:offset]
X_test, y_test = X[offset:], X[offset:]
X_train, y_train = X[:offset], X[:offset]
def test_tf():
# Specify that all features have real-value data
feature_columns = [tf.contrib.layers.real_valued_column("", dimension=1)]
# Build 3 layer DNN with 10, 20, 10 units respectively.
estimator = tf.contrib.learn.DNNRegressor(feature_columns=feature_columns,
hidden_units=[10, 20, 10])
# Define the training inputs
def get_train_inputs():
x = tf.constant(X_train)
y = tf.constant(y_train)
return x, y
# Fit model.
estimator.fit(input_fn=get_train_inputs, steps=2000)
# Define the test inputs
def new_samples():
return X_test
y=estimator.predict(input_fn=new_samples)
return list(y)
if __name__ == "__main__":
from timeit import default_timer as timer
num_runs=2
print ("$$$$$Timing Tensorflow for %i runs"%(num_runs))
start1 = timer()
for i in range(num_runs):
#print("Time for %i runs: %s sec"%(num_runs, timeit.timeit("test_tf()","from __main__ import test_tf", #number=num_runs)))
tf_out =test_tf()
end1=timer()
print 'tf_out', tf_out
print( "Time for %i runs is:%f"%(num_runs, end1-start1))
plt.plot(date_train, y_train,'g-',label="Training Data ")
plt.plot(date_test, y_test,'r-',label="Actual Stock Data ")
plt.plot(date_test, tf_out,'b-',label="Tensorflow Prediction ")
plt.gcf().autofmt_xdate()
plt.legend(loc='best')
plt.xlabel('Date')
plt.gcf().autofmt_xdate()
plt.show()
我尝试过先知和ARIMA,但我想尝试使用tensorflow的事件
谢谢!