开发者社区> 问答> 正文

在测试集中用中位数填充Nan值

我正在执行数据准备,以便我的数据适合适合他们到机器学习算法。目前,我正在处理丢失的值。在如下所示的这段代码中,我没有出现错误,而是出现了混淆。在这两个代码块中,我对两个不同的数据集应用了相同的东西:train_x_e =>火车集和test_x =>测试集。但是,在test_x中,我不确定是否应该使用train_x_e或test_x来填充nan值,如第二段代码所示。 如果有人能给我解释一下,我将不胜感激!

 nan_columns = []
    for keys, values in null_vals.items():
        if values > 0:
            nan_columns.append(keys)
    train_x_b = train_x_e.fillna(train_x_e.median())
    print(nan_columns)

测试集的过程相同

  nan_columns = []
    for keys, values in null_vals.items():
        if values > 0:
            nan_columns.append(keys)
    test_x_b = test_x.fillna(test_x.median())
    print(nan_columns)

问题来源StackOverflow 地址:/questions/59378908/filling-nan-values-with-median-in-a-test-set

展开
收起
kun坤 2019-12-30 10:00:03 475 0
1 条回答
写回答
取消 提交回答
  • 你做这件事的方法是正确的。您应该始终将培训和测试数据分开。您正在对传入数据测试模型,因此只能使用从中派生的信息。 在测试中使用训练数据的中位数并不像在训练中使用测试数据那么糟糕,但是请注意,对于这两个数据集,准备数据的过程是不同的。在第一种情况中,使用的是同一数据集的中位数,在第二种情况中使用的是与测试数据集无关的值。 同样,当使用训练集中值时,您必须将它与模型一起保存在某个地方。如果你有1000个功能呢?您必须保存1000个值。如果您想要一个迭代模型,您是否也更新那些值呢? 一个数据集被另一个数据集的信息弄脏的现象称为数据泄漏。

    2019-12-30 10:00:09
    赞同 展开评论 打赏
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
移动互联网测试到质量的转变 立即下载
给ITer的技术实战进阶课-阿里CIO学院独家教材(四) 立即下载
F2etest — 多浏览器兼容性测试整体解决方案 立即下载