首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >前处理前与后处理前的列车、试验分车的区别

前处理前与后处理前的列车、试验分车的区别
EN

Data Science用户
提问于 2019-03-07 09:49:35
回答 2查看 3.7K关注 0票数 4

我是机器学习的新手。我在预处理方面有点困惑。一般来说,

场景1:我将数据集分解为训练、测试和验证,并应用诸如列车上的fit_transform和测试上的转换。

场景2:另一种方法是首先对整个数据集应用转换,然后将数据集拆分为训练、测试和验证。在预处理和特征工程之前,或者在预处理和特征工程之后,我对数据的选择、划分有些困惑。寻找一个很好的答案与效果和棺材。

EN

回答 2

Data Science用户

回答已采纳

发布于 2019-04-06 18:45:41

你绝对应该采用第一种方案。这是因为您使用的变压器有一些参数(例如,在标准标量情况下的均值和标准差),并且这些参数是从数据中学习的,比如机器学习模型的参数。如您所知,您不应该使用验证和测试数据来学习模型参数,而且出于同样的原因,您不应该使用它们来学习转换器参数。因此,如果您想要尝试一个实际的机器学习场景,应该只使用培训样本来拟合您的变压器参数。

票数 1
EN

Data Science用户

发布于 2019-03-07 17:43:34

所有数据集(训练、测试和验证)都必须应用最受欢迎的转换。无论您在一个子集上添加了什么功能,都必须添加到其他子集中。

如果您的验证和测试数据是随机选择的,并且对所有子集都应用了精确的转换,那么这两种场景都可以工作,但是第二种方案在某些方面更好:

  • 首先,编写代码比较容易,只需编写一次转换行即可。
  • 其次,如果您使用python,它可能会更快,您将受益于numpy的强大功能。
  • 第三,风险较小,以下面的例子为例。您有一个分类变量,出于某种原因,您决定将该变量中缺少的值替换为发生次数最高的值。如果出现的值接近,则子集中可能有不同的值。如果用平均值替换一个数值,也可能发生同样的情况。这是不可能的,如果你选择你的子集随机,但你知道,没有完美的随机性。

我建议选择第二种选择,因为它更容易,风险更小。但是,您可以在某个时候尝试这两种方法,您将看到每一种方法的优点和缺点。

票数 -3
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/46850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档