В чем разница между sklearn LabelEncoder и pd.получить манекены?

Я хотел знать разницу между sklearn LabelEncoder против панд get_dummies. Почему бы выбрать LabelEncoder над get_dummies. В чем преимущество использования одного над другим? Недостатки?

насколько я понимаю, если у меня есть класс

ClassA = ["Apple", "Ball", "Cat"]
encoder = [1, 2, 3]

и

dummy = [001, 010, 100]

Я понимаю это неправильно?

2 ответов


это просто удобные функции, естественным образом попадающие в то, как эти две библиотеки, как правило, делают вещи, соответственно. Первый "конденсирует" информацию, изменяя вещи на целые числа, а второй "расширяет" размеры, позволяющие (возможно) более удобный доступ.


sklearn.preprocessing.LabelEncoder просто преобразует данные из любого домена, так что его домен 0, ..., k-1, где k - число занятия.

вот, например

["paris", "paris", "tokyo", "amsterdam"]

может стать

[0, 0, 1, 2]

pandas.get_dummies также принимает ряд с элементами из некоторого домена, но расширяет его в фрейм данных, столбцы которого соответствуют записям в Серии, А значения равны 0 или 1 в зависимости от того, что они изначально были. Так, например, то же самое

["paris", "paris", "tokyo", "amsterdam"]

станет фреймом данных с метками

["paris", "tokyo", "amsterdam"]

и чья "paris" запись будь серией

[1, 1, 0, 0]

главным преимуществом первого метода является то, что он сохраняет пространство. И наоборот, кодирование вещей как целых чисел может создать впечатление (для вас или для какого-то алгоритма машинного обучения), что порядок что-то значит. "Амстердам" ближе к "Токио", чем к" Парижу " только из-за целочисленной кодировки? скорее всего, нет. Второе представление немного яснее.


pandas.get_dummies - один-горячей кодировки, но sklearn.preprocessing.LabelEncoder - инкрементное кодирование, например 0,1,2,3,4,...

ОДН-горячее зашифрование более соответствующее для машинного обучения. Поскольку метки независимы друг от друга, например, 2 не означает в два раза больше значения 1.

Если набор тренировки и набор теста имеют различное количество классов для такой же особенности, то пожалуйста см. держите ту же фиктивную переменную в данных обучения и тестирования для двух решений.