Меня интересует выявление потенциальных утечек в тексте для задачи двоичной классификации. Причина в том, что я подозреваю высокую точность (96%), поэтому я хотел бы увидеть, какие слова имеют наибольшее значение при категоризации текста.
Средняя длина данных - 2500 символов. И код такой:
from sklearn.feature_extraction.text import (CountVectorizer, TfidfTransformer,
TfidfVectorizer)
from sklearn.naive_bayes import MultinomialNB
from sklearn.pipeline import Pipeline
labels=[0,1]
nb = Pipeline([('vect', CountVectorizer()),
('tfidf', TfidfTransformer()),
('clf', MultinomialNB()),
])
nb.fit(X_train, y_train)
y_pred = nb.predict(X_test)
print('accuracy %s' % accuracy_score(y_pred, y_test)) # 95-97%
Я могу сделать следующее для слов / сегментов, но это бесполезно, учитывая, что я использую TFIDF.
word_or_segment="word"
print(nb.predict([word_or_segment]))
print(nb.predict_proba([word_or_segment]))
>[1]
>[[0.49596359 0.50403641]]
Я также пробовал следующая команда, которая возвращает мета-параметры, а не матрицу или функцию:
nb.get_params()
>[...Params of the pipeline components...]
Решением может быть что-то, определяющее наиболее важные слова