столкнулся с ошибкой: "RuntimeWarning: недопустимое значение в sqrt" при расчете матрицы расстояний - PullRequest
1 голос
/ 19 мая 2019

Я сгенерировал матрицу случайным образом с помощью: 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

Любая помощь будет благодарна!

...