Как обучить модель 2D-объектам различной длины?

#python #machine-learning #scikit-learn #data-science #bioinformatics

Вопрос:

У меня есть набор данных строк символов. Каждый символ имеет свой собственный вектор признаков длиной 22.

Так, например:

Строка 1: LAAGVGNIYADEALFR

Строка 2: APVSFLLESVER

Каждый символ в каждой строке имеет следующий вектор признаков.

 AA                 M
SS3                C
SS8                C
ASA          178.972
HseU          4.5287
HseD         7.80071
CN           13.7988
Psi          147.413
Phi         -91.9785
Theta         114.81
Tau          175.495
P3C         0.999991
P3E      7.52701e-06
P3H      1.92849e-06
P8C         0.999994
P8S      3.92237e-09
P8T      1.08177e-06
P8H      4.76341e-07
P8G      1.01462e-07
P8I      8.74657e-20
P8E      4.67836e-06
P8B      6.26615e-08
Name: 0, dtype: object
 

Векторы признаков для всех символов имеют одинаковую длину, но количество символов в каждой строке разное.

Таким образом, каждая строка имеет таблицу функций (n x 22), где n-количество символов.

С каждой строкой связано одно целевое значение, которое я пытаюсь обучить модели для прогнозирования.

Также важно отметить, что одни и те же символы не имеют одинаковых значений функций, так как значения относятся к положению символа в строке.

Как я могу представить эти таблицы разных размеров в виде векторов одинакового размера, чтобы подготовить эти данные для обучения?

Я использую python.

Ответ №1:

Вы можете использовать нулевые отступы. Добавьте нулевые подушечки к обоим концам последовательности, пока она не достигнет указанной максимальной длины.
Если вы используете PyTorch, используйте torch.nn.utils.rnn.pad_sequence. Если Tensorflow, используйте tf.keras.предварительная обработка.последовательность.pad_sequences.