辛德蕾拉|准备数据时如何避免数据泄漏( 三 )
运行上述代码, 首先会将数据归一化, 然后把数据分成测试集和训练集,最后拟合并评估模型 。
由于学习算法和评估程序的随机性 , 您的具体结果可能会有所不同 。
在本例中, 模型在测试集上的准确率为84.848%
我们已经知道上述代码中存在数据泄露的问题, 所以模型的准确率估算是有误差的 。
接下来 , 让我们来学习如何正确的进行数据准备以避免数据泄露 。
用正确的数据准备方法进行训练集-测试集评估利用训练集-测试集分割评估来执行数据准备的正确方法是在训练集上拟合数据准备方法 , 然后将变换应用于训练集和测试集 。
这要求我们首先将数据分为训练集和测试集 。
然后 , 我们可以定义MinMaxScaler并在训练集上调用fit()函数 , 然后在训练集和测试集上应用transform()函数来归一化这两个数据集 。
我们只用了训练集而非整个数据集中的数据来对每个输入变量计算最大值和最小值, 这样就可以避免数据泄露的风险 。
然后可以按照之前的评估过程对模型评估 。
整合之后, 完整代码如下:
运行示例会将数据分为训练集和测试集 , 对数据进行正确的归一化 , 然后拟合并评估模型 。
由于学习算法和评估程序的随机性 , 您的具体结果可能会有所不同 。
在本例中 , 我们可以看到该模型在测试集上预测准确率约为85.455% , 这比上一节中由于数据泄漏达到84.848%的准确性更高 。
我们预期数据泄漏会导致对模型性能的错误估计 , 并以为数据泄漏会乐观估计 , 例如有更好的性能 。 然而在示例中 , 我们可以看到数据泄漏导致性能更差了 。 这可能是由于预测任务的难度 。
用K折交叉验证进行数据准备
在本节中 , 我们将在合成的二分类数据集上使用K折交叉验证评估逻辑回归模型, 其中输入变量均已归一化 。
您可能还记得k折交叉验证涉及到将数据集分成k个不重叠的数据组 。 然后我们只用一组数据作为测试集, 其余的数据都作为训练集对模型进行训练 。 将此过程重复K次 , 以便每组数据都有机会用作保留测试集 。 最后输出所有评估结果的均值 。
k折交叉验证过程通常比训练测试集划分更可靠地估计了模型性能 , 但由于反复拟合和评估 , 它在计算成本上更加昂贵 。
我们首先来看一下使用k折交叉验证的原始数据准备 。
用K折交叉验证进行原始数据准备
具有交叉验证的原始数据准备首先要对数据进行变换 , 然后再进行交叉验证过程 。
我们将使用上一节中准备的合成数据集并直接将数据标准化 。
首先要定义k折交叉验证步骤 。 我们将使用重复分层的10折交叉验证 , 这是分类问题的最佳实践 。 重复是指整个交叉验证过程要重复多次 , 在本例中要重复三次 。 分层意味着每组样本各类别样本的比例与原始数据集中相同 。 我们将使用k = 10的10折交叉验证 。
推荐阅读
- |学生党开学好物清单,提前准备超实用
- 黑豹男主追悼会秘密举行|永远的漫威!黑豹男主追悼会秘密举行 去世前一周仍为《黑豹2》做准备
- 央视《时刻准备着》落幕 “中国机长”刘传建忆往事
- 游戏|为次时代做准备 PlayStation官方上线PS5游戏页面
- 小星品情感|不怕儿子会反吗?做好了准备却疏忽了一点,朱元璋传为给孙子
- 美国国防部|事态剧变,美国国防部宣布:对中国做好准备了!
- 辛德蕾拉|简单好用的电脑录屏软件,自媒体或日常使用必备,内附破解注册机
- 娱乐圈小松鼠|第二季就准备,赵丽颖谢娜也去?,《乘风破浪的姐姐》刚收官
- 准备做个奶爸|孕期这些东西真的不能吃吗,下面我们来看一下
- |季节交替 你的免疫力准备好了吗?
