R-squared是一种衡量回归模型性能的指标,其计算公式为:

其中,SSR是残差平方和,SST是总平方和。

标准代码如下

def r_squared(y_true, y_pred):
    if np.array_equal(y_true, y_pred):
        return 1.0

    y_mean = np.mean(y_true)

    ssr = np.sum((y_true - y_pred) ** 2)

    sst = np.sum((y_true - y_mean) ** 2)

    try:
        r2 = 1 - (ssr / sst)
        if np.isinf(r2):
            return 0.0
        return round(r2, 3)
    except ZeroDivisionError:
        return 0.0

在sklearn库中也有对应的计算方法,可以使用metrics模块中的r2_score函数:

def r_squared(y_true, y_pred):
    from sklearn.metrics import r2_score
    r2 = r2_score(y_true, y_pred)
    return round(float(r2), 3)