#python #machine-learning #scikit-learn
#python #scikit-learn #масштабирование
Вопрос:
Я понимаю, что масштабирование означает центрирование среднего значения (mean = 0) и создание дисперсии единицы измерения (variance = 1).
Но в чем разница между preprocessing.scale(x)
и preprocessing.StandardScalar()
в scikit-learn?
Ответ №1:
Они делают точно то же самое, но:
preprocessing.scale(x)
это просто функция, которая преобразует некоторые данныеpreprocessing.StandardScaler()
является ли класс, поддерживающий Transformer API
Я бы всегда использовал последнее, даже если бы мне не нужна была поддержка inverse_transform
и соавторов StandardScaler()
.
Выдержка из документов:
Функция scale предоставляет быстрый и простой способ выполнить эту операцию над одним массивоподобным набором данных
Модуль предварительной обработки дополнительно предоставляет служебный класс StandardScaler, который реализует Transformer API для вычисления среднего значения и стандартного отклонения в обучающем наборе, чтобы иметь возможность позже повторно применить то же преобразование к тестовому набору. Следовательно, этот класс подходит для использования на ранних этапах sklearn.pipeline.Конвейер
Ответ №2:
Я понимаю, что scale преобразует данные в диапазоне min-max данных, в то время как standardscaler преобразует данные в диапазоне [-1, 1].
Комментарии:
1. Пожалуйста, взгляните на уже принятый ответ. Это хорошее объяснение.
2. Неправильно. Они делают точно то же самое!