Ввод данных ДНК для NN, одно горячее кодирование - PullRequest
0 голосов
/ 24 января 2019

Столкнулся с проблемой, которая звучит как сложная задача для меня. Имейте огромный набор данных ДНК со структурой A, G, T, C, 4 входных данных абсолютно разных категорий. Похоже:

1 2 3 4 5 6 7 8 9 … 1.000+
A A G G G G G G G
G G C C C C C C C
T T C C C C C C C
G G A A A A A A A
T T C C C C C C C
C C T T T T T T T
T T C C C C C C C
…
30.000+

Хотелось бы спросить о совете по обработке данных. Должно ли оно быть представлено в виде числового или одного горячего кодирования с такой огромной размерностью? Вид [0,0,0,1] как A, [0,0,1,0] как G и т. Д., Или просто 0, 1, 2, 3? Говоря о NN - хотелось бы начать с простого, современного и более глубокого. Типичное числовое представление легко выполняется пандами, склеарными библиотеками в несколько строк кода, но преобразование его в одно горячее кодирование для такого огромного набора данных выглядит интересной задачей. Используя pd.get_dummies из формы (1019, 27041), мы получаем (1019, 54082) и не можем понять, почему форма увеличилась только в 2 раза, когда у нас есть 4 разные буквы. Спасибо!

1 Ответ

0 голосов
/ 24 января 2019

2-кратное увеличение вместо 4-кратного увеличения связано с тем, что у вас есть только 2 категории в каждой серии.(В вашем примере A и G в первом ряду, G и C во втором, T и C в третьем и т. Д.)

Приведенный ниже пример поможет лучше понять количество дополнительных столбцов

In [38]: df = pd.DataFrame({'A': ['a', 'b', 'a'], 'B': ['b', 'a', 'c'], 'C': [1, 2, 3]})                                                                       

In [39]: df                                                                                                                                                    
Out[39]: 
   A  B  C
0  a  b  1
1  b  a  2
2  a  c  3

In [40]: pd.get_dummies(df)                                                                                                                                    
Out[40]: 
   C  A_a  A_b  B_a  B_b  B_c
0  1    1    0    0    1    0
1  2    0    1    1    0    0
2  3    1    0    0    0    1


...