如何使用pandas或tensorflow进行单热编码类别功能?

时间:2017-04-27 08:55:46

标签: python pandas tensorflow

数据是这样的:

   features1    features2       labels
1      1            563           1
2      1            254           1
3   missing         145           1
4      0            126           1
5      0            145           0
6      1            124           0
7      0            456           0

我将把这些数据应用到Tensorflow培训过程中,所以我想对feature1的值进行一次热编码。

上述数据的矩阵是:

[[1,563,1],
 [2,254,1],
 [missing,145,1],
 [0,126,1],
 [0,145,0],
 [1,124,0],
 [0,456,0]]

所以我认为它可以是一个热门编码:

> [1,0,0] represents 1 
> [0,1,0] represents 0
> [0,0,1] represents 'missing'

我想要的输出就像:

[[1,0,0,563,1],
 [1,0,0,254,1],
 [0,0,1,145,1],
 [0,1,0,126,1],
 [0,1,0,145,0],
 [1,0,0,124,0],
 [0,1,0,456,0]]

我已经尝试了pd.get_dummies.But我无法成功。

1 个答案:

答案 0 :(得分:0)

我不确定您是如何使用pd.get_dummies的,但请注意,此函数会为您生成一个新的数据框或数组,因此如果您想将1个热编码应用于数组中的第1列并保持在其他列中,您需要像这样重新分配您的数组:

newArrayWithOneHotEncoding = pd.get_dummies(arrayThatYouWantToTransform, columns = ['firstColumnHeader'])

更新 我忘了提到你需要为丢失设置一个不同的值,例如-1,然后以这种方式应用一个Hot Encoding,你将有三个新列