#python #tensorflow #keras #time-series #lstm
Вопрос:
Я пытаюсь подогнать простую модель LSTM для выполнения двоичной классификации данных многомерных временных рядов. Меня смущают этапы подготовки данных временных рядов для ввода в модель. Большинство онлайн-материалов касалось подготовки данных для прогнозирования(задача регрессии) с использованием LSTM. В моем случае я пытаюсь подготовить данные для классификации с помощью LSTM. Как убедиться, что я не нарушаю временную последовательность и баланс классов при выполнении разделения на обучение и тестирование? Мои классовые ярлыки сильно несбалансированы. Верен ли мой код для классификации LSTM? Я ценю ваше время. Спасибо!
Примеры данных:
sequence_length = 10
def generate_data(X, y, sequence_length = 10, step = 1):
X_local = []
y_local = []
for start in range(0, len(data) - sequence_length, step):
end = start sequence_length
X_local.append(X[start:end])
y_local.append(y[end-1])
return np.array(X_local), np.array(y_local)
X_sequence, y = generate_data(data.loc[:, "V1":"V4"].values, data.Class)
Форма последовательности:
X_sequence.shape, y.shape
((12237889, 10, 4), (12237889,))
Разделение данных обучения и тестирования:
training_size = int(len(X_sequence) * 0.7)
X_train, y_train = X_sequence[:training_size], y[:training_size]
X_test, y_test = X_sequence[training_size:], y[training_size:]
Форма данных обучения и тестирования:
X_train.shape, X_test.shape
((8566522, 10, 4), (3671367, 10, 4))
y_train.shape, y_test.shape
((8566522,), (3671367,))
Комментарии:
1. Поскольку у вас дисбаланс высокого класса, то, как вы разделяете свои данные, вполне возможно, что все ваши наблюдения из низкого класса окажутся только в одном наборе, т. е. либо в обучении/тестировании, и у вас нет никаких наблюдений этого класса в другом наборе. Во-первых, вам нужно убедиться, что 70 процентов каждого класса находится в поезде, а 30 процентов каждого класса-в тестовых данных.
2. Во-вторых, вы должны сделать 3D-ввод каждого класса отдельно. Затем выделите 70% и 30% этого класса, чтобы создать обучающие и тестовые наборы для этого класса. Наконец, объедините тренировочные и тестовые наборы всех классов, чтобы создать свои окончательные тренировочные и тестовые наборы.
3. @Muhammadhassan У меня было такое же чувство, но как я могу это сделать? Я не нашел ни одного учебного пособия, в котором обсуждалась бы эта проблема.