Получить функции log (n, 2) после фиктивной кодировки - PullRequest
0 голосов
/ 16 марта 2020

Во время фиктивного кодирования (например, OneHotEncoder) мы можем удалить первую функцию (с параметром: drop = 'first'). Это помогает, когда у нас есть 3 функции. Это работает, потому что достаточно иметь 2 ячейки для кодирования 3 функций, таких как: (0, 0), (0, 1), (1, 0); также для 4 функций: (0, 0), (0, 1), (1, 0), (1, 1). Итак, я заметил, что для кодирования n-категорий достаточно иметь функции math.ceil (log (n, 2)). Но я не могу найти функцию (в sklearn / pandas), которая позволяет это сделать. Прошу вашей помощи.

1 Ответ

0 голосов
/ 17 марта 2020

То, что вы ищете, это bin() функция, которая является стандартной встроенной в Python.

Предположим, у вас есть простой pandas df:

df = pd.DataFrame({"a":["a","b","c","x","a","c"]})
print(df)
   a
0  a
1  b
2  c
3  x
4  a
5  c

Тогда вы можете действовать следующим образом:

df["enc"] = df["a"].astype("category").cat.codes
max_enc_length = len(bin(df["enc"].max())[2:])
df["enc"]=df["enc"].apply(lambda x: bin(x)[2:].zfill(max_enc_length))
df = pd.concat([df["a"], df["enc"].apply(lambda x: pd.Series(list(x)))], axis=1)
print(df)
   a  0  1
0  a  0  0
1  b  0  1
2  c  1  0
3  x  1  1
4  a  0  0
5  c  1  0

Обратите внимание, линейные модели для такого типа кодирования отсутствуют.

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