Scikit-learn Pipeline - 变压器的执行顺序

时间:2017-12-19 10:11:08

标签: python scikit-learn pipeline

我正在处理一个文本分类器,我想要执行以下操作

  1. 使用客户转换器 TextCounts
  2. 在文本上创建新功能(例如单词数,哈希标签数等)
  3. 使用自定义转换器 CleanText 清理文本并在其上应用 CountVectorizer
  4. 将步骤1和2的功能组合为我的分类器
  5. 的输入

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

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

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

1 个答案:

答案 0 :(得分:0)

FeatureUnion中的步骤将并行应用(因为您允许尽可能多的作业,因为您拥有n_jobs = -1的核心,甚至实际并行)。所以,是的,CountVectorizer将应用于已清理的文本。

我认为this博文中的图片非常清楚。

关于“有没有找到方法?”,请参阅my answer here了解更多问题。