У меня есть большой (100K на 30K) и (очень) редкий набор данных в формате svmlight, который я загружаю следующим образом:
import numpy as np
from scipy.cluster.vq import kmeans2
from scipy.spatial.distance import pdist, squareform
from sklearn.datasets import load_svmlight_file
X,Y = load_svmlight_file("somefile_svm.txt")
, который возвращает разреженный массив scipy X
Iпросто нужно вычислить попарные расстояния всех обучающих точек как
D = pdist(X)
К сожалению, реализации вычисления расстояния в scipy.spatial.distance работают только для плотных матриц.Из-за размера набора данных невозможно, скажем, использовать pdist как
D = pdist(X.todense())
. Любые указатели для разреженных реализаций вычисления расстояния до матрицы или обходные пути в отношении этой проблемы будут высоко оценены.
Большое спасибо