У меня есть код для импорта набора данных, который состоит из 500 000 строк ДНК длиной 100 п.н.Я пытаюсь одним горячим закодировать строки в 2-D матрицу.Код работает и кодирует небольшое подмножество всего набора данных, состоящего из 999 строк, однако он не будет кодировать полный набор данных.Я уверен, что все струны имеют одинаковую форму.
Я убедился, что набор данных состоит из однородных последовательностей по 100 п.н., не более и не менее.Я также удалил все последовательности, которые не содержат «A», «G», «C» или «T».Код работает для небольших подмножеств данных, но не будет кодировать весь набор данных, несмотря на то, что он имеет одинаковую форму.
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
integer_encoder = LabelEncoder()
one_hot_encoder = OneHotEncoder(categories='auto')
input_features = []
for sequence in sequences:
integer_encoded = integer_encoder.fit_transform(list(sequence))
integer_encoded = np.array(integer_encoded).reshape(-1, 1)
one_hot_encoded = one_hot_encoder.fit_transform(integer_encoded)
input_features.append(one_hot_encoded.toarray())
np.set_printoptions(threshold=40)
input_features = np.stack(input_features)
Код при работе с небольшим набором данных из 999 строк даст мне этот вывод:
One hot encoding of Sequence #1:
[[1. 1. 0. ... 1. 0. 1.]
[0. 0. 0. ... 0. 0. 0.]
[0. 0. 1. ... 0. 0. 0.]
[0. 0. 0. ... 0. 1. 0.]]
Однако, когда я пробую полный набор данных, он выдает эту ошибку:
ValueError: all input arrays must have the same shape