Как получить функцию Важность в наивном байесе? - PullRequest
0 голосов
/ 25 мая 2018

У меня есть набор отзывов с меткой класса положительный / отрицательный.Я применяю Наивный Байес к этому набору данных отзывов.Во-первых, я превращаюсь в мешок слов.Здесь sorted_data ['Text'] - это обзоры, а final_counts - это разреженная матрица

count_vect = CountVectorizer() 
final_counts = count_vect.fit_transform(sorted_data['Text'].values)

Я разбиваю данные на набор данных по поездам и тестам.

X_1, X_test, y_1, y_test = cross_validation.train_test_split(final_counts, labels, test_size=0.3, random_state=0)

Я применяю алгоритм наивного байесовского алгоритма следующим образом

optimal_alpha = 1
NB_optimal = BernoulliNB(alpha=optimal_aplha)

# fitting the model
NB_optimal.fit(X_tr, y_tr)

# predict the response
pred = NB_optimal.predict(X_test)

# evaluate accuracy
acc = accuracy_score(y_test, pred) * 100
print('\nThe accuracy of the NB classifier for k = %d is %f%%' % (optimal_aplha, acc))

Здесь X_test - это тестовый набор данных, в котором переменная pred сообщает нам, является ли вектор в X_test положительным или отрицательным классом.

Форма X_test (54626 строк, 82343 размера)

длина пред: 54626

Мой вопрос: я хочу получитьслова с наибольшей вероятностью в каждом векторе, так что я могу узнать по словам, почему это предсказано как положительный или отрицательный класс.Следовательно, как получить слова, которые имеют наибольшую вероятность в каждом векторе?

Ответы [ 2 ]

0 голосов
/ 25 мая 2018

Важное значение каждого слова из модели соответствия можно получить с помощью атрибутов coefs_ или feature_log_prob_.Например,

neg_class_prob_sorted = NB_optimal.feature_log_prob_[0, :].argsort()
pos_class_prob_sorted = NB_optimal.feature_log_prob_[1, :].argsort()

print(np.take(count_vect.get_feature_names(), neg_class_prob_sorted[:10]))
print(np.take(count_vect.get_feature_names(), pos_class_prob_sorted[:10]))

Печать десяти самых предсказательных слов для каждого из ваших классов.

0 голосов
/ 25 мая 2018

Попробуйте это:

pred_proba = NB_optimal.predict_proba(X_test)
words = np.take(count_vect.get_feature_names(), pred_proba.argmax(axis=1))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...