sklearn StandardScaler 似乎无法正常工作
Posted
技术标签:
【中文标题】sklearn StandardScaler 似乎无法正常工作【英文标题】:sklearn StandardScaler doesn't seem to be working properly 【发布时间】:2020-04-23 08:41:48 【问题描述】:我正在尝试对我的数据进行规范化,以便在以后的假设检验中正常分布。我试图规范化的数据points
是这样的:
P100m Plj Psp Phj P400m P110h Ppv Pdt Pjt P1500
0 938 1061 773 859 896 911 880 732 757 752
1 839 975 870 749 887 878 880 823 863 741
2 814 866 841 887 921 939 819 778 884 691
3 872 898 789 878 848 879 790 790 861 804
4 892 913 742 803 816 869 1004 789 854 699
... ... ... ... ... ... ... ... ... ...
7963 755 760 604 714 812 794 482 571 539 780
7964 830 845 524 767 786 783 601 573 562 535
7965 819 804 653 840 791 699 659 461 448 632
7966 804 720 539 758 830 782 731 487 425 729
7967 687 809 692 714 565 741 804 527 738 523
我正在使用sklearn.preprocessing.StandardScaler()
,我的代码如下:
scaler = preprocessing.StandardScaler()
scaler.fit(points)
points_norm = scaler.transform(points)
points_norm_df = pd.DataFrame(points_norm, columns = ['P100m', 'Plj', 'Psp', 'Phj', 'P400m',
'P110h', 'Ppv', 'Pdt', 'Pjt','P1500'])
奇怪的是,我正在从scipy.stats.anderson
运行 Anderson-Darling 正态性检验,结果是它与正态分布相差甚远。
我不是最熟练的统计学家。我误解了我在这里做什么还是我的代码/数据有问题?
任何帮助将不胜感激
【问题讨论】:
你能否详细说明它“似乎无法正常工作” @sshashank124 '我正在尝试规范化我的数据,使其正常分布' 【参考方案1】:正如 gilad 已经指出的那样,StandardScaler
正在标准化您的数据。
您可以在此处找到预处理方法列表:https://scikit-learn.org/stable/modules/preprocessing.html
您在寻找:
6.3.2.1。映射到均匀分布
QuantileTransformer 和 quantile_transform 提供了一个非参数 将数据映射到具有值的均匀分布的转换 在 0 到 1 之间
这会像这样工作:
quantile_transformer = preprocessing.QuantileTransformer(random_state=0)
points_norm = quantile_transformer.fit_transform(points)
【讨论】:
运行正态性检验,执行这些步骤后,结果返回数据不正常。 什么是正常的?这是之后的统一分布:en.wikipedia.org/wiki/Uniform_distribution_(continuous)【参考方案2】:StandardScaler
并未声称使数据具有正态分布而不是标准化,以便您的数据具有零均值和单位方差。
来自documentation:
通过去除均值和缩放到单位方差来标准化特征
样本x的标准分计算为
z = (x - u) / s
其中u
是训练样本的平均值,如果是,则为零with_mean=False
,s
是训练的标准差 样本或一个with_std=False
。
【讨论】:
啊,我误会了。那么normalize
会做什么呢?
QuantileTransformer
和 output_distribution='normal'
如果你真的想要的话
@glemaitre 这将从数据集中删除值,不是吗?我只是想重新调整它。
它只会重新缩放数据而不删除它。它只会将数据映射到给定的分布(均匀或正态),无论原始分布是:scikit-learn.org/dev/auto_examples/preprocessing/…以上是关于sklearn StandardScaler 似乎无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章
[sklearn][standardscaler] 我可以反转模型输出的标准缩放器吗?
sklearn 笔记:数据归一化(StandardScaler)
sklearn.preprocessing.StandardScaler数据标准化