Недавно я начал изучать 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: Input содержит NaN
Итак, я предполагаю, что мое предыдущее понимание неверно, как OneHotEncoder обрабатывает отсутствующие значения. Есть ли способ получить описанную выше функциональность? Я знаю, что вменение недостающих значений перед кодированием решит эту проблему, но я не хочу этого делать, поскольку имею дело с медицинскими данными и опасаюсь, что вменение может снизить точность прогнозов моей модели.
Я нашел этот вопрос , который похож, но ответ не предлагает достаточно подробного решения о том, как работать со значениями NaN.
Сообщите мне, какой у вас мысли есть, спасибо.