Sklearn Pipeline:http://scikit-learn.org/stable/modules/generated/sklearn.pipeline.Pipeline.html
DataFrameMapper:https://github.com/paulgb/sklearn-pandas
它们之间的区别是什么?
在我看来,sklearn管道具有更多功能,但DataFrameMapper对我来说更加干净。
答案 0 :(得分:15)
基本上,DataFrameMapper
(和整个sklearn-pandas包)旨在将pandas DataFrame
对象的好处与sklearn机器学习包的强大功能结合起来。
sklearn.Pipeline
描述了要对矩阵格式执行的转换的有序列表(由numpy和scipy包提供)。这些转换将在序列中一个接一个地在整个矩阵上执行,并将从头到尾编码整个训练和预测过程。
管道转换(又称步骤)元组的第一部分是它的名称,它对过程没有实际影响,它只是用于可读性。
另一方面,DataFrameMapper
对由pandas包创建的DataFrame对象进行操作,并且可以将转换应用于数据帧的某些部分(不一定在整个数据集上)。 DataFrame类似于numpy和scipy矩阵,跟踪行和列标签和元数据有一个明显的区别。 DataFrames操作将确保使用逻辑标识而不是索引来访问,操作和读取行和列。
DataFrameMapper
转换元组的第一部分描述了应该通过转换运行哪些列。
三大区别是:
DataFrameMapper
是一个更灵活的工具,它可以让你在不同的列上执行不同的转换,更倾向于转换复杂的数据结构,而sklearn.Pipeline
更倾向于执行机器学习相关同构数据集上的转换。DataFrameMapper
将允许您保留已分配给您的pandas DataFrame
对象的注释和标签,而sklearn.Pipeline
会将任何结果“减少”为numpy / scipy数组/基质sklearn.Pipeline
是一个更稳定和众所周知的软件包的一部分,因此如果稳定性和维护等考虑因素很重要,那么它可能是“更安全”的选择。