Я работаю с очень простым набором данных. У него есть некоторые пропущенные значения, как в категориальных, так и в числовых функциях c. Из-за этого я пытаюсь использовать sklearn.preprocessing.KNNImpute, чтобы получить максимально точное вменение. Однако, когда я запускаю следующий код:
imputer = KNNImputer(n_neighbors=120)
imputer.fit_transform(x_train)
, я получаю сообщение об ошибке: ValueError: could not convert string to float: 'Private'
Это имеет смысл, очевидно, он не может обрабатывать категориальные данные. Но когда я пытаюсь запустить OneHotEncoder с помощью:
encoder = OneHotEncoder(drop="first")
encoder.fit_transform(x_train[categorical_features])
, выдается ошибка: ValueError: Input contains NaN
Я бы предпочел использовать KNNImpute
даже с категориальными данными, как мне кажется Я бы потерял некоторую точность, если бы просто использовал ColumnTransform
и вменял числовые c и категориальные данные отдельно. Есть ли способ заставить OneHotEncoder
игнорировать эти пропущенные значения? Если нет, может ли использовать ColumnTransform
или более простой импьютер для решения этой проблемы?
Заранее спасибо