我正试图通过RNNs和Tensorflow来预测比特币的价格。你知道吗
我的模型是非常简单的RNNs和LSTM:
cell = tf.contrib.rnn.BasicLSTMCell(num_units=num_hidden, state_is_tuple=True, activation=tf.tanh)
outputs, _ = tf.nn.dynamic_rnn(cell, X, dtype=tf.float32)
predict = tf.contrib.layers.fully_connected(outputs[:, -1], num_output,
activation_fn=None) # use last cell's output
cost = tf.reduce_sum(tf.square(predict - Y)) # MSE
optimizer = tf.train.AdamOptimizer(learning_rate).minimize(cost)'
我每小时有35000个比特币价格数据。你知道吗
我将其拆分为训练数据集(旧数据)和测试数据集(新数据)。你知道吗
在训练之前,我尝试最小最大缩放,以便所有的训练数据都在0到1之间缩放。你知道吗
# to avoid divide by zero, add noise
data = (data - np.min(np.abs(data), axis=0)) / (
np.max(np.abs(data), axis=0) - np.min(np.abs(data), axis=0) + 1e-8)
然而,由于比特币价格在去年大幅上涨(这是一个正在测试的数据集),我的模型根本无法预测测试数据集的价格。你知道吗
(图片来自here)
我尝试了另外两种方法:
只需修正最高价格数据 我只确定最高价格,比如35000美元。你知道吗
# to avoid divide by zero, add noise
data = (data - np.min(np.abs(data), axis=0)) / (
35000 - np.min(np.abs(data), axis=0) + 1e-8)
预测效果良好。不过,我觉得这是 相当不明智的方式-如果比特币上涨超过35000美元怎么办?
按增减率预测
data = data[1:] / data[:len(data) - 1]
我修改了整个数据,如上述,以便数据将像(价格为 明天)/(今天的价格)。你知道吗
这样,整个数据就在0.8~1.2之间,不需要任何数据 最小最大缩放。你知道吗
然而,这种方法失败了,因为它没有得到很好的训练。
有没有更好的办法解决这个问题?你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐