Rsquared in Sklearn Python VS MLmetrics R



我已经训练了一些回归模型(Lasso、随机森林和SVR(。我试图在Python和R中评估我的结果。在Python中,Sklearn显示了使用的Rsquare数学公式,而R中的包MLmetrics没有显示使用的公式。你知道我在哪里可以找到这些信息吗?两种语言的结果不同,我想了解原因。我正在用python对我的时间序列进行滚动训练,然后我使用python和R来评估我的结果。以下是一个月到4个月预测的Rsquare的差异——对于python:0.136、0.021、-0.164、-0.173——对于R:0.570、0.536、0.457、0.450。我的直觉是,R的数学公式只给出0到1之间的值。提前谢谢。

要长时间键入注释,两个计算都是正确的,

来自mlmetrics:

R2_Score <- function(y_pred, y_true) {
R2_Score <- 1 - sum((y_true - y_pred)^2) / sum((y_true - mean(y_true))^2)
return(R2_Score)
}
y_true = c(3, -0.5, 2, 7)
y_pred = c(2.5, 0.0, 2, 8)
R2_Score(y_pred,y_true)
[1] 0.94860816

来自sklearn

numerator = (weight * (y_true - y_pred) ** 2).sum(axis=0,
dtype=np.float64)
denominator = (weight * (y_true - np.average(
y_true, axis=0, weights=sample_weight)) ** 2).sum(axis=0,
dtype=np.float64)
nonzero_denominator = denominator != 0
nonzero_numerator = numerator != 0
valid_score = nonzero_denominator & nonzero_numerator
output_scores = np.ones([y_true.shape[2]])
output_scores[valid_score] = 1 - (numerator[valid_score] /
denominator[valid_score])

如果我们运行它:

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.9486081370449679

最新更新