Почему мое значение R ^ 2 на python дает мне отрицательное целое число в качестве вывода?

Я пытаюсь просто вычислить значение 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)
from sklearn import metrics не делает доступным имя функции r2_score - metrics.r2_score возможно, но функция, которую вы вызываете, не исходит из этого импорта. Пожалуйста, отредактируйте код, чтобы сделать его минимально воспроизводимым примером.
kaya3 24.12.2020 19:32

r2_score может быть отрицательным

SiAce 24.12.2020 19:32

Справедливое замечание @SiAce. Однако, насколько я понимаю, R2 должен находиться только между 0 и 1. Нет ли нижней границы для отрицательных значений?

JVDeasyas123 24.12.2020 19:43

Не обманывайтесь квадратом (который действительно вводит в заблуждение). По определению R^2 = 1 - \frac{RSS}{TSS}, что не гарантирует, что R^2 неотрицательно.

SiAce 24.12.2020 19:59
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
4
617
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это не симметричная функция.

В отличие от большинства других оценок, оценка R^2 может быть отрицательной (на самом деле она не обязательно должна быть квадратом величины R). Наилучшая возможная оценка — 1,0, и она может быть отрицательной (поскольку модель может быть сколь угодно хуже).

Другие вопросы по теме