sklearn StandardScaler, не разрешает прямое преобразование, нам нужно fit_transform

В чем разница между fit_transform и transform? Почему трансформация не работает напрямую?

from sklearn.preprocessing import StandardScaler

 X_scaler = StandardScaler()
 X_train = X_scaler.fit_transform(X_train)
 X_test = X_scaler.transform(X_test)

Если непосредственно преобразовано, это дает ошибку ниже

NotFitedError: Этот экземпляр StandardScaler еще не установлен. Вызовите "fit" с соответствующими аргументами перед использованием этого метода.

1 ответ

Решение

StandardScaler согласно документации:

Стандартизируйте функции, удаляя среднее значение и масштабируя до дисперсии единиц

Так что сначала нужно как-то узнать о значении и дисперсии ваших данных. Так fit() или же fit_transform() нужен так, чтобы StandardScaler может пройти через все ваши данные, чтобы найти среднее значение и дисперсию. К ним можно получить доступ по атрибутам:

mean_: среднее значение для каждой функции (столбца) в обучающем наборе.

var_: дисперсия для каждого объекта в обучающем наборе.

Обратите внимание, что они будут рассчитываться отдельно для каждого столбца данных.

В transform()будет просто использовать те mean а также variance значения для масштабирования данных.

Теперь вы можете сказать, почему просто не рассчитывать эти атрибуты во время transform(), Это делается для того, чтобы тестовые данные масштабировались так же, как и тренировочные данные (из fit_transform()). Если вы рассчитываете среднее значение и дисперсию данных в каждом вызове transform()тогда все передаваемые данные будут иметь разный масштаб, а это не то, что вам нужно.

Это верно для всех трансформаторов Scikit.

1) fit() - будет только просматривать данные и сохранять все необходимые атрибуты данных

2) transform() - Используйте сохраненные атрибуты из fit() изменить данные

3) fit_transform() - функция полезности для fit() а потом transform() одни и те же данные.

Обычно вы звоните fit_transform() на тренировочных данных, и только transform() по данным испытаний.

Другие вопросы по тегам