python - scikit learn 截断SVD解释_方差_比率_不按降序排列?

标签 python scikit-learn svd variance

这个问题实际上是 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/

相关文章:

python - 使用 XGBoost 和 hyperopt 进行交叉验证和参数调整

python - 如何处理余弦相似度的负值

scipy - TruncatedSVD 和 svds 的区别

python - 在 Python 中实现一种特殊类型的多处理队列

python - Scikit-Learn:如何执行最佳子集 GLM 泊松回归?

python - Python PIL 中的重叠多边形

python - Python 和 R 之间的线性回归系数之间的差异

python - SVD - 矩阵变换 Python

python - 不可能捕获 asyncio.TimeoutError 吗?

python - 如何在绝对导入中设置没有点符号的 Pypi 包 - python3