Как определить важные особенности (утечки) в классификации текста с помощью sklearn.naive_bayes.MultinomialNB - PullRequest
0 голосов
/ 30 мая 2020

Меня интересует выявление потенциальных утечек в тексте для задачи двоичной классификации. Причина в том, что я подозреваю высокую точность (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...]

Решением может быть что-то, определяющее наиболее важные слова

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...