【发布时间】:2019-04-16 22:23:39
【问题描述】:
有人可以帮助我解决使用 normalize 和 normalizer 在特征缩放方面的差异
- preprocessing.normalize() 与 preprocessing.Normalizer()。
【问题讨论】:
标签: machine-learning cluster-analysis data-science feature-extraction unsupervised-learning
有人可以帮助我解决使用 normalize 和 normalizer 在特征缩放方面的差异
【问题讨论】:
标签: machine-learning cluster-analysis data-science feature-extraction unsupervised-learning
它们在对数据的影响方面是等效的。 normalize 函数旨在成为标准化单个向量/矩阵的“快速简便”选项。 Normalizer 是所谓的“实用程序类”。它只是将 normalize 函数包装在 Sklearn 的 Transformer API 中。正如documentation 中所述,这使得Normalizer 类非常适合在Sklearn 的Pipeline class 中使用。
** 更新以提供更多详细信息 **
规范器
normalize 和 Normalizer 的功能是相同的。 IE。给定相同的数据和参数,它们将分别返回输入矩阵的 L1 或 L2 范数。
更多详情请参阅sklearn.preprocessing.normalizerdocumentation。
变形金刚
Normalizer 是一个变压器的例子。 Transformer 可以通过多种方式处理数据。他们在 sklearn 中的共同点之一是拥有 fit、transform 和 fit_transform 方法。
详情请参阅数据转换器documentation。
管道
sklearn.pipeline.Pipeline 是一个用于“链接”数据转换(标准化、缩放、过滤等)和估计器的类。当使用交叉验证来优化预处理转换和估计器中的不同参数时,能够做到这一点很有帮助。
由于sklearn.pipeline.Pipeline 的工作方式,它需要组成函数才能使用transformer API。即拥有fit、transform 和fit_transform 方法。
更多详情请参阅sklearn.pipeline.Piplinedocumentation。
Normalize 和 Normalizer 之间的区别
Normalize 没有 fit、transform 和 fit_transform 方法。因此,虽然它适合“独立”使用,但不能用作Pipeline 的一部分。 Normalizer 封装在 sklearn 的 Transformer API 中,以便提供 Transformer 方法。
因此Normalizer 允许normalize 函数与fit、transform 和fit_transform 方法一起使用,这反过来又允许它用作Pipeline 的一部分。
备注
normalize 除了配置参数之外是无状态,例如要规范化哪个轴以及要使用哪种规范化类型)它只需要transform 方法。所以fit 不加修改地返回输入,fit_transform 的行为与transform 相同。Transformer API 可用于normalize 可能还有其他原因,但它作为Pipeline 的一部分使用是最常见的。【讨论】: