【发布时间】:2019-10-04 19:58:38
【问题描述】:
我正在尝试对一个图像数据集执行 PCA,其中包含 100.000 个图像,每个图像的大小为 224x224x3。
我希望将图像投影到 1000 维(或附近)的空间中。
我在我的笔记本电脑(16gb ram,i7,无 GPU)上执行此操作,并且已经设置了 svd_solver='randomized'。
但是,拟合需要很长时间。数据集和图像尺寸是否太大或者我可以使用一些技巧?
谢谢!
编辑:
这是代码:
pca = PCA(n_components=1000, svd_solver='randomized')
pca.fit(X)
Z = pca.transform(X)
X 是一个 100000 x 150528 的矩阵,其行代表一个平面图像。
【问题讨论】:
-
请提供一些代码来说明您的问题
-
为什么要将它投影到 1000 维空间?更合理的维度数是 ~5-100
-
潜在空间不一定是 1000 维,但由于内存限制,它不能大于 5000 或 6000 左右
-
不过,如果您正在为图像寻找 1000 维空间,那么您可能不应该使用 PCA,而应该使用一些更复杂的特征提取或数据压缩技术。无论如何,您可以查看 fbpca 以获得快速随机 SVD 求解器。我认为没有比密集数据更快的算法了。
标签: python image machine-learning scikit-learn pca