Scikit-learn: предварительная обработка.scale() против предварительной обработки.StandardScalar()

#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. Неправильно. Они делают точно то же самое!