У меня есть список комментариев (текст), который я должен классифицировать с некоторыми классификаторами (входные данные). Я использую pipeline
, чтобы сделать это, и я KFold
, потому что набор данных очень мал. Я хотел бы знать имена лучших функций для классификаторов с SelectKBest
, но, поскольку он находится в pipeline
, я не знаю, как получить лучшие имена функций.
comments
это список строк.
def classify(classifiers, folder="tfidf-classifiers"):
comments = get_comments()
labels = get_labels()
tfidf_vector = TfidfVectorizer(tokenizer=tokenizer, lowercase=False)
stats = {}
for i in classifiers:
classifier = i()
pipe = Pipeline(
[('vectorizer', tfidf_vector), ('feature_selection', SelectKBest(chi2)), ('classifier', classifier)])
result = cross_val_predict(pipe, comments, labels, cv=KFold(n_splits=10, shuffle=True))
cm = confusion_matrix(result, labels, [information, non_information])
saveHeatmap(cm, i.__name__, folder)
report = classification_report(labels, result, digits=3, target_names=['no', 'yes'], output_dict=True)
stats[i.__name__] = report
return stats
Я искал по inte rnet и нашел это:
pipe.named_steps['feature_selection'].get_support()
Но я не могу этого сделать, так как я не вызов fit
на конвейере. Я использую конвейер здесь:
result = cross_val_predict(pipe, comments, labels, cv=KFold(n_splits=10, shuffle=True))
Как я могу получить лучшие K имен элементов?
Мне нужен простой список слов, которые «помогли большинству» классификаторов, выполняющих свои работа ...