我正在执行数据准备,以便我的数据适合适合他们到机器学习算法。目前,我正在处理丢失的值。在如下所示的这段代码中,我没有出现错误,而是出现了混淆。在这两个代码块中,我对两个不同的数据集应用了相同的东西: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
你做这件事的方法是正确的。您应该始终将培训和测试数据分开。您正在对传入数据测试模型,因此只能使用从中派生的信息。 在测试中使用训练数据的中位数并不像在训练中使用测试数据那么糟糕,但是请注意,对于这两个数据集,准备数据的过程是不同的。在第一种情况中,使用的是同一数据集的中位数,在第二种情况中使用的是与测试数据集无关的值。 同样,当使用训练集中值时,您必须将它与模型一起保存在某个地方。如果你有1000个功能呢?您必须保存1000个值。如果您想要一个迭代模型,您是否也更新那些值呢? 一个数据集被另一个数据集的信息弄脏的现象称为数据泄漏。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。