У меня есть следующие конвейеры, я хочу получить характеристики функций по каждому классу. У меня есть три класса («Художественная литература», «Не художественная литература», «Нет»). Я использую классификатор SVC
.
Book_contents= Pipeline([('selector', ItemSelector(key='Book')),
('tfidf',CountVectorizer(analyzer='word',
binary=True,
ngram_range=(1,1))),
])
Author_description= Pipeline([('selector', ItemSelector(key='Description')),
('tfidf', CountVectorizer(analyzer='word',
binary=True,
ngram_range=(1,1))),
])
ppl = Pipeline([('feats', FeatureUnion([('Contents',Book_contents),
('Desc',Author_description)])),
('clf', SVC(kernel='linear',class_weight='balanced'))
])
model = ppl.fit(training_data, Y_train)
Я пробовал eli5, но я получил ошибку несоответствия между именем объекта и классификатором.
f1=model.named_steps['feats'].transformer_list[0][1].named_steps['tfidf'].get_feature_names()
f2=model.named_steps['feats'].transformer_list[1][1].named_steps['tfidf'].get_feature_names()
list_features=f1
list_features.append(f2)
explain_weights.explain_linear_classifier_weights(model.named_steps['clf'],
vec=None, top=20,
target_names=ppl.classes_,
feature_names=list_features)
Я получил эту ошибку:
feature_names имеет неправильную длину: ожидается = 47783, получено = 10528
Как получить звание функций по отношению к каждому классу? это способ сделать это без eli5?