这个问题实际上是 this one 的重复问题,但在撰写本文时仍未得到答复。
为什么是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_
最佳答案
如果你先缩放数据,那么我认为解释的方差比将按降序排列:
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_
关于python - scikit learn 截断SVD解释_方差_比率_不按降序排列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54411576/