醋醋百科网

Good Luck To You!

用Python进行机器学习(9)-回归模型的评估

在上一节我们介绍了分类模型的评估,本节我们介绍一下回归模型的评估,对于回归模型的评估指标,常用的指标有:

第一个是均方误差,英文是Mean Squared Error,简写是MSE,它是对每个预测值减去实际值的平均数然后取平方的和再除以总数。

第二个是决定系数,英文是Coefficient of Determination,简写是R^2,它衡量的是回归模型的拟合优度,它的取值范围在0到1之间,越接近1则说明拟合的越好,越接近0则说明拟合的越差。需要说明的是,如果模型的预测结果特别差,是有可能计算出负数的。

我们可以通过下面的图来直观的看一下回归数据的拟合情况:

在上面的图中,假设蓝色的点是真实的数据情况,红色和绿色都是对应的回归模型,直观上看红色的线要比绿色的线能够更好的拟合结果数据,这个只是直观感受,接下来我们写一段代码用MSE和R^2这两个参数来描述,代码如下:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_regression
from sklearn.model_selection import cross_validate
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score

# 生成自定义回归数据
X, y = make_regression(
    n_samples=1000, # 样本数量
    n_features=10, # 特征数量
    n_informative=5, # 有意义的特征数量
    noise=0.5, # 噪声水平
    random_state=42 # 随机种子
)

# 创建回归模型
regressor = LinearRegression()

# 定义要计算的指标
scoring = ['neg_mean_squared_error', 'r2']

# 进行交叉验证,并计算指定的指标
cv_results = cross_validate(regressor, X, y, cv=5, scoring=scoring, return_train_score=False)

# 提取各项指标的结果
mse_scores = -cv_results['test_neg_mean_squared_error']
r2_scores = cv_results['test_r2']

# 打印各项指标的平均得分
print(f"训练时间: {cv_results['fit_time']}")
print(f"预测时间: {cv_results['score_time']}")
print(f"均方误差: {mse_scores}")
print(f"决定系数 (R^2): {r2_scores}")

# 可视化交叉验证结果
metrics = ['Mean Squared Error', 'R^2 Score']
mean_scores = [np.mean(mse_scores), np.mean(r2_scores)]

plt.figure(figsize=(10, 6))
bars = plt.bar(metrics, mean_scores)

plt.ylabel('Score')
plt.title('Cross-validation Results for Regression')

# 添加数值标签
for bar in bars:
    height = bar.get_height()
    plt.annotate('{:.2f}'.format(height),
                 xy=(bar.get_x() + bar.get_width() / 2, height),
                 xytext=(0, 3),  # 3 points vertical offset
                 textcoords="offset points",
                 ha='center', va='bottom')

plt.show()

上面代码中我们使用线性回归的方式,由于代码里注释已经比较清晰了,这里就不过多赘述了,直接看一下控制台的输出:

当然也有一个可视化的展示如下:

值得说明的是,对于MSE还有很多的变化,比如RMSE,MAE,MAPE,MSLE等,但是基本思想变化并不大,因此就不展开介绍了,感兴趣的朋友可以自行搜索。

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言