Python sklearn onehotencoder - PullRequest
       28

Python sklearn onehotencoder

0 голосов
/ 28 декабря 2018

Я пытаюсь закодировать категориальные данные для четвертой функции моего вектора, которая находится в массиве.Категории: «4» или «6».Я могу изменить их в двоичную, используя это:

 features_in_training_set = [[0 0 0 0 4], [0 0 0 0 4], [0 0 0 0 6],[0 0 0 0 4],[0 0 0 0 6]]

 features_in_training_set[:,4] = LabelEncoder().fit_transform(features_in_training_set[:,4]) 

Но, конечно, мне нужно изменить это так, чтобы классификатор не думал, что «4» больше, чем «6».Однако, когда я запускаю следующее:

onehotencoder = OneHotEncoder(categorical_features=[4], handle_unknown='ignore')

features_in_training_set = onehotencoder.fit_transform(features_in_training_set).toarray()

Я получаю сообщение об ошибке:

TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType'

TypeError: Wrong type for parameter `n_values`. Expected 'auto', int or array of ints, got <class 'numpy.ndarray'>

Я проверил, есть ли у меня пропущенные значения или какие-либо строки, и я получаю«т.Все функции являются целыми числами.

Спасибо.

1 Ответ

0 голосов
/ 28 декабря 2018

Текущий OneHotEncoder в scikit-learn (> 0,20) может сам обрабатывать строки или другие категориальные функции, не требуя сначала использовать LabelEncoder для кодирования категорий в числа (или различных чисел в уникальные отсортированные числа, как вы это делали).

Эта ошибка - ошибка в OneHotEncoder, так как она развивалась для обработки вышеуказанного случая, и в то же время должна поддерживать старые варианты использования в качестве вашего вопроса.Добавление n_values='auto' в код удалит эту ошибку следующим образом:

onehotencoder = OneHotEncoder(categorical_features=[4], n_values='auto', 
                              handle_unknown='ignore')

Если вы удалите параметр handle_unknown из своего кода, то это тоже работает, но этого не следует делать.

См. Эту проблему здесь:

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