【问题标题】:Scikit-learn Pipeline - Execution order of transformersScikit-learn Pipeline - 转换器的执行顺序
【发布时间】:2018-06-01 17:54:54
【问题描述】:

我正在开发一个文本分类器,我想对其进行以下操作

  1. 使用客户转换器TextCounts在文本上创建新特征(如字数、哈希标签数等)
  2. 使用自定义转换器CleanText清理文本并对其应用CountVectorizer
  3. 将第 1 步和第 2 步的特征组合为我的分类器的输入

我设法为此创建了一个管道,但我不确定它是否像上面解释的那样运行。

features = FeatureUnion(n_jobs=-1,
    [('textcounts', TextCounts())
    , Pipeline([
        ('cleantext', CleanText())
        , ('vect', vect)
        ])
    ])

pipeline = Pipeline([
    ('features', features)
    , ('clf', clf)
])

事实上,我不确定 CountVectorizer 是应用于清理后的文本还是原始文本。有没有办法解决这个问题?谢谢!

【问题讨论】:

  • FeatureUnion 将向其所有内部转换器提供相同的输入数据。所以你在这里尝试做的是正确的。

标签: python scikit-learn pipeline


【解决方案1】:

FeatureUnion 中的步骤将并行应用(因为您允许与 n_jobs=-1 的内核一样多的作业,即使实际上是并行的)。所以是的,CountVectorizer 将应用于清理后的文本。

我认为this 博文中的图形已经很清楚了。

关于“有没有办法找出答案?”,请参阅my answer here 了解更多问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-04
    • 2017-10-04
    • 2021-10-25
    • 2016-02-07
    • 1970-01-01
    • 2014-07-13
    • 2021-09-18
    • 2018-01-27
    相关资源
    最近更新 更多