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