我是机器学习的新手。最近,我试图使用历史价格数据和情感价值来训练LSTM模型,以预测未来的比特币价格。我搜索了许多LSTM示例,但它们仅使用价格来预测价格。
由于我假设时间(t)的价格将受到之前51小时价格的影响,所以我编写了一个def并根据每小时的比特币收盘价来训练模型:
def create_dataset(dataset, look_back):
dataX, dataY = [], []
for i in range(len(dataset) - look_back):
a = dataset[i:(i + look_back), 0]
dataX.append(a)
dataY.append(dataset[i + look_back, 0])
print(len(dataY))
return np.array(dataX), np.array(dataY)
look_back = 51
trainX, trainY = create_dataset(train, look_back=look_back)
testX, testY = create_dataset(test, look_back=look_back)
#Reshape X for model training
trainX = np.reshape(trainX, (trainX.shape[0], 1, trainX.shape[1]))
testX = np.reshape(testX, (testX.shape[0], 1, testX.shape[1]))
model = Sequential()
model.add(LSTM(128, input_shape=(trainX.shape[1], trainX.shape[2])))
model.add(Dense(1))
model.compile(loss='mae', optimizer='adam')
history = model.fit(trainX, trainY, epochs=300, batch_size=100, validation_data=(testX, testY), verbose=0, shuffle=False)
但是,我不知道如何在模型中添加一个以上的属性(情感)。
出于情感考虑,我使用的API会给我五个分数,每个分数代表一种特定情感的价值。我的第一个想法是将价格表和情感表组合成一个向量,并将其作为输入。但是由于价格和情绪是两回事,所以我不确定这是否合理。还是应该再增加一层:model.add (sentiment)
?但是,如果这样做,它将有2个trainX。
Average_Anger Average_Joy Average_Sadness Average_Fear Average_Disgust
990 0.015561 0.017274 0.011605 0.014695 0.013854
989 0.015959 0.017144 0.011845 0.014390 0.013856
988 0.015181 0.017887 0.011130 0.013382 0.012693
987 0.014130 0.018764 0.009678 0.011879 0.011242