Как масштабировать тестовый набор на основе среднего и стандартного из набора поездов в python?

Я прочитал ответ, объясняющий Почему функция масштабируется только до тренировочного набора? и ответ говорит: стандартизировать любой тестовый набор, используя средние значения обучающего набора и стандартные отклонения.

Поэтому пытаюсь исправить свою предыдущую некорректную работу. Однако я проверяю официальный документ StandardScaler(), он не может поддерживать масштабирование с заданным средним и стандартным значением. как это:

from sklearn.preprocessing import StandardScaler
sc = StandardScaler(mean = train_x.mean(), var_x = train.std())
sc.fit(test_x)

# this code is incorrect, but what is the correct code?

Итак, мой вопрос заключается в том, как масштабировать тестовый набор на основе среднего и стандартного значения из набора поездов в python.


person Carlos    schedule 17.03.2021    source источник
comment
Он будет масштабироваться по умолчанию, поскольку with_mean и with _std имеют значение True. Поэтому, когда вы пройдете test_x, он автоматически рассчитает среднее значение и стандартное значение, а затем обработает масштабирование. Ваш код должен быть таким. sc= StandardScaler() sc.fit(test_x)   -  person Muntakimur Rahaman    schedule 17.03.2021


Ответы (1)


Согласно официальным документам,

with_mean bool, default=True Если True, центрируйте данные перед масштабированием. Это не работает (и вызовет исключение) при попытке работать с разреженными матрицами, потому что их центрирование влечет за собой создание плотной матрицы, которая в обычных случаях использования, вероятно, будет слишком большой, чтобы поместиться в памяти.

with_std bool, default=True Если True, данные масштабируются до единичной дисперсии (или, что то же самое, до единичного стандартного отклонения).

Таким образом, вы можете просто сделать это так.

from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
sc.fit(test_x)

StandardScaler() принимает только значения with_mean и with_std как логические значения, что означает их значение True или False.

person Muntakimur Rahaman    schedule 17.03.2021
comment
Итак, если я хочу использовать train_x для масштабирования test_x, я должен: sc = StandardScaler() sc.fit(train_x), затем sc.transform(test_x) - person Carlos; 17.03.2021