Есть ли способ для Scikit-learn Imputer искать и заменять несколько значений, которые считаются «недостающими значениями»?
Например, я хотел бы сделать что-то вроде
imp = Imputer(missing_values=(7,8,9))
Но согласно документации параметр missing_values принимает только одно целое число:
missing_values : integer or “NaN”, optional (default=”NaN”)
The placeholder for the missing values. All occurrences of missing_values will be imputed. For missing values encoded as np.nan, use the string value “NaN”.






Почему бы не сделать это вручную в исходном наборе данных? Предполагая, что вы используете pd.DataFrame, вы можете сделать следующее:
import numpy as np
import pandas as pd
from sklearn.preprocessing import Imputer
df = pd.DataFrame({'A': [1, 2, 3, 8], 'B': [1, 2, 5, 3]})
df_new = df.replace([1, 2], np.nan)
df_imp = Imputer().fit_transform(df_new)
Это приводит к df_imp:
array([[ 5.5, 4. ],
[ 5.5, 4. ],
[ 3. , 5. ],
[ 8. , 3. ]])
Если вы хотите сделать это частью конвейера, вам просто нужно реализовать собственный преобразователь с аналогичной логикой.
Посмотрел документацию для replace (). Он также принимает регулярное выражение, поэтому даже если в вашем примере была другая переменная «C», которую я не хочу изменять, это можно сделать. Спасибо
Сначала замените все значения, которые вы хотите присвоить Нан, как указано в ответе ниже.