Почему GaussianNB дает только две координаты на кривой точного возврата? - PullRequest
1 голос
/ 12 апреля 2020

Мне интересно, почему данные для построения кривой PR из классификатора GaussianNB дают только две координаты в кривой PR, тогда как другие классификаторы дают более разумный результат. Моя цель - классифицировать некоторые изображения.

У меня есть несколько классификаторов: RandomForestClassifier, KNeighborsClassifier, LinearDiscriminantAnalysis, LogisticRegression, SV C, GaussianNB, AdaBoostClassifier

nb = GaussianNB()

classifiers = [rf,
                   knn,
                   lda,
                   lr,
                   svm,
                   nb,
                   AdaBoost,
                  ]

И мне бы хотелось построить несколько кривых PR в пределах одного графика

for cls in classifiers:
   model = cls.fit(trainDataGlobal, trainLabelsGlobal) #trainDataGlobal = image features (532 feature vectors) from training images, trainLabelsGlobal = image labels for training images
   yproba_pr = model.predict_proba(testDataGlobal)[::,1] #testDataGlobal = image features from testing images

   precision, recall, _ = precision_recall_curve(testLabelsGlobal,  yproba_pr, pos_label = 1)
   average_precision = average_precision_score(testLabelsGlobal, yproba_pr)

   result_table_pr = result_table_pr.append({'classifiers':cls.__class__.__name__,
                                             'Recall':recall, 
                                             'Precision':precision, 
                                             'ap':average_precision}, ignore_index=True)
   result_table_pr.set_index('classifiers', inplace=True)

Таблица результатов, которую я могу получить, выглядит примерно так Таблица для создания кривой PR

Это смутило меня, потому что только результат кривой PR конкретного классификатора сбивает с толку, в то время как другие имеют смысл. И затем я дважды проверяю вероятности предсказания в классификаторе GaussianNB при предсказании класса изображения:

array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
   1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
   1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
   1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
   1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])

Я думаю, что здесь должны быть некоторые проблемы, где наивная байесовская вероятность всегда равна 1. Если существуют только две координаты, то площадь под кривой (т. е. средняя точность) должна быть не 0,35, а 0,5?

Может ли кто-нибудь оказать мне помощь в решении этой проблемы. Как я могу исправить кривую PR для классификатора NB или какие-либо предложения по этому вопросу? Большое спасибо!

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