У меня есть 3D Scaler (образцы, строки, столбцы), к которому я хотел бы применить StandardScaler. Поскольку это 3D, я планировал использовать это:
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train.reshape(-1, X_train.shape[-1])).reshape(X_train.shape)
X_test = scaler.transform(X_test.reshape(-1, X_test.shape[-1])).reshape(X_test.shape)
Проблема в том, что строки дополнены специальными значениями (-100), и применение скаляра к данным как есть было бы неверным, поскольку дополненные значения влияют на масштабирование. Есть ли способ опустить значения?
Вы можете преобразовать -100
в np.NaN
и игнорировать NaN.
Насколько я знаю, StandardScaler()
не может игнорировать NaN.
Поскольку это простое масштабирование (x-mean)/std
, вы можете сделать это самостоятельно с помощью np.nanmean()
и np.nanstd()
.
Затем вы можете вернуть NaN к -100.
Однако примите во внимание, что это -100 повлияет на остальную часть вашего конвейера вычислений (я думаю, у вас что-то есть после масштабирования), поэтому вам все равно нужно это разрешить.