我正在尝试标准化一些数据,以便能够对其应用PCA。我正在使用sklearn.preprocessing.StandardScaler。我很难理解在参数“ with_mean”和“ with_std”中使用“ True”或“ False”之间的区别。这是命令的说明:
https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.StandardScaler.html
有人可以提供更详细的解释吗?
非常感谢您!
答案 0 :(得分:1)
我在这篇帖子https://stackoverflow.com/a/50879522/5025009中提供了更多详细信息,但我也要在这里进行解释。
数据标准化(每个列/功能/每个变量)涉及以下方程式:
说明:
如果将with_mean
和with_std
设置为False
,则平均值μ
设置为0
,而std
设置为1,假设列/特征来自正态高斯分布(均值为0和1 std)。
如果将with_mean
和with_std
设置为True
,则实际上将使用数据的真实μ
和σ
。这是最常见的方法。
答案 1 :(得分:0)
通常使用标准缩放器将normal distribution与数据拟合,然后计算Z-scores。因此,这意味着首先计算数据的平均值μ和标准偏差σ,然后使用计算 Z分数 > z =(x-μ)/σ。
通过将with_mean
或with_std
设置为False
,我们分别将均值μ设置为0
,将标准偏差σ设置为1。如果两者都设置为{{ 1}},因此我们计算出standard normal distribution [wiki]的Z得分。
将False
设置为with_mean
的主要用例是处理稀疏矩阵。稀疏矩阵包含大量零,因此以零通常不使用(或很少使用)内存的方式存储。如果我们将均值拟合,然后计算z分数,则几乎可以肯定的是,所有零都将映射到非零值,从而使用(大量内存)。对于稀疏的大型矩阵,可能会导致内存错误:数据如此之大,导致内存不再能够存储矩阵。通过设置μ= 0 ,这意味着零值将映射到零。标准缩放器的结果是形状相同的稀疏矩阵。