【发布时间】:2019-12-05 07:36:25
【问题描述】:
我有一个大型(50k 行,2k 列)稀疏二进制数据集,因此 PCA 不是降维的最佳选择。我下载了this mca 包,运行如下代码:
import mca
import pandas as pd
data_dummy = mca.dummy(pd.DataFrame(data))
mca_counts = mca.MCA(data_dummy)
mca_components = mca_counts.fs_r(1)
我已经让它运行了一个多小时,仍然没有。相比之下,sklearn 的 PCA 实现在 30 秒内完成了相同的数据集。我做错了什么可怕的事情吗?或者 MCA 不是一种确定性的全局优化算法,不像 PCA 那样。如果是这样,我应该看看另一种实现吗?我只是想为稀疏的分类(二进制)数据找到一种快速的、下降的降维技术。
【问题讨论】:
-
尝试使用 skmca 或 Prince : github.com/MaxHalford/Prince
-
你的数据怎么样?它有分类数据还是数值数据?
-
数据为数字
-
如果它是数字的,你应该使用 PCA,MCA 更适合分类数据MCA。我认为正在发生的事情是它假设您的数据是分类的,然后尝试将其转换为数字以减少维度会花费时间。但是不要相信我的话,我不是 100% 确定。
-
我不认为这是正在发生的事情。即使我不运行将数据转换为数字分类数据(并自己转换)的
mca.dummy()函数,它仍然不会在一小时内完成。实际的 MCA 是什么,我不知道为什么
标签: python performance pca dimensionality-reduction