python 中的 sklearn 如何计算 .scale_? (它的算法到底是什么?)

How .scale_ is calculated by sklearn in python? (What is it's algorithm exactly?)

拜托,假设我们有这样一个数组:

import numpy as np
X_train = np.array([[ 1., -1.,  2.],
                     [ 2.,  0.,  0.],
                     [ 0.,  1., -1.]])

我们用 sklearn 中存在的 .scale_ 缩放它,代码如下:

from sklearn import preprocessing
scaler = preprocessing.StandardScaler().fit(X_train)
scaler.scale_

显示了这样的结果:

array([0.81649658, 0.81649658, 1.24721913])

你知道它是怎么计算出来的吗? 如果你知道,请写出它的公式,它是如何计算的? 我假设 .scale_ 显示 Interquartile range (IQR),但是当我手动计算时 IQR 是:

array([2, 2, 3]) rather than `array([0.81649658, 0.81649658, 1.24721913])`.

此外,我认为 array([0.81649658, 0.81649658, 1.24721913])array([2, 2, 3]) 正常 类型,但我不知道它是如何规范化的。 请帮我找到它。

计算均值、方差和标准差的三个主要统计量

mean = preprocessing.StandardScaler().fit(X_train).mean_ 
variance = preprocessing.StandardScaler().fit(X_train).var_
Standard_deviation = preprocessing.StandardScaler().fit(X_train).scale_

根据问题:

X_train = np.array([[ 1., -1.,  2.],
                     [ 2.,  0.,  0.],
                     [ 0.,  1., -1.]])

mean = preprocessing.StandardScaler().fit(X_train).mean_ 
print(mean)
array([1.        , 0.        , 0.33333333])

variance = preprocessing.StandardScaler().fit(X_train).var_
print(variance )
array([0.66666667, 0.66666667, 1.55555556])

Standard_deviation = preprocessing.StandardScaler().fit(X_train).scale_
print(Standard_deviation )
array([0.81649658, 0.81649658, 1.24721913])

换句话说:

scaler.scale_ = np.sqrt(scaler.var_)