Редкие реализации вычисления расстояния в python / scikit-learn

У меня есть большой (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

Мне просто нужно вычислить попарные расстояния всех обучающих точек как

D = pdist(X)

К сожалению, реализации вычисления расстояния в scipy.spatial.distance работают только для плотных матриц. Из-за размера набора данных невозможно, скажем, использовать pdist в качестве

D = pdist(X.todense())

. Мы будем очень признательны за любые указатели на реализации вычисления расстояния с разреженной матрицей или обходные пути в отношении этой проблемы.

Большое спасибо

5
задан ogrisel 24 June 2012 в 07:38
поделиться