首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >学习标准标尺结果与手工结果不同

学习标准标尺结果与手工结果不同
EN

Stack Overflow用户
提问于 2017-05-27 18:24:42
回答 1查看 4.4K关注 0票数 6

我使用sklearn标准标度器(平均去除和方差缩放)来缩放数据,并将其与数据帧进行比较,在那里,我“手动”减去平均值,然后除以标准差。比较显示出一致的小差异。有人能解释原因吗?(我使用的数据集是:http://archive.ics.uci.edu/ml/datasets/Wine

代码语言:javascript
复制
import pandas as pd
from sklearn.preprocessing import StandardScaler

df = pd.read_csv("~/DataSets/WineDataSetItaly/wine.data.txt", names=["Class", "Alcohol", "Malic acid", "Ash", "Alcalinity of ash", "Magnesium", "Total phenols", "Flavanoids", "Nonflavanoid phenols", "Proanthocyanins", "Color intensity", "Hue", "OD280/OD315 of diluted wines", "Proline"])

cols = list(df.columns)[1:]    # I didn't want to scale the "Class" column
std_scal = StandardScaler()
standardized = std_scal.fit_transform(df[cols])
df_standardized_fit = pd.DataFrame(standardized, index=df.index, columns=df.columns[1:])

df_standardized_manual = (df - df.mean()) / df.std()
df_standardized_manual.drop("Class", axis=1, inplace=True)

df_differences = df_standardized_fit - df_standardized_manual
df_differences.iloc[:,:5]


    Alcohol    Malic acid   Ash         Alcalinity  Magnesium
0   0.004272    -0.001582   0.000653    -0.003290   0.005384
1   0.000693    -0.001405   -0.002329   -0.007007   0.000051
2   0.000554    0.000060    0.003120    -0.000756   0.000249
3   0.004758    -0.000976   0.001373    -0.002276   0.002619
4   0.000832    0.000640    0.005177    0.001271    0.003606
5   0.004168    -0.001455   0.000858    -0.003628   0.002421
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-27 18:33:40

学习使用np.std,默认情况下它是总体标准偏差(其中平方偏差之和除以观测数),熊猫使用样本标准差(分母是观测值的数目- 1) (见维基百科标准偏差文章)。这是一个由自由度(ddof)决定的对总体标准差的无偏估计的修正因子。因此,默认情况下,numpy和scikit的计算使用ddof=0,而熊猫则使用ddof=1 (文档)。

DataFrame.std(axis=None,skipna=None,level=None,ddof=1,numeric_only=None,**kwargs) 在所要求的轴上返回样品标准差。 默认情况下由N1标准化.这可以使用ddof参数进行更改。

如果您将熊猫版本更改为:

代码语言:javascript
复制
df_standardized_manual = (df - df.mean()) / df.std(ddof=0)

差别将几乎为零:

代码语言:javascript
复制
        Alcohol    Malic acid           Ash  Alcalinity of ash     Magnesium
0 -8.215650e-15 -5.551115e-16  3.191891e-15       0.000000e+00  2.220446e-16
1 -8.715251e-15 -4.996004e-16  3.441691e-15       0.000000e+00  0.000000e+00
2 -8.715251e-15 -3.955170e-16  2.886580e-15      -5.551115e-17  1.387779e-17
3 -8.437695e-15 -4.440892e-16  3.164136e-15      -1.110223e-16  1.110223e-16
4 -8.659740e-15 -3.330669e-16  2.886580e-15       5.551115e-17  2.220446e-16
票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44220290

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档