sklearn Pipeline 和 DataFrameMapper 有什么区别?

What's the difference between sklearn Pipeline and DataFrameMapper?

Sklearn 管道:http://scikit-learn.org/stable/modules/generated/sklearn.pipeline.Pipeline.html

DataFrameMapper: https://github.com/paulgb/sklearn-pandas

它们有什么区别?

在我看来,sklearn pipeline 的功能更多,但 DataFrameMapper 对我来说更干净。

编辑:请参阅关于可能更好的 ColumnTransformer 方法的评论讨论。可以找到可能感兴趣的比较 table Here


基本上,DataFrameMapper(以及整个 sklearn-pandas 包)旨在将 pandas DataFrame 对象的优点与 sklearn 机器的功能结合起来学习包。

sklearn.Pipeline 描述了对矩阵格式执行的转换的有序列表(由 numpy 和 scipy 包提供)。这些变换将依次在整个矩阵上执行,并将从头到尾对整个训练和预测过程进行编码。

管道转换(又名步骤)元组的第一部分是它的名称,它对过程没有实际影响,只是为了便于阅读。

另一方面,

A DataFrameMapper 对 pandas 包创建的 DataFrame 对象进行操作,并且可以将转换应用于数据框的某些部分(不一定对整个数据集)。 DataFrame 类似于 numpy 和 scipy 矩阵,唯一明显的区别是跟踪行和列标签以及元数据。 DataFrames 操作将确保可以使用逻辑标识而不是索引来访问、操作和读取行和列。

DataFrameMapper 转换元组的第一部分描述了哪些列应该 运行 通过转换。

三大区别是:

  1. A DataFrameMapper是一个更灵活的工具,它可以让你对不同的列执行不同的转换,更面向转换复杂的数据结构,而sklearn.Pipeline更面向执行机器在同类数据集上学习相关转换。
  2. DataFrameMapper 将让您保留分配给 pandas DataFrame 对象的注释和标签,而 sklearn.Pipeline 将“减少”任何结果一个 numpy/scipy array/matrix.
  3. sklearn.Pipeline 是更 stable 和众所周知的软件包的一部分,因此如果稳定性和维护等考虑因素很重要,则可能是“更安全”的选择。