Как StandardScaler не нарушает целостность данных? - PullRequest
1 голос
/ 21 октября 2019

Поскольку при использовании StandardScaler от sklearns исходные данные нормализуются, не является ли проблематичным, что исходные данные больше не совпадают?

Пример:

from sklearn.preprocessing import StandardScaler
import numpy as np


data = np.array([[1,1],[2,0]])
scaler = StandardScaler()
scaled_data = scaler.fit_transform(data)

print(data)
[[1 1]
[2 0]]

print(scaled_data)
[[-1.  1.]
 [ 1. -1.]]

Как вы можете видетьданные не совпадают из-за нормализации. Как это изменение не влияет на результаты будущей обработки, поскольку данные отличаются и в каком сценарии подходит для нормализации (в основном мы делаем это для данных, которые имеют отрицательные значения, но я имею в виду, в каких процессах это уместно)?

Ответы [ 2 ]

0 голосов
/ 23 октября 2019

Еще один момент, о котором следует помнить, это то, что значения по умолчанию для класса StandardScaler в sklearn не изменяют данные на месте по умолчанию:

" copy: boolean,необязательный, по умолчанию True Если False, старайтесь избегать копирования и вместо этого выполняйте масштабирование на месте. Это не всегда гарантирует работу на месте, например, если данные не являются массивом NumPy или матрицей CSR scipy.sparse, копия можетбудет возвращено. "

Так что выше, так как вы присвоили результаты имени scaled_data , объект, на который ссылается data , остается неизменным, пока выне изменяйте параметр copy = True по умолчанию в StandardScaler.

0 голосов
/ 21 октября 2019

Давайте перейдем к официальным документам для функции: https://scikit -learn.org / stable / modules / generate / sklearn.preprocessing.StandardScaler.html

Из этого мы можемсм. следующую формулу: стандартная оценка образца x рассчитывается следующим образом:

z = (x - u) / s Здесь u - среднее значение & s - стандартное отклонение

enter image description here

Согласно теореме о нормальном распределении, мы можем представить любые данные, используя приведенную выше формулу и распределение.

Геометрически мы вычитаем все значения поля / столбца с одинаковым значением& делим на другое значение.

Мы просто масштабируем данные. Так что целостность данных не будет потеряна

...