在计算距离矩阵时遇到错误:“ RuntimeWarning:在sqrt中遇到无效值”

时间:2019-05-19 18:27:52

标签: python scikit-learn distance-matrix scipy-spatial

我随机生成了一个矩阵,其中包含:mtx=numpy.random.rand(100,3) 然后我尝试使用以下方法将矩阵的尺寸减小为2:

from sklearn.manifold import TSNE
newMTX=TSNE(2,method='barnes_hut')

之后,我想计算newMTX的欧几里得距离矩阵,然后我做了:

from scipy.spatial import distance_matrix
dis=distance_matrix(newMTX,newMTX)

但是我遇到了一个错误(RuntimeWarning: invalid value encountered in sqrt),我无法理解其原因。有人可以帮我吗?

我已经尝试过:

from sklearn.metrics.pairwise import euclidean_distances as distance_matrix
dis=distance_matrix(newMTX,newMTX)

但是我遇到了同样的错误。

我搜索并找到了另一种解决方案:

    dist = lambda p1, p2: numpy.sqrt(((p1-p2)**2).sum())
    dm = numpyp.asarray([[dist(p1, p2) for p2 in newMTX] for p1 in newMTX])

但我不确定这是否是计算大矩阵的距离矩阵的有效解决方案,例如1000000 * 2矩阵?

我要实现的是100 * 2矩阵newMTX的100 * 100欧氏距离矩阵

任何帮助将不胜感激!

0 个答案:

没有答案