Категорический кодер пропускает уровни - PullRequest
0 голосов
/ 03 июля 2018
import category_encoders as ce
ord_Ce = ce.ordinal.OrdinalEncoder()
ord_Ce.fit_transform(pd.DataFrame([2, np.nan, 3]).astype(object))

производит 2->1, np.nan->0, 3->3 кодировку. Почему он пропускает 2 при кодировании. Мне кажется, что кодировщик должен кодировать 3 как 2. Любой свет, почему это поведение?

1 Ответ

0 голосов
/ 03 июля 2018

Сканирование исходного кода показывает, что в функции ordinal_encoding перечисляются номера категорий (всего 3 категории, начиная с 1), и эти цифры также используются для кодирования

categories_dict = {x: i + 1 for i, x in enumerate(categories)}
X[str(col) + '_tmp'] = X[col].map(lambda x: categories_dict.get(x))

впоследствии пропущенные значения вменяются в 0.

Подводя итог: np.nan имеет категорию 2, которая преобразуется в 0 на этапе постобработки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...