我们尝试使用代码可视化来提高模型预测能力。假设您正在编写一个漂亮而清晰的机器学习代码(例如线性回归)。你的代码还不错,首先使用像train_test_split这样的函数像往常一样将数据集分成“训练集和测试集”两部分,并添加一些随机因素。您的预测可能会略微欠拟合或过拟合,如下图所示。图:欠拟合和过拟合情况下的预测结果结果没有变化。这个时候我们能做什么?顾名思义,在学习了线性回归之后,接下来有趣的事情就是交叉验证,因为它可以使用K折策略(K-Foldstrategy)来提高模型的预测能力。那么K折到底是什么?下面我们就用代码来解释一下。完整代码如下:图:交叉验证的可视化代码分析:上面的代码可以分为4个步骤。1.加载并拆分目标数据集。图:加载数据集会将数据集中的目标复制到y变量中。如果要查看数据集,请删除打印行中的注释字符“#”。2.模型选择图:模型选择(LinearRegression())是一个简化的过程,我们会选择使用线性回归。如果你想了解更多,请查看文章《Linear Regression: The Easier Way》。3.交叉验证图:sklearn中的交叉验证这是sklearn中的流程,也是一个函数:cross_val_predict(model,data,target,cv)其中model是我们选择的模型进行交叉验证。数据就是数据。target是数据的目标值。cv(可选)是数据折叠的总数(K折叠)。在这个过程中,我们没有像往常一样将数据集分为训练集和测试集,如下图所示。图:训练集(蓝色)和测试集(红色)我们将数据集平均分成K部分(K折或cv)。为了提高预测准确性并实现更好的泛化,我们在较大的数据集上训练模型并在较小的数据集上进行测试。这里,我们设置cv为6。图:6个相同的部分现在,模型拆分的第一次迭代如下图所示,其中红色是测试集,蓝色是训练集。Figure:Thefirstiterationofcross-validation第二次迭代如下图所示:Figure:Theseconditerationofcross-validation依此类推,直到最后一次迭代,如下图:Figure:Firstiterationofcross-validation-validation六次迭代4.使用Matplotlib进行数据可视化图:使用Matplotlib进行可视化为了可视化结果,我们导入matplotlib库并创建一个子图。创建带有黑色(即(0,0,0))边框的散点图。用ax.plot计算两个坐标轴的最小值,k--代表线型,lw=4代表宽度。然后,标记x轴和y轴。***,使用plt.show()来显示图像。结果如下:图:预测结果该图显示了在波士顿数据集上使用线性回归模型进行K折交叉验证的结果。我知道还有许多其他交叉验证方法,但K折交叉验证是一个很好且简单的起点。完整代码地址:https://github.com/Sagarsharma4244/Cross-Validation【本文为机器之心专栏原文翻译,微信公众号“机器之心(id:almosthuman2014)”】点此查看该作者更多好文
