Мне интересно, почему данные для построения кривой 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 или какие-либо предложения по этому вопросу? Большое спасибо!