Я новичок в машинном обучении. В последнее время я пытаюсь использовать исторические ценовые данные и значение настроения для обучения модели LSTM для прогнозирования будущей цены биткойнов. Я искал много примеров LSTM, но они только используют цену, чтобы предсказать цену.
Поскольку я предполагаю, что на цену времени (t) будет влиять предыдущее значение цены за 51 час, я пишу определение и обучаю модель, основываясь на биткойнах за каждый час Цена закрытия:
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