Я пытаюсь сделать двоичную последовательность классификации класса учащегося на основе данных об активности из этого набора данных https://analyse.kmi.open.ac.uk/open_dataset.
Я объединил и очистил данные в этом фрейме данных.
Что есть для каждого из 29000+ учеников;
- Уникальный идентификатор [комбинированный_идентификатор]
- Номер недели (диапазон недель от -3 до 39) [неделя]
- Количество сделанных кликовс виртуальной онлайновой учебной средой в неделю [sum_click_week]
- Их окончательный результат, который равен 0 (Pass) или 1 (Withdrawn) [final_result]
Во-первых, я запутался в том, чтокак разделить значения x и y, как я должен сопоставлять их на основе идентификатора учащегося, например, для y данных будет: final_result, week и комбинированный_дек (таким образом, прогноз может быть сделан на каждой неделе), а для данных x - только исходныйфрейм данных с пропущенным столбцом final_result?
X = week_combi.drop(['final_result'], axis=1)
y = week_combi.drop(['sum_click_week'], axis=1)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33)
Во-вторых, нужно ли конвертировать фрейм данных в фрейм данных для каждого учащегося, так как это облегчит чтение LSTM?
НасколькоФорма ввода LSTM, я предполагаю, что количество образцов / размер партии я бы определил как количество студентов, на которых я хочу его обучать. Временные шаги будут 43, что соответствует количеству недель на одного учащегося. Элементами будет 1, который будет столбцом sum_click_week, или будет два / три, если я использую идентификатор и номер недели.
Так что моя модель будет выглядеть примерно так:
amount_of_students = 1000
weeks = 43
features = 1 #sum click week? or two?
model = Sequential()
model.add(LSTM(64, input_shape=(amount_of_students, weeks, features))
model.compile(loss = 'binary_crossentropy', optimizer = 'adam')
model.add(Dense(1, activation = 'relu'))
model.summary()
Многиеспасибо