Size: a a a

2019 January 22

AD

Anna Veronika Dorogush in catboost_ru
Oleg Okeev
В общем Стоит ли вручную обрабатывать все пропуски или Catboost их обработает?
в таргете наны не разрешены, в фичах разрешены
источник

YB

Yury B in catboost_ru
Oscar Tempter
на все события в которых играет роль случайность, зафиксировав определенный random seed вы гарантируете одинаковую работу алгоритма везде где зафиксирован такой же random seed при прочих равных
спасибо
источник

AD

Anna Veronika Dorogush in catboost_ru
Anna Veronika Dorogush
в таргете наны не разрешены, в фичах разрешены
про обработку нанов можно вот тут прочитать: https://tech.yandex.com/catboost/doc/dg/concepts/python-reference_parameters-list-docpage/ в описании параметра nan_mode
источник

OO

Oleg Okeev in catboost_ru
Anna Veronika Dorogush
в таргете наны не разрешены, в фичах разрешены
А если не Nan, а Null?
И можно подробное что будет с колонкой, где часть NaN/Null? По ней будет делаться предсказание ?
источник

AD

Anna Veronika Dorogush in catboost_ru
нуллы и наны одинаково обрабатываются
источник

AD

Anna Veronika Dorogush in catboost_ru
Они будут преобразованы в число меньше, чем все значения фичи, либо больше, чем все значения фичи, так, чтобы наны гарантированно попадали в отдельный от всех остальных значений бакет при квантизации, которая перед обучением происходит.
источник

AD

Anna Veronika Dorogush in catboost_ru
А для катфичей наны считаются отдельной категорией
источник

AD

Anna Veronika Dorogush in catboost_ru
То есть да, колонка будет использоваться в том числе при наличии нанов.
источник

MK

Maxim Khrisanfov in catboost_ru
Anna Veronika Dorogush
Они будут преобразованы в число меньше, чем все значения фичи, либо больше, чем все значения фичи, так, чтобы наны гарантированно попадали в отдельный от всех остальных значений бакет при квантизации, которая перед обучением происходит.
Что-то глядя на документацию это не очевидно.

“Min” — Each NaN float feature is processed as the minimum value from the dataset.
“Max” — Each NaN float feature is processed as the maximum value from the dataset.

Я предполагал что CatBoost берет минимальное значение и присваивает его всем NaN, поэтому вручную ставил что-то типа -999.

Если это работает так как вы сказали, то буду использовать. Думаю стоит в документации это пояснить.
источник

MK

Maxim Khrisanfov in catboost_ru
Anna Veronika Dorogush
А для катфичей наны считаются отдельной категорией
Попробовал как это работает получил ошибку:

CatboostError: Invalid type for cat_feature[0,1]=nan : cat_features must be integer or string, real number values and NaN values should be converted to string.

Раньше вручную конвертировал в строку 'none'
источник

MK

Maxim Khrisanfov in catboost_ru
это шибка при создании пула Pool(x, y, cat_features=....)
источник

AD

Anna Veronika Dorogush in catboost_ru
Maxim Khrisanfov
Что-то глядя на документацию это не очевидно.

“Min” — Each NaN float feature is processed as the minimum value from the dataset.
“Max” — Each NaN float feature is processed as the maximum value from the dataset.

Я предполагал что CatBoost берет минимальное значение и присваивает его всем NaN, поэтому вручную ставил что-то типа -999.

Если это работает так как вы сказали, то буду использовать. Думаю стоит в документации это пояснить.
Спасибо за фидбек, пофиксим!
источник

AD

Anna Veronika Dorogush in catboost_ru
строкой можно, а так нельзя
источник

AD

Anna Veronika Dorogush in catboost_ru
есть issue по этому поводу, там объяснено, почему так
источник

AD

Anna Veronika Dorogush in catboost_ru
сейчас найду
источник

AD

Anna Veronika Dorogush in catboost_ru
источник

MK

Maxim Khrisanfov in catboost_ru
ok, спасибо буду изучать)
источник

MK

Maxim Khrisanfov in catboost_ru
Как получить оригинальные названия классов таргета? Заметил что model.classes_ пустой после загрузки модели из файла (load_model), это баг или есть какой-то другой способ получить классы?
источник

AD

Anna Veronika Dorogush in catboost_ru
Не реализовывали пока что model.classes_, добавим
источник

MK

Maxim Khrisanfov in catboost_ru
пока такое решение нашел
json.loads(model.get_metadata()['multiclass_params'])['class_names']

может кому пригодится
источник