【问题标题】:Feature scaling difference between "normalize" and "Normalizer"“normalize”和“Normalizer”之间的特征缩放差异
【发布时间】:2019-04-16 22:23:39
【问题描述】:

有人可以帮助我解决使用 normalize 和 normalizer 在特征缩放方面的差异

  • preprocessing.normalize() 与 preprocessing.Normalizer()。

【问题讨论】:

    标签: machine-learning cluster-analysis data-science feature-extraction unsupervised-learning


    【解决方案1】:

    它们在对数据的影响方面是等效的。 normalize 函数旨在成为标准化单个向量/矩阵的“快速简便”选项。 Normalizer 是所谓的“实用程序类”。它只是将 normalize 函数包装在 Sklearn 的 Transformer API 中。正如documentation 中所述,这使得Normalizer 类非常适合在Sklearn 的Pipeline class 中使用。

    ** 更新以提供更多详细信息 **

    规范器

    normalizeNormalizer 的功能是相同的。 IE。给定相同的数据和参数,它们将分别返回输入矩阵的 L1 或 L2 范数。

    更多详情请参阅sklearn.preprocessing.normalizerdocumentation

    变形金刚

    Normalizer 是一个变压器的例子。 Transformer 可以通过多种方式处理数据。他们在 sklearn 中的共同点之一是拥有 fittransformfit_transform 方法。

    详情请参阅数据转换器documentation

    管道

    sklearn.pipeline.Pipeline 是一个用于“链接”数据转换(标准化、缩放、过滤等)和估计器的类。当使用交叉验证来优化预处理转换和估计器中的不同参数时,能够做到这一点很有帮助。

    由于sklearn.pipeline.Pipeline 的工作方式,它需要组成函数才能使用transformer API。即拥有fittransformfit_transform 方法。

    更多详情请参阅sklearn.pipeline.Piplinedocumentation

    NormalizeNormalizer 之间的区别

    Normalize 没有 fittransformfit_transform 方法。因此,虽然它适合“独立”使用,但不能用作Pipeline 的一部分。 Normalizer 封装在 sklearn 的 Transformer API 中,以便提供 Transformer 方法。

    因此Normalizer 允许normalize 函数与fittransformfit_transform 方法一起使用,这反过来又允许它用作Pipeline 的一部分。

    备注

    1. 因为在规范化数据时没有适合的模型(从技术上讲,normalize 除了配置参数之外是无状态,例如要规范化哪个轴以及要使用哪种规范化类型)它只需要transform 方法。所以fit 不加修改地返回输入,fit_transform 的行为与transform 相同。
    2. Transformer API 可用于normalize 可能还有其他原因,但它作为Pipeline 的一部分使用是最常见的。

    【讨论】:

    • 我有同样的问题,我是机器学习的新手。但是,无论您解释什么差异,我都无法理解。您能否举一些例子并详细解释一下
    • @user8588795 我已经更新了答案,希望能让你理解——如果没有,请告诉我。很抱歉延迟提供更新,希望没有妨碍您。
    猜你喜欢
    • 2020-10-02
    • 2020-09-18
    • 2019-01-07
    • 1970-01-01
    • 1970-01-01
    • 2019-07-07
    • 2020-05-31
    • 2019-03-21
    • 2012-09-24
    相关资源
    最近更新 更多