Scipys spärliches eigsh () für kleine Eigenwerte

Ich versuche, einen spektralen Clustering-Algorithmus mit NumPy / SciPy für größere (aber immer noch verfolgbare) Systeme zu schreiben, wobei ich die spärliche lineare Algebra-Bibliothek von SciPy verwende. Leider bin ich mit Stabilitätsproblemen konfrontierteigsh ().

Hier ist mein Code:

import numpy as np
import scipy.sparse
import scipy.sparse.linalg as SLA
import sklearn.utils.graph as graph

W = self._sparse_rbf_kernel(self.X_, self.datashape)
D = scipy.sparse.csc_matrix(np.diag(np.array(W.sum(axis = 0))[0]))
L = graph.graph_laplacian(W) # D - W
vals, vects = SLA.eigsh(L, k = self.k, M = D, which = 'SM', sigma = 0, maxiter = 1000)

Dassklearn library bezieht sich speziell auf das scikit-learn-Paketdiese Methode zur Berechnung eines Graph Laplace aus einer spärlichen SciPy-Matrix.

_sparse_rbf_kernel ist eine Methode, die ich geschrieben habe, um paarweise Affinitäten der Datenpunkte zu berechnen. Dabei wird aus Bilddaten eine spärliche Affinitätsmatrix erstellt, indem nur paarweise Affinitäten für die 8 Nachbarschaften um jedes Pixel berechnet werden (anstatt paarweise für alle Pixel mit Scikit-Learns)rbf_kernel Methode, die für den Datensatz dies auch nicht behebt).

Da der Laplace nicht normalisiert ist, suche ich nach den kleinsten Eigenwerten und den entsprechenden Eigenvektoren des Systems. ich verstehe dasARPACK eignet sich nicht zum Auffinden kleiner Eigenwerte, aber ich versuche Shift-Invert zu verwenden, um diese Werte zu finden und habe immer noch nicht viel Erfolg.

Mit den obigen Argumenten (insbesonderesigma = 0) Erhalte ich folgenden Fehler:

RuntimeError: Factor is exactly singular

Mitsigma = 0.001Ich erhalte einen anderen Fehler:

scipy.sparse.linalg.eigen.arpack.arpack.ArpackNoConvergence: ARPACK error -1: No convergence (1001 iterations, 0/5 eigenvectors converged)

Ich habe alle drei verschiedenen Werte für ausprobiertmode mit dem gleichen Ergebnis.Gibt es Vorschläge zur Verwendung der SciPy-Sparse-Bibliothek zum Ermitteln kleiner Eigenwerte eines großen Systems?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage