• 【scikit-learn基础】--『回归模型评估』之可视化评估


    scikit-learn中,回归模型的可视化评估是一个重要环节。
    它帮助我们理解模型的性能,分析模型的预测能力,以及检查模型是否存在潜在的问题。
    通过可视化评估,我们可以更直观地了解回归模型的效果,而不仅仅依赖于传统的评估指标。

    1. 残差图

    所谓残差,就是实际观测值与预测值之间的差值。

    残差图是指以残差为纵坐标,以任何其他指定的量为横坐标的散点图。
    如果残差图中描绘的点围绕残差等于0的直线上下随机散布,说明回归直线对原观测值的拟合情况良好。反之,则说明回归直线对原观测值的拟合不理想。

    下面做一个简单的线性回归模型,然后绘制残差图。

    from sklearn.datasets import make_regression
    import matplotlib.pyplot as plt
    from sklearn.linear_model import LinearRegression
    from sklearn.metrics import PredictionErrorDisplay
    
    fig, ax = plt.subplots(1, 2)
    fig.set_size_inches(10, 4)
    
    X, y = make_regression(n_samples=100, n_features=1, noise=10)
    ax[0].scatter(X[:, 0], y, marker="o")
    ax[0].set_title("样本数据")
    
    # 初始化最小二乘法线性模型
    reg = LinearRegression()
    # 训练模型
    reg.fit(X, y)
    y_pred = reg.predict(X)
    
    ax[0].plot(X, y_pred, color="red")
    display = PredictionErrorDisplay(y_true=y, y_pred=y_pred)
    ax[1].set_title("残差图")
    display.plot(ax=ax[1])
    
    plt.show()
    

    image.png
    左边是随机生成的样本数据,其中的红线是训练之后拟合的线性模型。
    右边是根据scikit-learn中提供的PredictionErrorDisplay模块生成的残差图

    2. 对比图

    对比图将实际目标值与模型预测值进行对比,直观地展示模型的预测能力。
    通常,我们希望看到实际值预测值沿着一条\(y=x\)的直线分布,这意味着模型预测非常准确。

    下面用一些混乱度高的样本,来看看对比图的效果。

    from sklearn.datasets import make_regression
    import matplotlib.pyplot as plt
    from sklearn.linear_model import LinearRegression
    from sklearn.metrics import PredictionErrorDisplay
    
    fig, ax = plt.subplots(1, 2)
    fig.set_size_inches(12, 6)
    
    # 混乱度高,noise=100
    X, y = make_regression(n_samples=100, n_features=1, noise=100)
    ax[0].scatter(X[:, 0], y, marker="o")
    ax[0].set_title("样本数据")
    
    # 初始化最小二乘法线性模型
    reg = LinearRegression()
    # 训练模型
    reg.fit(X, y)
    y_pred = reg.predict(X)
    
    ax[0].plot(X, y_pred, color="red")
    display = PredictionErrorDisplay(y_true=y, y_pred=y_pred)
    ax[1].set_title("对比图")
    display.plot(ax=ax[1], kind="actual_vs_predicted")
    
    plt.show()
    

    image.png
    原始样本比较混乱,线性模型很难拟合,所以看对比图就可以发现,真实值预测值差别很大。
    越靠近对比图中间那个虚线的点,真实值预测值越接近。

    换一个混乱程度低的样本,再看看对比图的效果。

    # 混乱度 noise=10,比如上面那个示例降10倍
    # 上面代码只改这一行,其它部分代码不用改
    X, y = make_regression(n_samples=100, n_features=1, noise=10)
    

    image.png
    从图中也可以看出,这次的模型拟合效果要好很多。

    3. 总结

    可视化的图形向我们传达了模型预测的准确性、线性假设的满足程度、误差项的独立性以及特征对预测的影响程度等信息,让我们对模型有更深入的了解。

    通过图形化的方式,帮助我们更直观地理解回归模型的性能,发现模型潜在的问题,指导我们改进模型。
    不过,可视化评估虽然直观,但并不能完全替代传统的量化评估指标。
    两者应该相互补充,共同构成对回归模型性能的全面评价。

  • 相关阅读:
    每日一题 901. 股票价格跨度(中等,单调栈)
    通过ElementUi在Vue搭建的项目中实现CRUD
    MySQL分页查询
    Internet Download Manager2022中文版免费下载
    TableUtilCache:针对CSV表格进行的缓存
    一键打包,随时运行,Python3项目虚拟环境一键整合包的制作(Venv)
    Linux exec函数族
    HTTP1.0,1.1,2.0
    堆排序思想分享
    JAVASE语法零基础——Object类
  • 原文地址:https://www.cnblogs.com/wang_yb/p/17989093