使用sklearn StandardScaler缩放的数据平均值不为零

时间:2016-11-03 15:44:36

标签: python pandas numpy scikit-learn

我有以下代码

import pandas as pd
from sklearn.preprocessing import StandardScaler
import numpy as np

df.columns=['sepal_len', 'sepal_wid', 'petal_len', 'petal_wid', 'class']
df.dropna(how="all", inplace=True) # drops the empty line at file-end 

X = df.ix[:,0:4].values
y = df.ix[:,4].values

接下来,我正在缩放数据并得到平均值:

X_std = StandardScaler().fit_transform(X)
mean_vec = np.mean(X_std, axis=0)

我得不到的是我的输出是这样的:

[ -4.73695157e-16  -6.63173220e-16   3.31586610e-16  -2.84217094e-16]

我确实理解这些值如何可以是0以外的任何值。如果我缩放它,它应该是0对吗?

有人能告诉我这里发生了什么吗?

1 个答案:

答案 0 :(得分:7)

在实践中,这些值非常接近0,您可以将它们视为0。

缩放器尝试将均值设置为零,但由于数值表示的限制,它只能得到非常接近0的均值。

检查floating point arithmetics精确度的这个问题。

同样有趣的是Machine Epsilon的概念,而浮动64的概念类似于2.22e-16