首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sklearn.decomposition.TruncatedSVD可以应用于矩阵的各个部分吗?

sklearn.decomposition.TruncatedSVD可以应用于矩阵的各个部分吗?
EN

Stack Overflow用户
提问于 2017-04-21 00:05:04
回答 1查看 1.7K关注 0票数 2

我正在将sklearn.decomposition.TruncatedSVD应用于非常大的矩阵。如果矩阵大于某一大小(例如350 K乘25k),svd.fit(x)就会耗尽内存。

我将svd应用于特征矩阵,其中每一行表示从单个图像中提取的一组特征。

要解决内存问题,将svd应用于矩阵的部分(然后连接)安全吗?

的结果会一样吗?I.:

代码语言:javascript
复制
from sklearn.decomposition import TruncatedSVD
svd = TruncatedSVD(n_components=128)
part_1 = svd.fit_transform(features[0:100000, :])
part_2 = svd.fit_transform(features[100000:, :])
svd_features = np.concatenate((part_1, part_2), axis=0)

。。相当于(?):

代码语言:javascript
复制
from sklearn.decomposition import TruncatedSVD
svd = TruncatedSVD(n_components=128)
svd_features = svd.fit_transform(svd_features)

如果没有,是否有办法解决非常大的矩阵的模糊缩减?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-21 00:41:14

结果会不一样,

例如,考虑下面的代码:

代码语言:javascript
复制
import numpy as np
features=np.array([[3, 2, 1, 3, 1],
       [2, 0, 1, 2, 2],
       [1, 3, 2, 1, 3],
       [1, 1, 3, 2, 3],
       [1, 1, 2, 1, 3]])
from sklearn.decomposition import TruncatedSVD
svd = TruncatedSVD(n_components=2)
svd = TruncatedSVD(n_components=2)
part_1 = svd.fit_transform(features[0:2, :])
part_2 = svd.fit_transform(features[2:, :])
svd_features = np.concatenate((part_1, part_2), axis=0)
svd_b = TruncatedSVD(n_components=2)
svd_features_b = svd_b.fit_transform(features)
print(svd_features)
print(svd_features_b)

这个指纹

代码语言:javascript
复制
[[ 4.81379561 -0.90959982]
 [ 3.36212985  1.30233746]
 [ 4.70088886  1.37354278]
 [ 4.76960857 -1.06524658]
 [ 3.94551566 -0.34876626]]


[[ 4.17420185  2.47515867]
 [ 3.23525763  0.9479915 ]
 [ 4.53499272 -1.13912762]
 [ 4.69967028 -0.89231578]
 [ 3.81909069 -1.05765576]]

它们是不同的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43531832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档