Применение OneHotEncoding к категориальным данным с пропущенными значениями - PullRequest
0 голосов
/ 05 августа 2020

Я хочу OneHotEncode pd.DataFrame с пропущенными значениями. Когда я пытаюсь выполнить OneHotEncode, он выдает ошибку, касающуюся отсутствующих значений.

ValueError: Input содержит NaN

Когда я пытаюсь использовать SimpleImputer для исправления отсутствующих значений, он выдает ошибку относительно категориальных данных

ValueError: невозможно использовать среднюю стратегию с нечисловыми c данными: не удалось преобразовать строку в float: 'RH'

Я не могу применить OneHotEncoding из-за отсутствующих значений и SimpleImputer из-за категориальных данных. Есть ли способ обойти это, кроме отбрасывания столбцов или строк?

1 Ответ

1 голос
/ 05 августа 2020

Вы можете использовать любой из двух нижеприведенных методов для исключения категориальных значений NaN -

Вариант 1: Замените отсутствующие значения наиболее часто встречающейся категорией. Например, если у вас есть столбец со значениями 51%, принадлежащими одной категории, используйте приведенный ниже код для заполнения отсутствующих значений этой категории

df['col_name'].fillna('most_frequent_category',inplace=True)

Вариант 2: Если вы этого не сделаете t wi sh для вменения отсутствующих значений в наиболее часто встречающуюся категорию, тогда вы можете создать новую категорию под названием «Другое» (или аналогичную нейтральную категорию, относящуюся к вашей переменной)

df['col_name'].fillna('Other',inplace=True)

Оба эти метода будут вменять ваши отсутствуют категориальные значения, и тогда вы сможете их кодировать в OneHotEncode.

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