我随机生成了一个矩阵: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 矩阵的 100*100 欧式距离矩阵newMTX
任何帮助将不胜感激!