sklearn.metrics.r2_score
函数是 Scikit-learn 中的一个评估回归模型性能的指标。该指标表示模型对目标变量的解释程度,可用于衡量模型的拟合度。
使用方法如下:
首先导入相关库:
from sklearn.metrics import r2_score
接着,计算模型的拟合度:
r2_score(y_true, y_pred, sample_weight=None, multioutput='uniform_average')
其中,y_true
是目标变量的真实值,y_pred
是回归器预测的值。sample_weight
是可选参数,用于给每个样本赋予特定的权重,这在非均等样本问题中很有用。multioutput
参数指定了对多输出问题的处理方式。
下面给出两个例子来说明如何使用该函数:
- 我们首先使用随机生成的数据,训练一个线性回归模型,并计算 R2 分数:
from sklearn.linear_model import LinearRegression
import numpy as np
# 创建随机数据
X = np.random.random((100, 1))
y = 2 * X.squeeze() + np.random.random(100)
# 训练线性回归模型
lr = LinearRegression().fit(X, y)
# 预测结果
y_pred = lr.predict(X)
# 计算 R2 分数
r2 = r2_score(y, y_pred)
print("R^2 分数为:", r2)
输出:
R^2 分数为: 0.7958570342845481
这里用 numpy
库中的 random
方法生成了 $100$ 个浮点数,然后对这些数进行一定的变换得到了目标变量 y
,最终使用 LinearRegression
类训练了一个线性回归模型,然后计算了 R2 分数。
- 我们现在考虑多输出问题,即预测多个目标变量的情况。使用相同的方式创建数据,然后训练一个多元回归模型:
from sklearn.linear_model import LinearRegression
# 创建随机数据
X = np.random.random((100, 3))
y = np.dot(X, np.array([1, -2, 3])) + np.random.random((100,))
# 训练多元回归模型
lr = LinearRegression().fit(X, y)
# 预测多个目标变量
y_pred = lr.predict(X)
# 计算 R2 分数
r2 = r2_score(y, y_pred, multioutput='variance_weighted')
print("R^2 分数为:", r2)
multioutput
参数被设置为 variance_weighted
,这是多元回归模型的一种常见做法。输出:
R^2 分数为: 0.8229666556983244
在这个例子中,我们使用三个随机数作为特征,然后生成一个实数,作为回归目标变量。使用 LinearRegression
类训练多元回归模型,然后计算 R2 分数。在这个例子中,由于我们有多个目标变量,因此需要将 multioutput
参数设置为 'variance_weighted'
。