对枚举/分类类型列求和时,h2o数据框GroupBy sum函数做什么?

时间:2019-04-02 00:30:23

标签: h2o

想知道当列类型为分类(特别是h2o enum类型)时,对h2o数据框GroupBy对象中的列求和时会发生什么。

已将熊猫数据帧转换为H2o数据帧。然后将行按某个列分组,然后对其他列求和,例如。

location_id  price store
------------------
1            10    JCP
1            15    SBUX
3            20    HOL

then after grouping and summing; df.group_by('location_id').sum(['price', 'store'])

location_id  price store
------------------
1            25    <some number>
3            20    <some number>

在将分类列值加在一起时,想知道这里表面下发生了什么,并且似乎无法在h2o docs中找到GroupBy对象的sum()源代码。

1 个答案:

答案 0 :(得分:0)

我们看到了h2o文档中的分类编码(http://docs.h2o.ai/h2o/latest-stable/h2o-docs/data-science/algo-params/categorical_encoding.html),enum类型(我在h2o数据框中使用的分类类型)

  

枚举或枚举:保留数据集不变,内部将字符串映射到   整数,并使用这些整数进行拆分-通过序数   nbins_cats太小而无法解析所有级别或通过   位组可以完美地进行分组拆分。每个类别都是单独的   类别; 其名称(或号码)无关。例如,   字符串被映射为Enum的整数,您可以拆分{0,1,2,3,4,   5}分别为{0,4,5}和{1,2,3}。

因此,如果我正确解释了这一点(有人请告诉我这是否不正确),那么发生的是,当将pandas框架转换为h2o时,它会通过指定为{ {1}}类型并为该标签分配内部唯一的ID整数值(用于训练和预测等,但通常看不到)。因此,当在这些enum列上进行df.group_by(.).sum(.)时,我们只是将数据帧转换为H2o时分配给这些列的所有内部映射的整数值 h2o数据框。

再次,如果这不是对这里发生的事情的最完整的解释,请让我知道。