Мультиклассовая классификация с использованием гауссовского NB, дает одинаковый результат для точности, точности и оценки f1 - PullRequest
0 голосов
/ 02 мая 2020

Я новичок в Python и алгоритмах классификации. Я использую GaussianNB для мультиклассовой классификации набора данных NSL KDD, и, в конце концов, мне нужно получить значения точности, напомним, f1.

from sklearn.metrics import accuracy_score
from sklearn.metrics import precision_score
from sklearn.metrics import recall_score
from sklearn.metrics import f1_score
from sklearn.metrics import confusion_matrix, zero_one_loss
from sklearn.metrics import classification_report

from sklearn.naive_bayes import GaussianNB

gnb = GaussianNB()
y_pred = gnb.fit(train_x, train_Y).predict(test_x)

results_nm = confusion_matrix(test_Y,y_pred)
#print(results_nm)
print(classification_report(test_Y,y_pred))
print(accuracy_score(test_Y,y_pred))
print("Precision Score : ",precision_score(test_Y,y_pred, 
                                           pos_label='positive',
                                           average='micro'))
print("Recall Score : ",recall_score(test_Y,y_pred, 
                                           pos_label='positive',
                                           average='micro'))
print(f1_score(test_Y,y_pred,average='micro'))

Я следовал инструкциям в аналогичном вопросе в sklearn метрики для мультиклассовой классификации .

Вывод следующий, но я получаю то же самое вывод для всех трех. В чем может быть причина?

enter image description here

1 Ответ

1 голос
/ 02 мая 2020

Это может произойти, как вы можете видеть в своей матрице путаницы, ваше микро-среднее для всех трех метрик фактически одинаково.

В методе микро-среднего вы суммируете отдельные истинные положительные результаты, ложные срабатывания и ложные отрицания системы для разных наборов и их применения для получения статистики. Например, для набора данных системы

True positive (TP1)  = 12
False positive (FP1) = 5
False negative (FN1) = 10

Тогда точность (P1) и возврат (R1) будут (12 / (12 + 5)) и (12 / (12 + 10) )

Если FP1 == FN1, то они оба будут одинаковыми.

и для другого набора данных

True positive (TP2)  = 50
False positive (FP2) = 7
False negative (FN2) = 7

Тогда точность (P2) ) и вызов (R2) будет таким же.

Теперь средняя точность и отзыв системы с использованием метода микро-среднего значения

enter image description here

Микро-среднее F-Score будет просто средним гармоническим значением c этих двух цифр.

Итак, для конкретных c значений FP и FN , все эти показатели могут быть одинаковыми. Из уравнения можно сказать, что если FP1 + FP2 == FN1 + FN2 , то микросредняя точность и отзыв будут одинаковыми.

Существуют способы, которыми вы можете задавать значения в уравнении, чтобы все 3 метрики давали одно и то же значение, поэтому вы можете попробовать макро-среднее или средневзвешенное значение.

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