У меня есть 14 последовательностей из 72 временных шагов и 11 функций.6 из них классифицируются как «0», а 8 из них как «1».Я хотел бы обучить LSTM, способный классифицировать новую последовательность на «1» или «0».
У меня была идея сделать это: сделать каждый второй шаг, чтобы удвоить количество последовательностей.Я не знаю, является ли это жизнеспособной идеей, но, поскольку у меня большое количество временных шагов, я подумал, что это может сработать.
Проблема в том, что я не знаю, разрешено ли мнесделать это, и последствия для точности LSTM.
Просто знайте, что временной шаг - это одна из функций, а другая - это статистика, которую я вычислил на предыдущем шаге.Вот мой код:
##------------------CONSTANTS----------------------------
timesteps=72
n_series=14 #number of sequences
##------------------READ DATASET-------------------------
df = pd.read_excel (r'E:\Istem\Deux\Split12.xlsx',nrows=n_series*timesteps)
X=np.asarray([df.iloc[72*i:72*(i+1),[1,5,6,7,8,9,11,12,13,14,15]].values for i in range(split*n_series)])
Y=[0,1,0,0,0,0,0,1,1,1,1,1,1,1]
#------------------DIVIDE SEQUENCE----------------------
div=2
newX=np.asarray([X[i][j::div] for j in range(div) for i in range(len(X))])
newY=np.repeat(Y,div)
X_train, X_test, y_train, y_test = sk.train_test_split(newX,newY,test_size=0.1)
#------------------CREATE MODEL-------------------------
model = Sequential()
model.add(LSTM(100, input_shape=(int(timesteps/div),11), return_sequences=False))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
print(model.summary())
model.fit(X_train, y_train, epochs=4, batch_size=8, validation_split=0.2, verbose=1)
#------------------EVALUATE MODEL-----------------------
scores = model.evaluate(X_test, y_test, verbose=0)
print("Accuracy: %.2f%%" % (scores[1]*100))
На данный момент моя точность составляет от 50 до 60%.Я пытался изменить размер пакета, количество эпох, размер LSTM, количество делений по временным шагам ... Но это не сильно изменилось.Еще большее беспокойство вызывает то, что точность не лучше, если я оцениваю свою модель на тренировочном наборе, поэтому что-то определенно не так.
Это первый LSTM, который я пытаюсь реализовать, поэтому я был бы очень признателен, еслиВы могли бы помочь мне.