sci-kit学习TruncatedSVD解释的_variance_ratio_不是降序排列吗?

时间:2019-01-28 23:05:38

标签: python scikit-learn svd variance

这个问题基本上是this question的重复-抱歉,因为我是新来的,还想不办法“撞”另一个问题,所以我要问一个新问题。但是我也有同样的问题,找不到令人满意的解释。

为什么explained_variance_ratio_中的TruncatedSVD不像PCA中那样降序排列?根据我的经验,列表的第一个元素似乎总是最低的,然后在第二个元素中,该值跳升,然后从那里降序排列。为什么explained_variance_ratio_[0] <explained_variance_ratio_[1](> explained_variance_ratio_[2]> explained_variance_ratio_[3] ...)?这是否意味着第二个“成分”实际上解释了最多的差异(不是第一个)?

重现行为的代码:

from sklearn.decomposition import TruncatedSVD

n_components = 50
X_test = np.random.rand(50,100)

model = TruncatedSVD(n_components=n_components, algorithm = 'randomized')
model.fit_transform(X_test)
model.explained_variance_ratio_

1 个答案:

答案 0 :(得分:0)

如果您首先缩放数据,那么我认为解释的方差比率将以降序排列:

from sklearn.decomposition import TruncatedSVD
from sklearn.preprocessing import StandardScaler

n_components = 50
X_test = np.random.rand(50,100)

scaler = StandardScaler()
X_test = scaler.fit_transform(X_test)

model = TruncatedSVD(n_components=n_components, algorithm = 'randomized')
model.fit_transform(X_test)
model.explained_variance_ratio_