Я сгенерировал матрицу случайным образом с помощью: 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 * 100 евклидовых расстояний из матрицы 100 * 2 newMTX
Любая помощь будет благодарна!