【问题标题】:DNA data input for NN, one hot encodingNN的DNA数据输入,一种热编码
【发布时间】:2019-06-18 01:09:09
【问题描述】:

面对一个听起来对我来说具有挑战性的任务的问题。有一个巨大的 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?谈论神经网络——想从简单的开始到现代和深入。典型的数字表示很容易通过 pandas、sklearn 库在几行代码中完成,但对于如此庞大的数据集,将其转换为一种热编码似乎是一项有趣的任务。通过使用来自 (1019, 27041) 形状的 pd.get_dummies,我们获得了 (1019, 54082),并且无法理解为什么当我们有 4 个不同的字母时形状只增加了 2 倍。谢谢!

【问题讨论】:

    标签: python pandas scikit-learn neural-network artificial-intelligence


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2016-03-19
      • 2017-10-21
      • 2018-12-25
      • 2021-01-16
      • 2019-07-17
      • 2016-03-19
      • 1970-01-01
      • 1970-01-01
      • 2021-12-01
      相关资源
      最近更新 更多