Scikit-learn 管道 - 变压器的执行顺序

Scikit-learn Pipeline - Execution order of transformers

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

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

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

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

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

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

FeatureUnion 中的步骤将并行应用(因为您允许的作业数量与 n_jobs=-1 的内核数量相同,甚至实际上是并行的)。所以是的,CountVectorizer 将应用于清理后的文本。

我认为 this 博客 post 中的图形非常清楚。

关于 "Is there a ways to find out?",请参阅 my answer here 了解更多问题。