我一直在Kaggle上一门关于中级机器学习的课程。在解释中,为了标记分类数据,他们使用了sklearn.preprocessing的LabelEncoder库。

在这里,对于训练数据集,他们使用了fit_transform,而对于验证数据集,他们只使用了转换,为什么会这样呢?
此外,在处理空值时,他们在训练数据集中使用了fit_transform,对于验证数据集,他们使用了transform。

那么,fit_transform和transform之间的区别是什么?它们可以在什么情况下使用?
发布于 2020-11-29 12:59:38
fit_transform既适合数据集的转换器,也可以转换给定的数据。
转换只是转换给定的数据集。
通常,在训练数据集上使用fit_transform既可以使转换器适合数据集,也可以转换数据集。
在您的测试和验证数据集上,您只需要转换您的数据集。这是因为您希望避免任何可能的数据泄漏。您希望您正在创建的模型从未以任何形式看到过您的测试集。一种形式会影响你对数据集的偏好。
示例中使用的简单输入器的默认替换是用均值替换。通过只拟合训练数据集,您可以避免来自测试集的数据集影响输入器的平均值和泄漏信息的任何可能性。
发布于 2020-11-29 20:47:43
我们在创建机器学习模型时使用fit,但在任何需要的时候都可以使用fit_transform
以拟合数据并转换这些值。
对于ex -在标签编码和特征缩放的情况下,我们希望更改或缩放我们的值。因此,每当我们想要转换这些值时,我们都会使用fit_transform。
但是我们没有使用fit_transform来验证数据,因为有两个问题:
1)Data Leakage,
2)Overfitting我们可以用一个简单的例子来解释这两个问题:
这就像问题paper.If的泄漏我们看到了试卷然后就没有了
exams.Likely的要点如果我们拟合测试数据,那么整个数据都是模型所知道的
即“数据泄露”,这可能导致“过拟合”,这意味着我们可以在以下情况下做得很好
试卷泄露了,但如果校长改了试卷,我们考试就不及格了。
https://stackoverflow.com/questions/65057140
复制相似问题