GaussianProcessRegressor#

class sklearn.gaussian_process.GaussianProcessRegressor(kernel=None, *, alpha=1e-10, optimizer='fmin_l_bfgs_b', n_restarts_optimizer=0, normalize_y=False, copy_X_train=True, n_targets=None, random_state=None)[source]#

Gauß'sche Prozess-Regression (GPR).

Die Implementierung basiert auf Algorithmus 2.1 von [RW2006].

Zusätzlich zur Standard-API für scikit-learn-Schätzer erlaubt GaussianProcessRegressor

  • Vorhersagen ohne vorheriges Anpassen (basierend auf dem GP-Prior)

  • bietet eine zusätzliche Methode sample_y(X), die Stichproben aus dem GPR (Prior oder Posterior) an gegebenen Eingaben auswertet

  • stellt eine Methode log_marginal_likelihood(theta) zur Verfügung, die extern für andere Arten der Hyperparameter-Auswahl verwendet werden kann, z. B. mittels Markov-Ketten-Monte-Carlo.

Um den Unterschied zwischen einem Punkteschätzungsansatz und einem eher Bayes'schen Modellierungsansatz zu verstehen, siehe das Beispiel mit dem Titel Vergleich von Kernel-Ridge- und Gaußprozess-Regression.

Lesen Sie mehr im Benutzerhandbuch.

Hinzugefügt in Version 0.18.

Parameter:
kernelKernel-Instanz, Standard=None

Der Kernel, der die Kovarianzfunktion des GP spezifiziert. Wenn None übergeben wird, wird der Kernel ConstantKernel(1.0, constant_value_bounds="fixed") * RBF(1.0, length_scale_bounds="fixed") als Standard verwendet. Beachten Sie, dass die Kernel-Hyperparameter während des Fits optimiert werden, es sei denn, die Grenzen sind als "fixed" markiert.

alphafloat oder ndarray der Form (n_samples,), Standard=1e-10

Wert, der zur Diagonalen der Kernelmatrix während des Fits hinzugefügt wird. Dies kann potenzielle numerische Probleme während des Fits verhindern, indem sichergestellt wird, dass die berechneten Werte eine positiv-definitive Matrix bilden. Es kann auch als die Varianz zusätzlicher Gaußscher Messrauschen bei den Trainingsbeobachtungen interpretiert werden. Beachten Sie, dass dies anders ist, als die Verwendung eines WhiteKernel. Wenn ein Array übergeben wird, muss es die gleiche Anzahl von Einträgen wie die für den Fit verwendeten Daten haben und dient als datenpunktabhängige Rauschpegel. Das Zulassen der direkten Angabe des Rauschpegels als Parameter dient hauptsächlich der Bequemlichkeit und Konsistenz mit Ridge. Ein Beispiel, das zeigt, wie der Alpha-Parameter die Rauschvarianz bei Gaußprozess-Regression steuert, finden Sie unter Gaußprozess-Regression: Einführendes Beispiel.

optimizer"fmin_l_bfgs_b", aufrufbar oder None, Standard="fmin_l_bfgs_b"

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

def optimizer(obj_func, initial_theta, bounds):
    # * 'obj_func': the objective function to be minimized, which
    #   takes the hyperparameters theta as a 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 L-BFGS-B-Algorithmus von scipy.optimize.minimize verwendet. Wenn None übergeben wird, bleiben die Parameter des Kernels fixiert. Verfügbare interne Optimierer sind: {'fmin_l_bfgs_b'}.

n_restarts_optimizerint, Standard=0

Die Anzahl der Neustarts des Optimierers zur Suche nach den Kernel-Parametern, die die logarithmische marginale Likelihood maximieren. Der erste Lauf des Optimierers erfolgt von den anfänglichen Kernel-Parametern, die restlichen (falls vorhanden) von zufällig log-uniformen Thetas aus dem Raum der erlaubten Theta-Werte. Wenn größer als 0, müssen alle Grenzen endlich sein. Beachten Sie, dass n_restarts_optimizer == 0 einen Lauf impliziert.

normalize_ybool, Standard=False

Ob die Zielwerte y durch Entfernen des Mittels und Skalieren auf Einheitsvarianz normalisiert werden sollen oder nicht. Dies wird für Fälle empfohlen, in denen Priors mit Nullmittelwert und Einheitsvarianz verwendet werden. Beachten Sie, dass in dieser Implementierung die Normalisierung rückgängig gemacht wird, bevor die GP-Vorhersagen zurückgegeben werden.

Geändert in Version 0.23.

copy_X_trainbool, Standard=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.

n_targetsint, Standard=None

Die Anzahl der Dimensionen der Zielwerte. Wird verwendet, um die Anzahl der Ausgaben beim Ziehen von Stichproben aus den Prior-Verteilungen zu bestimmen (d.h. Aufruf von sample_y vor fit). Dieser Parameter wird ignoriert, sobald fit aufgerufen wurde.

Hinzugefügt in Version 1.3.

random_stateint, RandomState-Instanz oder None, default=None

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

Attribute:
X_train_array-like der Form (n_samples, n_features) oder Liste von Objekten

Feature-Vektoren oder andere Darstellungen von Trainingsdaten (auch für Vorhersagen erforderlich).

y_train_array-like der Form (n_samples,) oder (n_samples, n_targets)

Zielwerte in Trainingsdaten (auch für Vorhersagen erforderlich).

kernel_Kernel-Instanz

Der für die Vorhersage verwendete Kernel. Die Struktur des Kernels ist dieselbe wie die übergebene, jedoch mit optimierten Hyperparametern.

L_array-like der Form (n_samples, n_samples)

Unterdreieckige Cholesky-Zerlegung des Kernels in X_train_.

alpha_array-like der Form (n_samples,)

Duale Koeffizienten von Trainingsdatenpunkten im Kernelraum.

log_marginal_likelihood_value_float

Die logarithmische marginale Likelihood von self.kernel_.theta.

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

GaussianProcessClassifier

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

Referenzen

Beispiele

>>> from sklearn.datasets import make_friedman2
>>> from sklearn.gaussian_process import GaussianProcessRegressor
>>> from sklearn.gaussian_process.kernels import DotProduct, WhiteKernel
>>> X, y = make_friedman2(n_samples=500, noise=0, random_state=0)
>>> kernel = DotProduct() + WhiteKernel()
>>> gpr = GaussianProcessRegressor(kernel=kernel,
...         random_state=0).fit(X, y)
>>> gpr.score(X, y)
0.3680...
>>> gpr.predict(X[:2,:], return_std=True)
(array([653.0, 592.1]), array([316.6, 316.6]))
fit(X, y)[source]#

Trainiert das Gaußprozess-Regressionsmodell.

Parameter:
Xarray-like der Form (n_samples, n_features) oder Liste von Objekten

Feature-Vektoren oder andere Darstellungen von Trainingsdaten.

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

Zielwerte.

Gibt zurück:
selfobject

Instanz der Klasse GaussianProcessRegressor.

get_metadata_routing()[source]#

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)[source]#

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.

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

Gibt die logarithmische marginale Likelihood von Theta für Trainingsdaten zurück.

Parameter:
thetaarray-like der Form (n_kernel_params,) Standard=None

Kernel-Hyperparameter, für die die logarithmische marginale Likelihood ausgewertet wird. Wenn None, wird die vorab berechnete logarithmische marginale Likelihood von self.kernel_.theta zurückgegeben.

eval_gradientbool, Standardwert=False

Wenn True, wird zusätzlich der Gradient der logarithmischen marginalen Likelihood in Bezug auf die Kernel-Hyperparameter an der Position theta zurückgegeben. Wenn True, darf theta nicht None sein.

clone_kernelbool, Standard=True

Wenn True, wird das Kernel-Attribut kopiert. Wenn False, wird das Kernel-Attribut modifiziert, kann aber zu einer Leistungssteigerung führen.

Gibt zurück:
log_likelihoodfloat

Logarithmische marginale Likelihood von theta für Trainingsdaten.

log_likelihood_gradientndarray der Form (n_kernel_params,), optional

Gradient der logarithmischen marginalen Likelihood in Bezug auf die Kernel-Hyperparameter an der Position theta. Wird nur zurückgegeben, wenn eval_gradient True ist.

predict(X, return_std=False, return_cov=False)[source]#

Vorhersagen mit dem Gaußprozess-Regressionsmodell.

Wir können auch basierend auf einem ungefitteten Modell vorhersagen, indem wir den GP-Prior verwenden. Zusätzlich zum Mittelwert der Vorhersageverteilung werden optional auch deren Standardabweichung (return_std=True) oder Kovarianz (return_cov=True) zurückgegeben. Beachten Sie, dass höchstens eine der beiden angefordert werden kann.

Parameter:
Xarray-like der Form (n_samples, n_features) oder Liste von Objekten

Abfragepunkte, an denen der GP ausgewertet wird.

return_stdbool, Standard=False

Wenn True, wird die Standardabweichung der Vorhersageverteilung an den Abfragepunkten zusammen mit dem Mittelwert zurückgegeben.

return_covbool, Standard=False

Wenn True, wird die Kovarianz der gemeinsamen Vorhersageverteilung an den Abfragepunkten zusammen mit dem Mittelwert zurückgegeben.

Gibt zurück:
y_meanndarray der Form (n_samples,) oder (n_samples, n_targets)

Mittelwert der Vorhersageverteilung an den Abfragepunkten.

y_stdndarray der Form (n_samples,) oder (n_samples, n_targets), optional

Standardabweichung der Vorhersageverteilung an den Abfragepunkten. Nur zurückgegeben, wenn return_std True ist.

y_covndarray der Form (n_samples, n_samples) oder (n_samples, n_samples, n_targets), optional

Kovarianz der gemeinsamen Vorhersageverteilung an den Abfragepunkten. Nur zurückgegeben, wenn return_cov True ist.

sample_y(X, n_samples=1, random_state=0)[source]#

Zieht Stichproben aus dem Gaußprozess und wertet sie an X aus.

Parameter:
Xarray-ähnlich der Form (n_samples_X, n_features) oder Liste von Objekten

Abfragepunkte, an denen der GP ausgewertet wird.

n_samplesint, Standard=1

Anzahl der aus dem Gaußprozess pro Abfragepunkt gezogenen Stichproben.

random_stateint, RandomState-Instanz oder None, Standard=0

Bestimmt die Zufallszahlengenerierung zum zufälligen Ziehen von Stichproben. Übergeben Sie eine Ganzzahl für reproduzierbare Ergebnisse über mehrere Funktionsaufrufe hinweg. Siehe Glossar.

Gibt zurück:
y_samplesndarray der Form (n_samples_X, n_samples), oder (n_samples_X, n_targets, n_samples)

Werte von n_samples Stichproben, die aus dem Gaußprozess gezogen und an den Abfragepunkten ausgewertet wurden.

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

Gibt den Bestimmtheitskoeffizienten auf Testdaten zurück.

Der Bestimmtheitskoeffizient, \(R^2\), ist definiert als \((1 - \frac{u}{v})\), wobei \(u\) die Summe der quadrierten Residuen ist ((y_true - y_pred)** 2).sum() und \(v\) die Summe der quadrierten Abweichungen vom Mittelwert ist ((y_true - y_true.mean()) ** 2).sum(). Der bestmögliche Wert ist 1,0 und er kann negativ sein (da das Modell beliebig schlechter sein kann). Ein konstantes Modell, das immer den Erwartungswert von y vorhersagt, unabhängig von den Eingabemerkmalen, würde einen \(R^2\)-Score von 0,0 erzielen.

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

Teststichproben. Für einige Schätzer kann dies eine vorab berechnete Kernelmatrix oder eine Liste von generischen Objekten sein, stattdessen mit der Form (n_samples, n_samples_fitted), wobei n_samples_fitted die Anzahl der für die Anpassung des Schätzers verwendeten Stichproben ist.

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

Wahre Werte für X.

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

Stichprobengewichte.

Gibt zurück:
scorefloat

\(R^2\) von self.predict(X) bezogen auf y.

Anmerkungen

Der \(R^2\)-Score, der beim Aufruf von score auf einem Regressor verwendet wird, nutzt multioutput='uniform_average' ab Version 0.23, um konsistent mit dem Standardwert von r2_score zu bleiben. Dies beeinflusst die score-Methode aller Multi-Output-Regressoren (mit Ausnahme von MultiOutputRegressor).

set_params(**params)[source]#

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_predict_request(*, return_cov: bool | None | str = '$UNCHANGED$', return_std: bool | None | str = '$UNCHANGED$') GaussianProcessRegressor[source]#

Konfiguriert, ob Metadaten für die predict-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 predict weitergegeben. Die Anforderung wird ignoriert, wenn keine Metadaten bereitgestellt werden.

  • False: Metadaten werden nicht angefordert und die Meta-Schätzung übergibt sie nicht an predict.

  • 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:
return_covstr, True, False, oder None, Standard=sklearn.utils.metadata_routing.UNCHANGED

Metadaten-Routing für den Parameter return_cov in predict.

return_stdstr, True, False oder None, Standard=sklearn.utils.metadata_routing.UNCHANGED

Metadaten-Routing für den Parameter return_std in predict.

Gibt zurück:
selfobject

Das aktualisierte Objekt.

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

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.