r2_score#
- sklearn.metrics.r2_score(y_true, y_pred, *, sample_weight=None, multioutput='uniform_average', force_finite=True)[source]#
R² (Bestimmtheitsmaß) Regressions-Score-Funktion.
Der bestmögliche Score ist 1.0 und kann negativ sein (da das Modell beliebig schlechter sein kann). Im Allgemeinen Fall, wenn das wahre y nicht konstant ist, würde ein konstantes Modell, das immer den durchschnittlichen y vorhersagt, unabhängig von den Eingabemerkmalen, einen \(R^2\)-Score von 0.0 erzielen.
Im besonderen Fall, wenn
y_truekonstant ist, ist der \(R^2\)-Score nicht endlich: er ist entwederNaN(perfekte Vorhersagen) oder-Inf(unvollkommene Vorhersagen). Um zu verhindern, dass solche nicht-endlichen Zahlen höherwertige Experimente wie eine Grid-Search-Kreuzvalidierung verunreinigen, werden diese Fälle standardmäßig durch 1.0 (perfekte Vorhersagen) bzw. 0.0 (unvollkommene Vorhersagen) ersetzt. Sie könnenforce_finiteaufFalsesetzen, um diese Korrektur zu verhindern.Hinweis: Wenn die Vorhersageresiduale den Mittelwert Null haben, ist der \(R^2\)-Score identisch mit dem
Erklärter Varianz Score.Mehr dazu im Benutzerhandbuch.
- Parameter:
- y_truearray-ähnlich mit Form (n_samples,) oder (n_samples, n_outputs)
Wahrheitsgetreue (korrekte) Zielwerte.
- y_predarray-ähnlich mit Form (n_samples,) oder (n_samples, n_outputs)
Geschätzte Zielwerte.
- sample_weightarray-like der Form (n_samples,), Standardwert=None
Stichprobengewichte.
- multioutput{‘raw_values’, ‘uniform_average’, ‘variance_weighted’}, array-like von Form (n_outputs,) oder None, Standardwert=’uniform_average’
Definiert die Aggregation mehrerer Ausgabe-Scores. Ein Array-ähnlicher Wert definiert die Gewichte, die zur Mittelung der Scores verwendet werden. Standard ist "uniform_average".
- ‘raw_values’
Gibt bei Multi-Output-Eingaben einen vollständigen Satz von Scores zurück.
- ‘uniform_average’
Scores aller Ausgaben werden mit einheitlichem Gewicht gemittelt.
- ‘variance_weighted’
Die Scores aller Ausgaben werden gemittelt, gewichtet mit den Varianzen jeder einzelnen Ausgabe.
Geändert in Version 0.19: Standardwert von multioutput ist 'uniform_average'.
- force_finitebool, default=True
Flag, das angibt, ob
NaN- und-Inf-Scores, die aus konstanten Daten resultieren, durch reelle Zahlen (1.0bei perfekter Vorhersage,0.0sonst) ersetzt werden sollen. Standard istTrue, eine praktische Einstellung für Hyperparameter-Suchverfahren (z. B. Grid-Search-Kreuzvalidierung).Hinzugefügt in Version 1.1.
- Gibt zurück:
- zfloat oder ndarray von Floats
Der \(R^2\)-Score oder ein Array von Scores, wenn 'multioutput' 'raw_values' ist.
Anmerkungen
Dies ist keine symmetrische Funktion.
Im Gegensatz zu den meisten anderen Scores kann der \(R^2\)-Score negativ sein (er muss nicht tatsächlich das Quadrat einer Größe R sein).
Diese Metrik ist für einzelne Stichproben nicht gut definiert und gibt NaN zurück, wenn n_samples kleiner als zwei ist.
Referenzen
Beispiele
>>> from sklearn.metrics import r2_score >>> y_true = [3, -0.5, 2, 7] >>> y_pred = [2.5, 0.0, 2, 8] >>> r2_score(y_true, y_pred) 0.948... >>> y_true = [[0.5, 1], [-1, 1], [7, -6]] >>> y_pred = [[0, 2], [-1, 2], [8, -5]] >>> r2_score(y_true, y_pred, ... multioutput='variance_weighted') 0.938... >>> y_true = [1, 2, 3] >>> y_pred = [1, 2, 3] >>> r2_score(y_true, y_pred) 1.0 >>> y_true = [1, 2, 3] >>> y_pred = [2, 2, 2] >>> r2_score(y_true, y_pred) 0.0 >>> y_true = [1, 2, 3] >>> y_pred = [3, 2, 1] >>> r2_score(y_true, y_pred) -3.0 >>> y_true = [-2, -2, -2] >>> y_pred = [-2, -2, -2] >>> r2_score(y_true, y_pred) 1.0 >>> r2_score(y_true, y_pred, force_finite=False) nan >>> y_true = [-2, -2, -2] >>> y_pred = [-2, -2, -2 + 1e-8] >>> r2_score(y_true, y_pred) 0.0 >>> r2_score(y_true, y_pred, force_finite=False) -inf
Galeriebeispiele#
Auswirkung der Transformation der Ziele in einem Regressionsmodell
Versagen des maschinellen Lernens bei der Inferenz kausaler Effekte
Gewöhnliche kleinste Quadrate und Ridge Regression