要使用 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}")
关键说明:
均方误差 (MSE):
- 计算公式:$ \text{MSE} = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 $
- 值域:$ [0, +\infty) $,越小越好
- 对异常值敏感(平方会放大误差)
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_true
和y_pred
维度相同 - 对于分类问题,请使用其他指标(如准确率、F1分数)
- R²为负时需检查数据或模型问题
- 建议同时报告多个评估指标以获得全面认知
示例输出:
均方误差: 0.3750
R²分数: 0.9486
测试集均方误差: 105.4272
测试集R²分数: 0.9034