scikit-learn 中的均方误差 (MSE) 和 R² 评分指标

发布于:2025-08-18 ⋅ 阅读:(18) ⋅ 点赞:(0)

要使用 scikit-learn 中的均方误差 (MSE) 和 R² 评分指标,请按照以下步骤操作:

1. 导入所需函数

from sklearn.metrics import mean_squared_error, r2_score

2. 准备数据

需要两组数据:

  • y_true:真实值(实际观测值)
  • y_pred:预测值(模型输出值)
# 示例数据(替换为实际数据)
y_true = [3, -0.5, 2, 7]    # 实际值
y_pred = [2.5, 0.0, 2, 8]   # 预测值

3. 计算指标

# 计算均方误差 (MSE)
mse = mean_squared_error(y_true, y_pred)
print(f"均方误差: {mse:.4f}")

# 计算R²分数
r2 = r2_score(y_true, y_pred)
print(f"R²分数: {r2:.4f}")

4. 实际应用示例(结合模型)

from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.datasets import make_regression

# 生成示例数据
X, y = make_regression(n_samples=100, n_features=1, noise=10, random_state=42)

# 划分训练集/测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 训练模型
model = LinearRegression()
model.fit(X_train, y_train)

# 预测并评估
y_pred = model.predict(X_test)

print(f"测试集均方误差: {mean_squared_error(y_test, y_pred):.4f}")
print(f"测试集R²分数: {r2_score(y_test, y_pred):.4f}")

关键说明:

  1. 均方误差 (MSE)

    • 计算公式:$ \text{MSE} = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 $
    • 值域:$ [0, +\infty) $,越小越好
    • 对异常值敏感(平方会放大误差)
  2. R²分数 (决定系数)

    • 计算公式:$ R^2 = 1 - \frac{\sum_{i=1}^{n} (y_i - \hat{y}_i)2}{\sum_{i=1}{n} (y_i - \bar{y})^2} $
    • 值域:$ (-\infty, 1] $,最佳值为1
    • 负值表示模型性能差于简单均值预测

注意事项:

  • 确保 y_truey_pred 维度相同
  • 对于分类问题,请使用其他指标(如准确率、F1分数)
  • R²为负时需检查数据或模型问题
  • 建议同时报告多个评估指标以获得全面认知

示例输出:

均方误差: 0.3750
R²分数: 0.9486
测试集均方误差: 105.4272
测试集R²分数: 0.9034

网站公告

今日签到

点亮在社区的每一天
去签到