“with_std=False or True”和“with_mean=False or True”之间的 StandardScaler 区别
Posted
技术标签:
【中文标题】“with_std=False or True”和“with_mean=False or True”之间的 StandardScaler 区别【英文标题】:StandardScaler difference between "with_std=False or True" and "with_mean=False or True" 【发布时间】:2019-12-12 11:15:42 【问题描述】:我正在尝试标准化一些数据以便能够将 PCA 应用于它。我正在使用 sklearn.preprocessing.StandardScaler。我很难理解在参数with_mean
和with_std
(documentation) 中使用True
或False
之间的区别。
谁能给出更详细的解释?
【问题讨论】:
如果您将with_mean
/with_std
设置为False
,这意味着它将使用0
/1
作为均值/标准差,而不是首先在数据上测量这些值。如果两者都设置为False
,则使用standard normal distribution。
【参考方案1】:
通常使用标准缩放器将normal distribution 与数据拟合,然后计算Z-scores。这意味着首先计算数据的mean μ和标准差σ,然后用计算Z-scores >z = (x - μ) / σ.
通过将with_mean
或with_std
设置为False
,我们分别将均值μ设置为0
,将标准差σ设置为1。如果两者都设置为False
,我们由此计算Z- standard normal distribution [wiki] 的分数。
将with_mean
设置为False
的主要用例是处理稀疏 矩阵。稀疏矩阵包含大量的零,因此以零通常不使用(或很少)内存的方式存储。如果我们拟合平均值,然后计算 z 分数,几乎可以肯定所有零都将映射到非零值,从而使用(大量)内存。对于大型稀疏矩阵,这可能会导致内存错误:数据太大,内存无法再存储矩阵。通过设置 μ=0,这意味着零值将映射到零。标准缩放器的结果是一个形状相同的稀疏矩阵。
【讨论】:
【参考方案2】:我在this thread 中提供了更多详细信息,但我也在这里解释一下。
数据的标准化(每个列/特征/变量单独)涉及以下等式:
说明:
如果您将with_mean
和with_std
设置为False
,则平均μ
设置为0
,std
设置为1,假设列/特征来自正常高斯分布(平均值为 0,标准为 1)。
如果您将with_mean
和with_std
设置为True
,那么您实际上将使用真正的μ
和σ
数据。这是最常见的方法。
【讨论】:
嗨,您能否提供一个示例,其中的答案显示 with_mean 和 with_std 设置为 False/True 之间的区别?这将有助于我进一步清除我的理解。很抱歉给您带来麻烦。以上是关于“with_std=False or True”和“with_mean=False or True”之间的 StandardScaler 区别的主要内容,如果未能解决你的问题,请参考以下文章
第三十一节:扫盲并发和并行同步和异步进程和线程阻塞和非阻塞响应和吞吐等
shell中$()和 ` `${}${!}${#}$[] 和$(()),[ ] 和(( ))和 [[ ]]
Java基础8---面向对象代码块和继承和this和super和重写和重载和final
Java基础8---面向对象代码块和继承和this和super和重写和重载和final
JS中some()和every()和join()和concat()和pop(),push(),shift(),unshfit()和map()和filter()