Я думаю, що головна проблема полягає в тому, щоб дістати парні відстані ефективно. Після того, як у вас з’явиться, що решта є елементом.
Для цього, ймовірно, ви хочете використовувати scipy. Ця функція scipy.spatial.distance.pdist
виконує те, що вам потрібно, і scipy.spatial.distance.squareform
, можливо, полегшить ваше життя.
Тож якщо ви хочете матрицю ядра, яку ви робите
from scipy.spatial.distance import pdist, squareform
# this is an NxD matrix, where N is number of items and D its dimensionalites
X = loaddata()
pairwise_dists = squareform(pdist(X, 'euclidean'))
K = scip.exp(-pairwise_dists ** 2 / s ** 2)
Документацію можна знайти тут .