Как нормализовать только ненулевые значения в определенных колонках в StandardScaler?
Как нормализовать только ненулевые значения в определенных колонках?
Мой код:
# set params for normalization
COLUMNS_TO_NORMALIZE = ['a', 'b', 'c']
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
# get index of null values
null_values = X_train[COLUMNS_TO_NORMALIZE].isnull()
# perform standard scalar on only non-NaN values
X_train[COLUMNS_TO_NORMALIZE][~null_values] = sc.fit_transform(X_train[COLUMNS_TO_NORMALIZE][~null_values])
Не меняет значения, а возвращает те же, что и были.
Ответы (1 шт):
Автор решения: MaxU
→ Ссылка
попробуйте так:
mask = X_train[COLUMNS_TO_NORMALIZE].isna().any(axis=1)
vals = X_train.loc[~mask, COLUMNS_TO_NORMALIZE]
X_train.loc[~mask, COLUMNS_TO_NORMALIZE] = \
pd.DataFrame(sc.fit_transform(vals),
index=vals.index,
columns=COLUMNS_TO_NORMALIZE)