Я хотел бы создать граф k-ближайших соседей для изображений в наборе цифр MNIST, с определяемой пользователем метрикой расстояния - для простоты, норма Фробениуса A - B.
sklearn.neighbors.kneighbors_graph предоставляет хороший интерфейс, но не допускает матричные данные - например, когда я пытаюсь сделать график следующим образом:
from torchvision.datasets import MNIST
import sklearn
# Define distance metric for matrices
metric_func = lambda X, Y: norm(X - Y, ord='fro')
data = MNIST('sample_data', train=True, transform=None, target_transform=None, download=True)
adj_matrix = sklearn.neighbors.kneighbors_graph(
data.data,
n_neighbors=5,
mode='connectivity',
metric=metric_func,
p=2,
metric_params=None,
include_self=False,
n_jobs=None
)
я получаюошибка:
ValueError: Found array with dim 3. Estimator expected <= 2.
Я мог бы написать собственный метод 'kneighbors_graph () `, но он, вероятно, включал бы удвоение для циклов и большую неэффективность.Есть ли эффективный способ создать этот граф в Python?