python - 在大型矩阵上计算时 MDS 挂起
问题描述
我正在尝试将维度减少到从 64535 x 67 矩阵到 64535 x 2 矩阵的二维。我不确定为什么下面的拟合变换计算会挂起的原因是什么,除了这是一个大矩阵和一个大缩减的事实。难道 mds 不具备处理这么大的矩阵/缩减的能力吗?有解决方法吗?
temp = df.select_dtypes(include=[np.number])
norm = (temp - temp.mean())/temp.std()
mds = sklearn.manifold.MDS(n_components=2, eps=0)
data2d = mds.fit_transform(norm)
解决方案
MDS 具有 O(N^3) 复杂度,它可能没有挂起但仍在运行。查看下面论文的第 3 部分。MDS 将在大型矩阵上执行得很好,但需要相当长的时间。我不知道你想用你的降维做什么,但如果你只是在寻找速度,我会建议某种类型的随机投影(仍然很好用)。
http://web.mit.edu/cocosci/Papers/nips02-localglobal-in-press.pdf
推荐阅读
- error-handling - 如何使用 VBA 为表单、报表和数据表设置条件格式
- java - 编写方法重载的最佳方法是什么?
- sql-server - 具有默认为默认约束值的参数的存储过程
- api - 为什么 Clio Users 端点总是返回一个 null 的联系人对象?
- django - 在上传到 s3 之前压缩图像的最佳选择
- sql - 修改查询以消除对临时表的需要
- java - 无法在码头 9.4.16.v20190411 中部署 WAR:接收 WEB-INF/lib 下战争中的 jar 的 FileNotFoundException
- rust - 如何存储和使用使用公共内存区域的闭包?
- python - 无法使用 BS4 从eastbay.com 抓取数据?
- r - 根据dplyr中每一列中的数据组合数据框