Как обрабатывать пропущенные значения (NaN) в категориальных данных при использовании scikit-learn OneHotEncoder?Python

Программы на Python
Ответить
Anonymous
 Как обрабатывать пропущенные значения (NaN) в категориальных данных при использовании scikit-learn OneHotEncoder?

Сообщение Anonymous »

Недавно я начал изучать Python, чтобы разработать прогнозирующую модель для исследовательского проекта с использованием методов машинного обучения. У меня есть большой набор данных, состоящий как из числовых, так и из категориальных данных. В наборе данных много пропущенных значений. В настоящее время я пытаюсь закодировать категориальные функции с помощью OneHotEncoder. Когда я прочитал об OneHotEncoder, я понял, что в случае отсутствующего значения (NaN) OneHotEncoder присваивает 0 всем категориям функции как таковым:

Код: Выделить всё

0     Male
1     Female
2     NaN
После применения OneHotEncoder:

Код: Выделить всё

0     10
1     01
2     00
Однако при запуске следующего кода:

Код: Выделить всё

    # Encoding categorical data
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder

ct = ColumnTransformer([('encoder', OneHotEncoder(handle_unknown='ignore'), [1])],
remainder='passthrough')
obj_df = np.array(ct.fit_transform(obj_df))
print(obj_df)

Я получаю сообщение об ошибке ValueError: входные данные содержат NaN

Поэтому я предполагаю, что мое предыдущее понимание того, как OneHotEncoder обрабатывает пропущенные значения, неверно.
Можно ли мне получить описанную выше функциональность? Я знаю, что вменение пропущенных значений перед кодированием решит эту проблему, но я не хочу этого делать, поскольку имею дело с медицинскими данными и опасаюсь, что вменение может снизить точность прогнозирования моей модели.

Я нашел похожий вопрос, но ответ не предлагает достаточно подробного решения о том, как обращаться со значениями NaN.

Дайте мне знать, что вы думаете, спасибо.>

Подробнее здесь: https://stackoverflow.com/questions/624 ... it-learn-o
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»