How sklearn.metrics.r2_score works



我试图从维基百科实现公式,但结果是不同的。为什么会这样呢?

y_true = np.array([1, 1, 0])
y_pred = np.array([1, 0, 1])
r2 = r2_score(y_true, y_pred)
print(r2)
y_true_mean = statistics.mean(y_true)
r2 = 1 - np.sum((y_true - y_pred) ** 2) / np.sum((y_true - y_true_mean) ** 2)
print(r2)

-1.9999999999999996

0.0

不确定您使用的是什么统计包,但似乎不同的结果源于那里。尝试使用np.mean代替。这给出了与sklearn相同的R2:

import numpy as np
y_true = np.array([1, 1, 0])
y_pred = np.array([1, 0, 1])
y_true_mean = np.mean(y_true)
r2 = 1 - np.sum((y_true - y_pred) ** 2) / np.sum((y_true - y_true_mean) ** 2)
print(r2)

上网试试!

最新更新