为什么我在应用 StandardScaler 函数时会得到不同的结果?

问题描述 投票:0回答:1

我为 StandardScaler 创建了一个函数,这里是:

def ss_func(dff):
  df_mean = dff.mean()
  df_std = dff.std()
  dff_scaled = (dff - df_mean) / df_std
  return print(dff_scaled)

我在数据中使用它,得到这个结果:

     first    second     third
0 -0.767772 -0.518494 -1.704506
1  0.383886  1.774325  0.046770
2 -0.658090 -0.612765  0.239047
3  1.590385 -0.340051  0.829734
4 -0.548408 -0.303016  0.588955

但是当我使用 sklearn.preprocessing 中的 StandardScaler 时,我看到了一个不同的结果:

[[-0.85839508 -0.5796934  -1.905696  ]
 [ 0.42919754  1.98375598  0.05229044]
 [-0.73576721 -0.6850922   0.26726224]
 [ 1.77810408 -0.38018853  0.92767112]
 [-0.61313934 -0.33878186  0.6584722 ]]

为什么?

machine-learning scikit-learn scaling
1个回答
1
投票

问题出在不同的.std默认参数。 Pandas 使用

ddof=1
创建一个无偏估计器,而不是一个经验估计器(
ddof=0
numpy 会使用)。

def ss_func(dff):
  df_mean = dff.mean()
  df_std = dff.std(ddof=0)
  dff_scaled = (dff - df_mean) / df_std
  return dff_scaled

应该修复它

© www.soinside.com 2019 - 2024. All rights reserved.