原文:
www.kdnuggets.com/2017/09/visualizing-cross-validation-code.html
由 Sagar Sharma 提供,机器学习与编程爱好者。
让我们可视化以提高预测精度...
1. Google 网络安全证书 - 快速入门网络安全职业。
2. Google 数据分析专业证书 - 提升您的数据分析能力
3. Google IT 支持专业证书 - 支持您的组织 IT
假设你正在编写一个干净整洁的机器学习代码(例如线性回归)。你的代码没问题,首先你将数据集分为两个部分,“训练集和测试集”,像往常一样使用 train_test_split 函数和一些 随机因子。你的预测可能会稍微欠拟合或过拟合,如下图所示。
图:欠拟合和过拟合预测
并且结果没有变化。那么我们可以做什么呢?
正如名称所示,交叉验证是学习 线性回归 后的下一个有趣的环节,因为它利用 K-Fold 策略来提高预测精度。你问什么是 K-Fold?所有内容都在下面用 代码 解释了。
完整代码 :)
图:- 带可视化的交叉验证
代码洞察:
上面的代码分为 4 步...
1. 加载 和 划分目标 数据集。
图:- 加载数据集
我们将目标复制到数据集的 y 变量中。*要查看数据集,请取消注释 print 行。
2. 模型选择
图:- 模型选择 (LinearRegression())
为了简化问题,我们将使用线性回归。要了解更多信息,请点击 “线性回归:更简单的方法” 帖子。
3. 交叉验证 :)
图:- sklearn 中的交叉验证
这是一个过程,同时也是 sklearn 中的一个函数
cross_val_predict(model, data, target, cv)
其中,
-
model 是我们选择的要进行交叉验证的模型
-
data 是数据。
-
target 是相对于数据的目标值。
-
cv (可选) 是折叠的总数(即 K-Fold)。
在这个过程中,我们不会像平常那样将数据分为两个集合(训练集和测试集),如下所示。
图:- 训练集(蓝色)和测试集(红色)
我们将数据集分成相等的K部分(K-Folds或cv)。为了改进预测并更好地泛化。然后在更大的数据集上训练模型,在较小的数据集上测试。假设cv为6*。
图:- 6 个相等的折叠或部分
现在,模型分割的第一次迭代看起来是这样的,其中红色是测试数据,蓝色是训练数据。
图:- cross_val 第一次迭代
第二次迭代将如下图所示。
图:- cross_val 第二次迭代
如此继续到最后一次或第六次迭代,结果如下图所示。
图:- cross_val 第六次迭代
4. 可视化数据使用Matplotlib****
图:- 使用 Matplotlib 可视化
为了可视化,我们导入了matplotlib库,然后创建一个subplot。
创建scatter点,边界为黑色(即(0,0,0)),或edgecolors。
使用ax.plot为两个轴提供最小值和最大值,其中'k--'表示线条类型,线宽为lw***= 4***。
接下来,为 x 和 y 轴添加标签。
plt.show() 用于显示图表。
结果
图:- 预测
该图表示波士顿数据集的 k-折交叉验证,使用线性回归模型。
我相信有许多类型的交叉验证,但 K 折交叉验证是一种很好的、易于入门的类型。
获取完整代码,请访问此 GitHub 链接:Github
关注我在Medium获取类似的文章。
我每周发布 2 篇文章,所以不要错过代码教程。
联系我:Facebook、Twitter、Linkedin、Google+。
任何评论或问题,请在评论中写下。
点赞!分享!关注我!
很高兴能帮到你。赞美...
个人简介:Sagar Sharma(@SagarSharma244)对编程(Python, C++)、Arduino 和机器学习感兴趣。 他也喜欢写东西。
原文。已获许可转载。
相关:
-
了解偏差-方差权衡:概述
-
使预测模型鲁棒:保留法与交叉验证
-
理解过拟合:机器学习中的一个不准确的误解