KNNImputer (Python) — проблема с «nan» ⇐ Python

Программы на Python
Anonymous
KNNImputer (Python) — проблема с «nan»

Сообщение Anonymous »

У меня возникла проблема, когда я использую KNNImputer для замены отсутствующих значений «NaN» категориальной переменной. Другие переменные, кроме Nutrition_score_fr, не имеют значения NaN. Только Nutrition_scrore_fr содержит 8% пропущенных значений.
Когда я передаю этот код, «нан» не заменяется. Я просто получаю строку «nan» вместо значений a, b, c, d или e переменной Nutrition_score_fr.
Почему KNNImputer не заменяет NaN?
Вот код:

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

# Convertir les catégories en entiers
label_encoder = LabelEncoder()
df['nutrition_grade_fr_encoded'] = label_encoder.fit_transform(df['nutrition_grade_fr'].astype(str))

# Inclure toutes les colonnes dans l'imputation, y compris les colonnes numériques et  'nutrition_grade_fr_encoded'
columns_to_impute = ['energy_100g', 'proteins_100g', 'fat_100g', 'carbohydrates_100g', 'salt_100g', 'sugars_100g', 'saturated-fat_100g', 'nutrition_grade_fr_encoded']

# Imputation avec KNN
imputer = KNNImputer(n_neighbors=5)

# Imputation des valeurs manquantes en utilisant toutes les colonnes spécifiées
df_imputed = imputer.fit_transform(df[columns_to_impute])

# Convertir le résultat en DataFrame avec les mêmes colonnes
df_imputed = pd.DataFrame(df_imputed, columns=columns_to_impute).reset_index(drop=True)

# Reconversion de 'nutrition_grade_fr_encoded' en catégories
df_imputed['nutrition_grade_fr'] =    label_encoder.inverse_transform(df_imputed['nutrition_grade_fr_encoded'].round().astype(int))

# 3. Réintégrer les colonnes imputées dans le DataFrame original
df.reset_index(drop=True, inplace=True)
df['nutrition_grade_fr'] = df_imputed['nutrition_grade_fr']
Я просто получаю строку «nan» вместо значений a, b, c, d или e переменной Nutrition_score_fr.

Подробнее здесь: https://stackoverflow.com/questions/790 ... th-the-nan

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