【问题标题】:Sklearn /scikit learn using fit methodsklearn /scikit 使用 fit 方法学习
【发布时间】:2019-11-12 21:10:53
【问题描述】:

fit() 方法如何在使用 Imputer 类的 sklearn.preproessing 中工作 fit() 在后台到底做了什么对于下面的代码和 我到处都在看到适合什么,为什么以及如何?

from sklearn.preprocessing import Imputer
impt = Imputer(missing_values = "NaN", strategy = "mean", axis = 0)
impt = impt.fit(X[:,1:3])
X[:,1:3] = impt.transform(X[:,1:3])

【问题讨论】:

标签: python scikit-learn


【解决方案1】:

好吧,预处理阶段“拟合”的目的是计算必要的值(如每个变量的最小值和最大值)。然后使用这个值 scikit learn 可以预处理您的数据,但以前不能。它也很有用,因为您可以稍后重新使用您的预处理器对象。

如果您想将这两个步骤合二为一,也可以使用fit_transform

【讨论】:

    【解决方案2】:

    我们的想法是“拟合”您的训练数据的预处理(就像您的模型一样)。它会学习一些状态,对于 imputer 来说,这可能是你的特征的 mean。然后,当您对测试/验证数据进行转换时,您使用状态(即本例中的 mean)来估算新的未见数据。使用这种设计,可以很容易地避免数据泄露。考虑一下您是否对整个数据集进行了估算。现在,您用于插补的均值使用了您所谓的未见测试数据中的一些信息。这是数据泄漏,您的数据不再是真正看不见的。 Scikit-learn 使用 fit / transform 模式轻松缓解机器学习中的这种常见缺陷。

    此外,由于所有 sklearn 转换器和估算器都使用此fit API,您可以将它们链接到管道中,从而可以轻松地在 k 折交叉验证的每一折上进行所有预处理,这否则在没有错误的情况下将是一件非常繁琐、棘手的事情。

    【讨论】:

      【解决方案3】:

      Imputer(missing_values = "NaN", strategy = "mean", axis = 0)

      上面的行创建了一个 Imputer 对象,它将用这些值的平均值填充/替换表示为 NaN 的缺失值。

      impt = impt.fit(X[:,1:3])

      所以它需要一些数据来计算mean,这些数据可以用缺失值代替。这通常通过 fit 方法完成,该方法将计算所需的值,在这种情况下是平均值。 fit 接收一些数据来计算这些值,通常称为training 阶段。

      impt.transform(X[:,1:3])

      一旦计算出这些值,它们就可以用于提供给它的新数据。在这种情况下,它将用计算的(在fit 方法中)平均值替换缺失的数据。这是通过transform 方法完成的。

      有时可能想要运行fittransform 的相同数据。在这种情况下,我们可以使用 fit_transform 方法,而不是先调用 fit 再调用 transform。

      X[:,1:3] = impt.fit_transform(X[:,1:3])

      【讨论】:

        猜你喜欢
        • 2021-10-12
        • 2018-09-06
        • 2019-06-13
        • 2018-10-21
        • 2016-12-20
        • 1970-01-01
        • 2014-02-02
        • 2018-05-28
        • 2015-12-22
        相关资源
        最近更新 更多