手把手教你可视化交叉验证代码,提高模型预测能力

开发 开发工具
本文介绍了如何使用K折交叉验证提高模型预测能力,并对代码进行了可视化。

我们试着利用代码可视化来提高模型预测能力。

比如说,你正在编写一个漂亮清晰的机器学习代码(例如线性回归)。你的代码还不错,首先按照往常一样用 train_test_split 这样的函数将数据集分成「训练集和测试集」两个部分,并加入一些随机因素。你的预测可能稍微欠拟合或过拟合,如下图所示。

欠拟合和过拟合情况下的预测结果

图:欠拟合和过拟合情况下的预测结果

这些结果没有变化。这个时候我们能做什么呢?

正如题目所建议的,在学习了线性回归之后,下一件有趣的事情就是交叉验证了,因为它可以使用 K 折策略(K-Fold strategy)提高模型的预测能力。那 K 折究竟是什么呢?下面我们将用代码对此进行解释。

完整的代码如下:

图:交叉验证的可视化

代码解析:

以上代码可分为 4 个步骤。

1. 加载并分割目标数据集。

加载数据集

图:加载数据集

将该数据集中的目标复制到 y 变量中。如果想看到数据集,请将 print 行的注释符「#」删除。

2. 模型选择

模型选择(LinearRegression())

图:模型选择(LinearRegression())

为简化过程,我们将选择使用线性回归。如果想了解更多,请查看文章《Linear Regression: The Easier Way》。

3. 交叉验证

在 sklearn 中进行交叉验证

图:在 sklearn 中进行交叉验证

这是 sklearn 中的流程,也是一个函数:

  1. cross_val_predict(model, data, target, cv) 

其中,

  • model 是我们选来要进行交叉验证的模型。
  • data 是数据。
  • target 是数据的目标值。
  • cv(可选项)是数据折叠的总次数(K 折)。

在这个流程中,我们不像往常一样将数据集分成训练集和测试集两部分,如下图所示。

训练集(蓝色)和测试集(红色)

图:训练集(蓝色)和测试集(红色)

我们将数据集平均分成 K 个部分(K 折或者 cv)。为了提高预测精度并实现更好地泛化,我们会在较大的数据集中进行模型训练,在较小的数据集上测试。这里,我们把 cv 设置成 6。

图:6 个相同的部分

现在,模型分割的***次迭代如下图所示,其中红色的是测试集,蓝色的是训练集。

图:交叉验证的***次迭代

第二次迭代如下图所示:

图:交叉验证的第二次迭代

以此类推,直到***一次迭代,如下图所示:

图:交叉验证的第六次迭代

4. 使用 Matplotlib 进行数据可视化

图:使用 Matplotlib 进行可视化

为了将结果可视化,我们导入了 matplotlib 库,然后创建一个 subplot(子图)。

创建采用黑色(即 (0,0,0))边框的散点。

使用 ax.plot 计算两个轴的***最小值,k-- 代表线型,lw=4 代表宽度。然后,给 x 轴和 y 轴加上标签。***,用 plt.show() 展示图像。

结果如下:

图:预测结果

这张图展示了使用线性回归模型对 Boston 数据集进行 K 折交叉验证的结果。

我知道其实还有很多种交叉验证方法,但 K 折交叉验证是一个很好、很简单的起点。

完整代码地址:https://github.com/Sagarsharma4244/Cross-Validation

【本文是51CTO专栏机构“机器之心”的原创译文,微信公众号“机器之心( id: almosthuman2014)”】

 

戳这里,看该作者更多好文

责任编辑:赵宁宁 来源: 51CTO专栏
相关推荐

2020-12-17 09:40:01

Matplotlib数据可视化命令

2020-03-06 13:09:42

JavaScriptSublimeTextNode.js

2021-08-26 09:00:48

PyechartsPython可视化

2022-07-24 21:43:48

数据可视化大数据

2016-04-27 09:49:16

用户模型产品总结

2021-09-26 16:08:23

CC++clang_forma

2021-03-12 10:01:24

JavaScript 前端表单验证

2021-07-14 09:00:36

Python数据Python基础

2021-07-14 09:00:00

JavaFX开发应用

2024-01-26 08:16:48

Exporter开源cprobe

2011-01-10 14:41:26

2011-05-03 15:59:00

黑盒打印机

2021-09-03 08:58:00

数据分析可视化

2020-08-12 09:07:53

Python开发爬虫

2021-08-18 07:29:41

密码验证 PAT

2023-04-26 12:46:43

DockerSpringKubernetes

2022-03-14 14:47:21

HarmonyOS操作系统鸿蒙

2022-01-08 20:04:20

拦截系统调用

2022-07-27 08:16:22

搜索引擎Lucene

2022-12-07 08:42:35

点赞
收藏

51CTO技术栈公众号