Poizon-App / utils.py
aus10powell's picture
Upload 11 files
d3b11cc
"""
This module contains custom metric functions for binary classification models using TensorFlow and Keras.
Functions:
- f1(y_true, y_pred): Computes the F1 score metric for binary classification models.
- recall(y_true, y_pred): Computes the recall metric for binary classification models.
- precision(y_true, y_pred): Computes the precision metric for binary classification models.
"""
import tensorflow as tf
from tensorflow.keras import backend as K
def f1(y_true, y_pred):
y_pred = K.round(y_pred)
tp = K.sum(K.cast(y_true * y_pred, "float"), axis=0)
tn = K.sum(K.cast((1 - y_true) * (1 - y_pred), "float"), axis=0)
fp = K.sum(K.cast((1 - y_true) * y_pred, "float"), axis=0)
fn = K.sum(K.cast(y_true * (1 - y_pred), "float"), axis=0)
precision = tp / (tp + fp + K.epsilon())
recall = tp / (tp + fn + K.epsilon())
f1_score = 2 * precision * recall / (precision + recall + K.epsilon())
return f1_score
def recall(y_true, y_pred):
y_pred = K.round(y_pred)
tp = K.sum(K.cast(y_true * y_pred, "float"), axis=0)
fn = K.sum(K.cast(y_true * (1 - y_pred), "float"), axis=0)
recall = tp / (tp + fn + K.epsilon())
return recall
def precision(y_true, y_pred):
y_pred = K.round(y_pred)
tp = K.sum(K.cast(y_true * y_pred, "float"), axis=0)
fp = K.sum(K.cast((1 - y_true) * y_pred, "float"), axis=0)
precision = tp / (tp + fp + K.epsilon())
return precision