【问题标题】:StandardScaler difference between "with_std=False or True" and "with_mean=False or True"“with_std=False or True”和“with_mean=False or True”之间的 StandardScaler 区别
【发布时间】:2019-12-12 11:15:42
【问题描述】:

我正在尝试标准化一些数据以便能够将 PCA 应用于它。我正在使用 sklearn.preprocessing.StandardScaler。我很难理解在参数with_meanwith_std (documentation) 中使用TrueFalse 之间的区别。

谁能给出更详细的解释?

【问题讨论】:

  • 如果您将with_mean/with_std 设置为False,这意味着它将使用0/1 作为均值/标准差,而不是首先在数据上测量这些值。如果两者都设置为False,则使用standard normal distribution

标签: python scikit-learn pca decomposition


【解决方案1】:

通常使用标准缩放器将normal distribution 与数据拟合,然后计算Z-scores。这意味着首先计算数据的mean μ标准差σ,然后用计算Z-scores >z = (x - μ) / σ.

通过将with_meanwith_std设置为False,我们分别将均值μ设置为0,将标准差σ设置为1。如果两者都设置为False,我们由此计算Z- standard normal distribution [wiki] 的分数。

with_mean 设置为False 的主要用例是处理稀疏 矩阵。稀疏矩阵包含大量的零,因此以零通常不使用(或很少)内存的方式存储。如果我们拟合平均值,然后计算 z 分数,几乎可以肯定所有零都将映射到非零值,从而使用(大量)内存。对于大型稀疏矩阵,这可能会导致内存错误:数据太大,内存无法再存储矩阵。通过设置 μ=0,这意味着零值将映射到零。标准缩放器的结果是一个形状相同的稀疏矩阵。

【讨论】:

    【解决方案2】:

    我在this thread 中提供了更多详细信息,但我也在这里解释一下。

    数据的标准化(每个列/特征/变量单独)涉及以下等式:


    说明:

    如果您将with_meanwith_std 设置为False,则平均μ 设置为0std 设置为1,假设列/特征来自正常高斯分布(平均值为 0,标准为 1)。

    如果您将with_meanwith_std 设置为True,那么您实际上将使用真正的μσ 数据。这是最常见的方法。

    【讨论】:

    • 嗨,您能否提供一个示例,其中的答案显示 with_mean 和 with_std 设置为 False/True 之间的区别?这将有助于我进一步清除我的理解。很抱歉给您带来麻烦。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-02
    • 2012-08-23
    • 2013-06-22
    • 2010-10-11
    • 2021-08-08
    • 2020-12-15
    相关资源
    最近更新 更多