StandardScaler 变换后均值和标准差的可接受偏移量是多少?

问题描述

我正在使用 sklearn StandardScaler 来转换/规范化数据,如下所示:

scaler = StandardScaler()
data = scaler.fit_transform(data)

我期望平均值为 0,标准差为 1。但是,我得到的值有点不同。

rnd = randrange(0,data.shape[1])
print(data[:,rnd].std())
print(data[:,rnd].mean())

1.0282903146389404
-0.06686584736835668

好像very close numbers to 0 and 1 should be acceptable;但是,不确定可接受的偏移量是多少。例如,+/- 1e-2,据我所知,是否足够接近?还是我应该担心?

解决方法

您正在为您的 data 变量使用 fit_transform。这意味着,现在,您的所有数据都将标准化,遵循均值 0 和标准偏差 1 的形状。如下图所示:

enter image description here

您接下来要做的是,随机获取数据变量的一些样本。因此,您收集的新样本将几乎相同,但是,由于存在随机参数,因此均值和标准差将与您的数据不同。

为了进行比较,假设我们有人类身高的平均值和标准差。如果我们现在对您所在国家/地区的身高取一小部分样本,平均值和标准差将不会完全相同,但几乎相同。这就是重点。

如果您检查数据变量的均值和标准差,您将获得均值 0 和标准差 1。