Что делает функция суммирования данных GroupBy для h2o-данных при суммировании столбцов перечисления / категориального типа? - PullRequest
0 голосов
/ 02 апреля 2019

Хотите знать, что происходит при суммировании столбцов в объекте GroupBy кадра данных h2o, когда типы столбцов категориальны (в частности, типы h2o enum).

Преобразовать кадр данных pandas в кадр данных 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>

Хотелось бы знать, что здесь происходит под поверхностью при сложении категориальных значений столбцов вместе, и, кажется, не может найтиисходный код sum () для объектов GroupBy в h2o документах .

1 Ответ

0 голосов
/ 02 апреля 2019

Глядя на документы h2o для категориальных кодировок (http://docs.h2o.ai/h2o/latest-stable/h2o-docs/data-science/algo-params/categorical_encoding.html), для типов enum (что я использую для категориальных типов в моем кадре данных h2o), мы видим

enum или Enum: Оставьте набор данных как есть, внутренне сопоставьте строки с целые числа, и используйте эти целые числа для разделения - либо через порядковый номер природа, когда nbins_cats слишком мала, чтобы разрешить все уровни или через наборы битов, которые делают идеальное групповое разделение. Каждая категория является отдельной категория; его имя (или номер) не имеет значения . Например, после строки сопоставляются с целыми числами для Enum, вы можете разделить {0, 1, 2, 3, 4, 5} как {0, 4, 5} и {1, 2, 3}.

Так что, если я правильно интерпретирую это (и кто-то, пожалуйста, скажите, если это не так), то происходит то, что при преобразовании фрейма панд в h2o он проходит через различные значения для столбцов, назначенных как enum печатает и присваивает внутреннему уникальному целочисленному значению идентификатора этот ярлык (который используется в обучении и предсказаниях и тому подобное, но мы обычно просто не видим). Таким образом, выполняя df.group_by(.).sum(.) для этих enum столбцов, мы просто складываем все внутренне отображенные целочисленные значения для тех столбцов , которые были назначены h2o, когда кадр данных был преобразован в кадр данных h2o.

Опять же, если это не самая полная интерпретация того, что здесь происходит, кто-то, пожалуйста, дайте мне знать.

...