如何使用文本和非文本功能挑选Sklearn管道?

时间:2018-04-02 23:22:03

标签: python machine-learning scikit-learn

所以我已经浏览了我在StackOverflow中发现的所有类似问题,不幸的是他们都没有为我做过这些问题。

我有一个组合联盟和使用函数变换器的管道

get_text_data= FunctionTransformer(return_text, validate=False)

get_categorical_data= FunctionTransformer(func=return_categorical, kw_args=dict(columns=categoricalFeatures), validate=False)


vectorizer = TfidfVectorizer(strip_accents='ascii',tokenizer=tokenize, min_df=2,stop_words ='english',ngram_range=(1, 2))#

clf=svm.SVC(kernel='linear',cache_size=10000, C=1.3)#86.6 with extra text =(

# Instantiate Pipeline object: pl
pipeline = Pipeline([
        ('union', FeatureUnion(
            transformer_list = [
                ('discrete_features', 
                    Pipeline([
                    ('selector', get_categorical_data) ])),

                ('text_features', 
                    Pipeline([
                    ('selector', get_text_data),
                    ('vectorizer', vectorizer)]))

                                ]
        )),
        ('clf', clf)
    ])
pipeline.fit(x,y)
pickleModel(pipeline,'pl_4_2_2018_TS_caseType')

顺便说一句,如果我不把莳萝作为泡菜,我会收到一个错误说"我不能腌制lambda对象"

在腌制之后,我调用相同的管道并将其提供给新数据

pl = loadModel(pipeline_name)
all_nonDUDLpredictions=pl.predict(x)

但这告诉我

失败了
in _convert_t_indexer
raise KeyError ('% is not in index' % objarr[mask]')
KeyError: [List of all the categorical features] not in Index

我可以在训练时运行管道并获得准确性,这样看似可行但是出于某种原因,如果我腌制它,我就无法提供新数据

任何帮助将不胜感激

由于

0 个答案:

没有答案