8

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

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

他们之间有什么区别?

在我看来,sklearn 管道具有更多功能,但 DataFrameMapper 对我来说更干净。

4

1 回答 1

18

编辑:请参阅有关可能更好的方法的评论讨论ColumnTransformer可以在此处找到可能感兴趣的比较表。


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

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

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

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

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

三大区别是:

  1. ADataFrameMapper是一个更灵活的工具,它可以让你在不同的列上执行不同的转换,并且更倾向于转换复杂的数据结构,同时sklearn.Pipeline更倾向于在同构数据集上执行机器学习相关的转换。
  2. ADataFrameMapper将让您保留分配给 pandasDataFrame对象的注释和标签,同时sklearn.Pipeline将任何结果“减少”到 numpy/scipy 数组/矩阵。
  3. sklearn.Pipeline是更稳定和众所周知的软件包的一部分,因此如果稳定性和维护等考虑因素很重要,则可能是“更安全”的选择。
于 2016-11-01T00:07:36.027 回答