面对一个问题,这对我来说似乎是一项艰巨的任务。拥有庞大的具有A,G,T,C结构的DNA数据集,有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-希望从简单的一门手开始,再到现代的再深入。熊猫,sklearn库很容易以几行代码完成典型的数值表示,但是对于如此庞大的数据集,将其转换为一种热编码似乎是一项有趣的任务。通过使用(1019,27041)形状中的pd.get_dummies,我们获得(1019,54082),并且不明白为什么当我们有4个不同的字母时形状仅增加2倍。谢谢!
答案 0 :(得分:3)
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