Я пытаюсь просто вычислить значение R2
, используя Sklearn function r2_score
, однако, когда я запускаю его в наборе данных ниже (df total N=3,000
), я получаю R2
из -19.46
. Я чувствую, что это должно быть просто, но я не уверен, что может пойти не так.
expected predicted
1 0.0009 0.013639
2 0.0003 0.016178
3 0.0072 0.042318
4 0.0354 0.511545
5 0.0029 0.395005
from sklearn.metrics import r2_score
r2 = r2_score(df['expected'], df['predicted'])
print('r2 score is', r2)
r2_score может быть отрицательным
Справедливое замечание @SiAce. Однако, насколько я понимаю, R2 должен находиться только между 0 и 1. Нет ли нижней границы для отрицательных значений?
Не обманывайтесь квадратом (который действительно вводит в заблуждение). По определению R^2 = 1 - \frac{RSS}{TSS}
, что не гарантирует, что R^2
неотрицательно.
Это не симметричная функция.
В отличие от большинства других оценок, оценка R^2 может быть отрицательной (на самом деле она не обязательно должна быть квадратом величины R). Наилучшая возможная оценка — 1,0, и она может быть отрицательной (поскольку модель может быть сколь угодно хуже).
from sklearn import metrics
не делает доступным имя функцииr2_score
-metrics.r2_score
возможно, но функция, которую вы вызываете, не исходит из этого импорта. Пожалуйста, отредактируйте код, чтобы сделать его минимально воспроизводимым примером.