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_true konstant ist, ist der \(R^2\)-Score nicht endlich: er ist entweder NaN (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önnen force_finite auf False setzen, 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.0 bei perfekter Vorhersage, 0.0 sonst) ersetzt werden sollen. Standard ist True, 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