gpt4 book ai didi

python - sklearn.decomposition.TruncatedSVD 可以部分应用于矩阵吗?

转载 作者:行者123 更新时间:2023-11-30 09:09:29 31 4
gpt4 key购买 nike

我正在将 sklearn.decomposition.TruncatedSVD 应用于非常大的矩阵。如果矩阵超过一定大小(例如 350k x 25k),svd.fit(x) 将耗尽 RAM。

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

为了解决内存问题,将 svd 应用于矩阵的某些部分(然后连接)是否安全?

结果会一样吗?即:

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)

.. 相当于(?):

from sklearn.decomposition import TruncatedSVD
svd = TruncatedSVD(n_components=128)
svd_features = svd.fit_transform(svd_features)
<小时/>

如果没有,是否有解决方法来减少非常大的矩阵的暗淡?

最佳答案

结果不会一样,

例如,考虑下面的代码:

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)

这会打印

[[ 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]]

它们彼此不同。

关于python - sklearn.decomposition.TruncatedSVD 可以部分应用于矩阵吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43531832/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com