我正在尝试使用 python scikit-learn 在我的数据集上应用 NMF。我的数据集包含 0 个值和缺失值。但是 scikit-learn 不允许在数据矩阵中使用 NaN 值。一些帖子说用零替换缺失值。
我的问题是:
如果我用零替换缺失值,算法如何分辨缺失值和实际零值?
是否有任何其他 NMF 实现可以处理缺失值?
或者是否有任何其他矩阵分解算法可以进行缺失值预测?
我正在尝试使用 python scikit-learn 在我的数据集上应用 NMF。我的数据集包含 0 个值和缺失值。但是 scikit-learn 不允许在数据矩阵中使用 NaN 值。一些帖子说用零替换缺失值。
我的问题是:
如果我用零替换缺失值,算法如何分辨缺失值和实际零值?
是否有任何其他 NMF 实现可以处理缺失值?
或者是否有任何其他矩阵分解算法可以进行缺失值预测?
在 scikit-learn github 中有一个关于此的线程和一个可用的版本接缝,但尚未提交给主代码。
SGD 将在这里完成这项工作,但 scikit-learn 没有可用于该任务的。编写自己的可以完成这项工作,但会非常慢,因为不能直接并行化矩阵分解 SGD。检查这里描述的分布式 SGD算法。实施起来并不难,而且可以显着加快速度。