#python #keras #deep-learning #conv-neural-network #predict
Вопрос:
Должно ли пороговое значение всегда быть 0,5 или мы можем настроить его в соответствии с нашими потребностями ? Я пытаюсь обнаружить пожар в видео, анализируя каждый кадр. Когда я это делаю, я получаю много ложных отрицательных результатов, когда мое пороговое значение уверенности ( confidence = model.predict(img)
) равно o.5. Так могу ли я на самом деле скорректировать значение, чтобы получить лучшие результаты, или это похоже на обман прогноза модели ?
Это мой код:
from keras.preprocessing import image import numpy as np i = cv2.imread(img) img = image.load_img(img,target_size=(250,250)) img = image.img_to_array(img) img = np.expand_dims(img,axis=0) img = img / 255 res = (model.predict(img) gt; 0.5).astype(np.int32) if res == 0: print('Fire Detected') else: print('No Fire Detected.')
Комментарии:
1. Вы можете настроить его, посмотрев на кривую ROC и т. Д.
Ответ №1:
Вам не нужно использовать пороговое значение 0.5. Это так, потому что обычно модели классификации максимизируют точность, и для этого показателя 0,5 имеет наибольший смысл. Однако ваша проблема может быть другой, может быть, вы заботитесь о точности больше, чем о запоминании? Затем настройка порога является одним из способов настройки вашей модели (например, путем построения кривой ROC, чтобы увидеть возможные компромиссы). Это несколько наивный способ, хотя, и можно также просто спросить себя «какова моя фактическая цель» перед тем, как начать, и максимизировать эту метрику с самого начала, вместо того, чтобы максимизировать точность, а затем настроить пороговое значение, чтобы настроить другое. Например, для устранения дисбаланса между положительными/отрицательными классами вы можете рассмотреть возможность взвешивания классов и т. Д. (это позволит эффективно максимизировать точность взвешивания).