GaussianProcessClassifier#

class sklearn.gaussian_process.GaussianProcessClassifier(kernel=None, *, optimizer='fmin_l_bfgs_b', n_restarts_optimizer=0, max_iter_predict=100, warm_start=False, copy_X_train=True, random_state=None, multi_class='one_vs_rest', n_jobs=None)[Quelle]#

Gauß'sche Prozess-Klassifikation (GPC) basierend auf Laplace-Approximation.

Die Implementierung basiert auf den Algorithmen 3.1, 3.2 und 5.1 aus [RW2006].

Intern wird die Laplace-Approximation verwendet, um die nicht-Gaußsche Posterior-Verteilung durch eine Gaußsche zu approximieren.

Derzeit ist die Implementierung auf die Verwendung der logistischen Link-Funktion beschränkt. Für Mehrklassenklassifizierung werden mehrere binäre One-vs-Rest-Klassifikatoren angepasst. Beachten Sie, dass diese Klasse somit keine echte Mehrklassen-Laplace-Approximation implementiert.

Lesen Sie mehr im Benutzerhandbuch.

Hinzugefügt in Version 0.18.

Parameter:
kernelKernel-Instanz, Standardwert=None

Der Kernel, der die Kovarianzfunktion des GP spezifiziert. Wenn None übergeben wird, wird als Standard der Kernel „1.0 * RBF(1.0)“ verwendet. Beachten Sie, dass die Hyperparameter des Kernels während des Anpassens optimiert werden. Kernel kann auch kein CompoundKernel sein.

optimizer„fmin_l_bfgs_b“, aufrufbar oder None, Standardwert=„fmin_l_bfgs_b“

Kann entweder einer der intern unterstützten Optimierer zur Optimierung der Kernel-Parameter sein, spezifiziert durch einen String, oder ein extern definierter Optimierer, der als aufrufbare Funktion übergeben wird. Wenn eine aufrufbare Funktion übergeben wird, muss sie die Signatur

def optimizer(obj_func, initial_theta, bounds):
    # * 'obj_func' is the objective function to be maximized, which
    #   takes the hyperparameters theta as parameter and an
    #   optional flag eval_gradient, which determines if the
    #   gradient is returned additionally to the function value
    # * 'initial_theta': the initial value for theta, which can be
    #   used by local optimizers
    # * 'bounds': the bounds on the values of theta
    ....
    # Returned are the best found hyperparameters theta and
    # the corresponding value of the target function.
    return theta_opt, func_min

Standardmäßig wird der Algorithmus „L-BFGS-B“ von scipy.optimize.minimize verwendet. Wenn None übergeben wird, bleiben die Kernel-Parameter fixiert. Verfügbare interne Optimierer sind

'fmin_l_bfgs_b'
n_restarts_optimizerint, Standardwert=0

Die Anzahl der Neustarts des Optimierers zur Ermittlung der Kernel-Parameter, welche die Log-Marginal-Likelihood maximieren. Der erste Lauf des Optimierers erfolgt von den initialen Kernel-Parametern aus, die verbleibenden Läufe (falls vorhanden) von Thetas, die log-uniform zufällig aus dem Raum der erlaubten Theta-Werte gezogen wurden. Wenn größer als 0, müssen alle Grenzen endlich sein. Beachten Sie, dass n_restarts_optimizer=0 impliziert, dass ein Lauf durchgeführt wird.

max_iter_predictint, Standardwert=100

Die maximale Anzahl von Iterationen in Newtons Methode zur Approximation der Posterior-Verteilung während der Vorhersage. Kleinere Werte reduzieren die Rechenzeit auf Kosten schlechterer Ergebnisse.

warm_startbool, Standard=False

Wenn Warm-Starts aktiviert sind, wird die Lösung der letzten Newton-Iteration zur Laplace-Approximation des Posterior-Modus als Initialisierung für den nächsten Aufruf von _posterior_mode() verwendet. Dies kann die Konvergenz beschleunigen, wenn _posterior_mode mehrmals für ähnliche Probleme wie bei der Hyperparameter-Optimierung aufgerufen wird. Siehe Glossar.

copy_X_trainbool, Standardwert=True

Wenn True, wird eine persistente Kopie der Trainingsdaten im Objekt gespeichert. Andernfalls wird nur eine Referenz auf die Trainingsdaten gespeichert, was dazu führen kann, dass sich Vorhersagen ändern, wenn die Daten extern modifiziert werden.

random_stateint, RandomState-Instanz oder None, default=None

Bestimmt die Zufallszahlengenerierung, die zur Initialisierung der Zentren verwendet wird. Übergeben Sie eine Ganzzahl für reproduzierbare Ergebnisse über mehrere Funktionsaufrufe hinweg. Siehe Glossar.

multi_class{„one_vs_rest“, „one_vs_one“}, Standardwert=„one_vs_rest“

Gibt an, wie Mehrklassen-Klassifizierungsprobleme behandelt werden. Unterstützt werden „one_vs_rest“ und „one_vs_one“. Bei „one_vs_rest“ wird für jede Klasse ein binärer Gaußscher Prozessklassifikator angepasst, der trainiert wird, diese Klasse von den übrigen zu trennen. Bei „one_vs_one“ wird für jedes Klassenpaar ein binärer Gaußscher Prozessklassifikator angepasst, der trainiert wird, diese beiden Klassen zu trennen. Die Vorhersagen dieser binären Prädiktoren werden zu Mehrklassen-Vorhersagen kombiniert. Beachten Sie, dass „one_vs_one“ keine Wahrscheinlichkeitsschätzungen unterstützt.

n_jobsint, default=None

Die Anzahl der Jobs, die für die Berechnung verwendet werden: Die angegebenen Mehrklassenprobleme werden parallel berechnet. None bedeutet 1, es sei denn, Sie befinden sich in einem joblib.parallel_backend-Kontext. -1 bedeutet, alle Prozessoren zu verwenden. Siehe Glossar für weitere Details.

Attribute:
base_estimator_Estimator-Instanz

Die Estimator-Instanz, die die Likelihood-Funktion unter Verwendung der beobachteten Daten definiert.

kernel_Kernel-Instanz

Gibt den Kernel des Basis-Estimators zurück.

log_marginal_likelihood_value_float

Die Log-Marginal-Likelihood von self.kernel_.theta

classes_array-ähnlich mit Form (n_classes,)

Eindeutige Klassenbezeichnungen.

n_classes_int

Die Anzahl der Klassen in den Trainingsdaten

n_features_in_int

Anzahl der während des fits gesehenen Merkmale.

Hinzugefügt in Version 0.24.

feature_names_in_ndarray mit Form (n_features_in_,)

Namen der während fit gesehenen Merkmale. Nur definiert, wenn X Merkmalnamen hat, die alle Zeichenketten sind.

Hinzugefügt in Version 1.0.

Siehe auch

GaussianProcessRegressor

Gauß'sche Prozess-Regression (GPR).

Referenzen

Beispiele

>>> from sklearn.datasets import load_iris
>>> from sklearn.gaussian_process import GaussianProcessClassifier
>>> from sklearn.gaussian_process.kernels import RBF
>>> X, y = load_iris(return_X_y=True)
>>> kernel = 1.0 * RBF(1.0)
>>> gpc = GaussianProcessClassifier(kernel=kernel,
...         random_state=0).fit(X, y)
>>> gpc.score(X, y)
0.9866...
>>> gpc.predict_proba(X[:2,:])
array([[0.83548752, 0.03228706, 0.13222543],
       [0.79064206, 0.06525643, 0.14410151]])

Zum Vergleich des GaussianProcessClassifier mit anderen Klassifikatoren siehe: Plot classification probability.

fit(X, y)[Quelle]#

Passt das Gaußsche Prozess-Klassifizierungsmodell an.

Parameter:
Xarray-ähnlich mit Form (n_samples, n_features) oder Liste von Objekten

Feature-Vektoren oder andere Darstellungen von Trainingsdaten.

yarray-like von Form (n_samples,)

Zielwerte, müssen binär sein.

Gibt zurück:
selfobject

Gibt eine Instanz von self zurück.

get_metadata_routing()[Quelle]#

Holt das Metadaten-Routing dieses Objekts.

Bitte prüfen Sie im Benutzerhandbuch, wie der Routing-Mechanismus funktioniert.

Gibt zurück:
routingMetadataRequest

Ein MetadataRequest, der Routing-Informationen kapselt.

get_params(deep=True)[Quelle]#

Holt Parameter für diesen Schätzer.

Parameter:
deepbool, default=True

Wenn True, werden die Parameter für diesen Schätzer und die enthaltenen Unterobjekte, die Schätzer sind, zurückgegeben.

Gibt zurück:
paramsdict

Parameternamen, zugeordnet ihren Werten.

latent_mean_and_variance(X)[Quelle]#

Berechnet den Mittelwert und die Varianz der latenten Funktion.

Basierend auf Algorithmus 3.2 von [RW2006] gibt diese Funktion den latenten Mittelwert (Zeile 4) und die Varianz (Zeile 6) des Gaußschen Prozess-Klassifizierungsmodells zurück.

Beachten Sie, dass diese Funktion nur für binäre Klassifizierung unterstützt wird.

Hinzugefügt in Version 1.7.

Parameter:
Xarray-ähnlich mit Form (n_samples, n_features) oder Liste von Objekten

Abfragepunkte, an denen der GP für die Klassifizierung ausgewertet wird.

Gibt zurück:
latent_meanarray-ähnlich mit Form (n_samples,)

Mittelwert der latenten Funktionswerte an den Abfragepunkten.

latent_vararray-ähnlich mit Form (n_samples,)

Varianz der latenten Funktionswerte an den Abfragepunkten.

log_marginal_likelihood(theta=None, eval_gradient=False, clone_kernel=True)[Quelle]#

Gibt die Log-Marginal-Likelihood von theta für Trainingsdaten zurück.

Im Fall von Mehrklassenklassifizierung werden die mittleren Log-Marginal-Likelihoods der One-vs-Rest-Klassifikatoren zurückgegeben.

Parameter:
thetaarray-ähnlich mit Form (n_kernel_params,), Standardwert=None

Kernel-Hyperparameter, für die die Log-Marginal-Likelihood ausgewertet wird. Im Fall von Mehrklassenklassifizierung kann theta die Hyperparameter des zusammengesetzten Kernels oder eines einzelnen Kernels sein. Im letzteren Fall werden allen individuellen Kernels die gleichen Theta-Werte zugewiesen. Wenn None, wird die vorberechnete Log-Marginal-Likelihood von self.kernel_.theta zurückgegeben.

eval_gradientbool, Standardwert=False

Wenn True, wird zusätzlich der Gradient der Log-Marginal-Likelihood bezüglich der Kernel-Hyperparameter an der Position theta zurückgegeben. Beachten Sie, dass die Gradientenberechnung für nicht-binäre Klassifizierung nicht unterstützt wird. Wenn True, darf theta nicht None sein.

clone_kernelbool, Standardwert=True

Wenn True, wird das Kernel-Attribut kopiert. Wenn False, wird das Kernel-Attribut modifiziert, was jedoch zu einer Leistungsverbesserung führen kann.

Gibt zurück:
log_likelihoodfloat

Log-Marginal-Likelihood von theta für Trainingsdaten.

log_likelihood_gradientndarray mit Form (n_kernel_params,), optional

Gradient der Log-Marginal-Likelihood bezüglich der Kernel-Hyperparameter an der Position theta. Nur zurückgegeben, wenn eval_gradient True ist.

predict(X)[Quelle]#

Führt die Klassifizierung auf einem Array von Testvektoren X durch.

Parameter:
Xarray-ähnlich mit Form (n_samples, n_features) oder Liste von Objekten

Abfragepunkte, an denen der GP für die Klassifizierung ausgewertet wird.

Gibt zurück:
Cndarray der Form (n_samples,)

Vorhergesagte Zielwerte für X, Werte stammen aus classes_.

predict_proba(X)[Quelle]#

Gibt Wahrscheinlichkeitsschätzungen für den Testvektor X zurück.

Parameter:
Xarray-ähnlich mit Form (n_samples, n_features) oder Liste von Objekten

Abfragepunkte, an denen der GP für die Klassifizierung ausgewertet wird.

Gibt zurück:
Carray-like der Form (n_samples, n_classes)

Gibt die Wahrscheinlichkeit der Stichproben für jede Klasse im Modell zurück. Die Spalten entsprechen den Klassen in sortierter Reihenfolge, wie sie im Attribut classes_ erscheinen.

score(X, y, sample_weight=None)[Quelle]#

Gibt die Genauigkeit für die bereitgestellten Daten und Bezeichnungen zurück.

Bei der Multi-Label-Klassifizierung ist dies die Subset-Genauigkeit, eine strenge Metrik, da für jede Stichprobe verlangt wird, dass jede Label-Menge korrekt vorhergesagt wird.

Parameter:
Xarray-like der Form (n_samples, n_features)

Teststichproben.

yarray-like der Form (n_samples,) oder (n_samples, n_outputs)

Wahre Bezeichnungen für X.

sample_weightarray-like der Form (n_samples,), Standardwert=None

Stichprobengewichte.

Gibt zurück:
scorefloat

Mittlere Genauigkeit von self.predict(X) in Bezug auf y.

set_params(**params)[Quelle]#

Setzt die Parameter dieses Schätzers.

Die Methode funktioniert sowohl bei einfachen Schätzern als auch bei verschachtelten Objekten (wie Pipeline). Letztere haben Parameter der Form <component>__<parameter>, so dass es möglich ist, jede Komponente eines verschachtelten Objekts zu aktualisieren.

Parameter:
**paramsdict

Schätzer-Parameter.

Gibt zurück:
selfestimator instance

Schätzer-Instanz.

set_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') GaussianProcessClassifier[Quelle]#

Konfiguriert, ob Metadaten für die score-Methode angefordert werden sollen.

Beachten Sie, dass diese Methode nur relevant ist, wenn dieser Schätzer als Unter-Schätzer innerhalb eines Meta-Schätzers verwendet wird und Metadaten-Routing mit enable_metadata_routing=True aktiviert ist (siehe sklearn.set_config). Bitte lesen Sie das Benutzerhandbuch, um zu erfahren, wie der Routing-Mechanismus funktioniert.

Die Optionen für jeden Parameter sind

  • True: Metadaten werden angefordert und, falls vorhanden, an score übergeben. Die Anforderung wird ignoriert, wenn keine Metadaten vorhanden sind.

  • False: Metadaten werden nicht angefordert und der Meta-Schätzer übergibt sie nicht an score.

  • None: Metadaten werden nicht angefordert und der Meta-Schätzer löst einen Fehler aus, wenn der Benutzer sie bereitstellt.

  • str: Metadaten sollten mit diesem Alias an den Meta-Schätzer übergeben werden und nicht mit dem ursprünglichen Namen.

Der Standardwert (sklearn.utils.metadata_routing.UNCHANGED) behält die bestehende Anforderung bei. Dies ermöglicht es Ihnen, die Anforderung für einige Parameter zu ändern und für andere nicht.

Hinzugefügt in Version 1.3.

Parameter:
sample_weightstr, True, False, oder None, Standardwert=sklearn.utils.metadata_routing.UNCHANGED

Metadaten-Routing für den Parameter sample_weight in score.

Gibt zurück:
selfobject

Das aktualisierte Objekt.