Возникла проблема, когда модель DRO H2O рассматривает тип поля как int
, когда тип поля, который был установлен при обучении модели, был enum
.
При использовании API дерева H2O для изучения некоторых отдельных деревьев в обученной модели DRF, я вижу, что для некоторых типов, которые были явно установлены как enum
, когда модельбыл обучен (т. е. кадр данных pandas был преобразован в H2OFrame
, где для определенных полей был задан определенный тип с параметром карты column_types
), они выглядят как int
s при выполнении чего-то вроде
root_node.features
> observe that the feature being examined for this node is one of the features set to be categorical enum by the H2OFrame that the model was trained on
tree.root_node.features
> some_categorical
tree.root_node.levels
> []
root_node.threshold
> some number
Более компактно
print(tree.root_node)
Node ID 0
Left child node ID = 1 Right child node ID = 2
Splits on column some_categorical
Split threshold < 2562.5 to the left node, >= 2562.5 to the right node
NA values go to the LEFT
, но для других узлов (для той же модели) мы (правильно) видим
tree.root_node.features
> some_other_categorical
tree.root_node.levels
> ['cat1', ..., 'catn']
root_node.threshold
> na
Первоначально я думал, что это просто выглядит как int, потому что категориальные значения внутренне представлены в H2O
enum или Enum: Оставьте набор данных как есть, внутренне отобразить строки в целые числа , и используйте эти целые числа для разделения - либо через порядковый номер, когда nbins_cats слишком мало, чтобы разрешить все уровни, либо через наборы битов, которые делают идеальное групповое разделение.Каждая категория является отдельной категорией;его имя (или номер) не имеет значения.Например, после сопоставления строк с целыми числами для Enum можно разделить {0, 1, 2, 3, 4, 5} на {0, 4, 5} и {1, 2, 3}.
, но, глядя на тот факт, что информационный вывод показывает превышение порога и отсутствие уровней для определения направления влево-вправо, вы можете видеть, что здесь есть другая проблема.
Изучая карту column_types
, используемую при преобразовании панд в H2OFrame, и печатая типы, а также перед обучением модели, мы видим, что соответствующие типы устанавливаются как enum
, поэтому этот выводбыть увиденным сейчас сбивает с толку.Кто-нибудь знает какие-либо другие шаги по отладке, которые могут быть сделаны здесь или что может происходить?