所以我已经浏览了我在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
我可以在训练时运行管道并获得准确性,这样看似可行但是出于某种原因,如果我腌制它,我就无法提供新数据
任何帮助将不胜感激
由于