Python NN的DNA数据输入,一个热编码

Python NN的DNA数据输入,一个热编码,python,pandas,scikit-learn,neural-network,artificial-intelligence,Python,Pandas,Scikit Learn,Neural Network,Artificial Intelligence,面对一个对我来说似乎是一项挑战性任务的问题。有一个巨大的DNA数据集,有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+ 我想询问有关数据处理的建议。它应该表示

面对一个对我来说似乎是一项挑战性任务的问题。有一个巨大的DNA数据集,有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,我想从简单到现代再深入。pandas、sklearn库用几行代码就可以轻松完成典型的数字表示,但对于如此庞大的数据集,将其转换为一种热编码似乎是一项有趣的任务。通过使用(101927041)形状的pd.get_假人,我们获得了(101954082),但无法理解为什么当我们有4个不同的字母时,形状只增加了2倍。谢谢大家!

增加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