# accuracy, fmeasure, precision,recall
def mcor(y_true, y_pred):
y_pred_pos = K.round(K.clip(y_pred, 0, 1))
y_pred_neg = 1-y_pred_pos
y_pos = K.round(K.clip(y_true, 0, 1))
y_neg = 1-y_pos
tp = K.sum(y_pos*y_pred_pos)
tn = K.sum(y_neg*y_pred_neg)
fp = K.sum(y_neg*y_pred_pos)
fn = K.sum(y_pos*y_pred_neg)
numerator = (tp*tn - fp*fn)
denominator = K.sqrt((tp+fp)*(tp+fn)*(tn+fp)*(tn+fn))
return numerator/(denominator+K.epsilon())
def precision(y_true, y_pred):
true_positives = K.sum(K.round(K.clip(y_true*y_pred, 0, 1)))
predicted_positives = K.sum(K.round(K.clip(y_pred, 0, 1)))
precision = true_positives / (predicted_positives + K.epsilon())
return precision
def recall(y_true, y_pred):
true_positives = K.sum(K.round(K.clip(y_true*y_pred, 0, 1)))
possible_positives = K.sum(K.round(K.clip(y_true, 0, 1)))
recall = true_positives/(possible_positives+K.epsilon())
return recall
def f1(y_true, y_pred):
def recall(y_true, y_pred):
true_positives = K.sum(K.round(K.clip(y_true*y_pred, 0, 1)))
possible_positives = K.sum(K.round(K.clip(y_true, 0, 1)))
recall = true_positives/(possible_positives+K.epsilon())
return recall
def precision(y_true, y_pred):
true_positives = K.sum(K.round(K.clip(y_true * y_pred, 0, 1)))
predicted_positives = K.sum(K.round(K.clip(y_pred, 0, 1)))
precision = true_positives / (predicted_positives + K.epsilon())
return precision
precision = precision(y_true, y_pred)
recall = recall(y_true, y_pred)
return 2*((precision*recall)/(precision+recall+K.epsilon()))