我有一个流形学习/非线性降维问题,我知道对象之间的距离达到某个阈值,超出此范围,我只知道距离是“远”。此外,在某些情况下,某些距离可能会丢失。我正在尝试使用sklearn.manifold
以执行查找一维表示的任务。一种自然的表示方式是将“远”距离inf
和缺失距离表示为nan
。
但是,目前scikit-learn
似乎不支持nan
和inf
中赋予流形学习函数的距离矩阵值sklearn.manifold
,因为我得到ValueError: Array contains NaN or infinity
.
这有概念上的原因吗?有些方法似乎特别适用于inf
,例如非度量 MDS。我也知道这些方法在其他语言中的一些实现能够处理缺失/inf 值。
我没有考虑使用,而是inf
将“远”值设置为一个非常大的数字,但我不确定这将如何影响结果。
更新:
我在代码中挖掘sklearn.manifold.MDS._smacof_single()
并找到了一段代码和一条评论说"similarities with 0 are considered as missing values"
。这是指定缺失值的未记录方式吗?这适用于所有多种功能吗?