我随机生成了一个矩阵,其中包含: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欧氏距离矩阵
任何帮助将不胜感激!