【发布时间】:2018-11-01 23:00:03
【问题描述】:
sklearn 中的 StandardScaler 用于通过以下公式对数据进行归一化:x_normalize = (x-mean)/std。但是,我有不同的结果。
这是我的小例子:
a = pd.DataFrame({'X': [1,2,3,4],
'Y': [1,2,4,72]})
StandardScaler().fit_transform(a)
结果是:
array([[-1.34164079, -0.6211513 ],
[-0.4472136 , -0.58802323],
[0.4472136 , -0.52176709],
[ 1.34164079, 1.73094161]])
我尝试自己计算:
a.loc[:,'X'].mean()
Out[61]: 2.5
a.loc[:,'X'].std()
Out[62]: 1.2909944487358056
(1-a.loc[:,'X'].mean())/a.loc[:,'X'].std()
Out[63]: -1.161895003862225
可以看到,基于StardardScale,a.loc[0,'X']是1,那么转换后是-1.3416。但我的结果是-1.1618。
我哪里弄错了?
【问题讨论】:
-
我得到标准为 1.118 和缩放值为 -1.34。
-
谢谢。但这意味着我对 a.loc[:,'X'].std() 的结果有误。这怎么可能发生?也许我会在另一个 IDE 上尝试一下。现在我正在使用pycharm?
标签: python pandas scikit-learn normalize