В чем разница между 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.
Если набор тренировки и набор теста имеют различное количество классов для такой же особенности, то пожалуйста см. держите ту же фиктивную переменную в данных обучения и тестирования для двух решений.