如何在Keras中创建AUC自定义函数?



我试图在Keras中创建两个自定义函数f1_metricauc_metricf1_metric工作,但auc不,我收到不同的错误。下面是我的代码:

def f1_metric(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)))
predicted_positives = K.sum(K.round(K.clip(y_pred, 0, 1)))
precision = true_positives / (predicted_positives + K.epsilon())
recall = true_positives / (possible_positives + K.epsilon())
f1_val = 2*(precision*recall)/(precision+recall+K.epsilon())

return f1_val  
def auc_metric(y_true, yhat):

yhat = yhat[:, 1]
# calculate roc curves
fpr, tpr, thresholds = roc_curve(y_true, yhat)
auc=auc(tpr,fpr)
return auc

以下是我的编译和适配代码:

opt = SGD(lr=0.01,momentum=0.9) 
model.compile(loss='binary_crossentropy', optimizer=opt,metrics=['accuracy']) # 
ca = SnapshotEnsemble(n_epochs, n_cycles, 0.01)
# fit model
history=model.fit(trainX, trainy, validation_data=(testX, testy), epochs=n_epochs, 
verbose='auto', callbacks=[ca],batch_size=32)

你知道怎么解决吗?我想定义一个与f1_metric类似的函数。

From comments

近似ROC或PR曲线的AUC(曲线下面积)。

tf.keras.metrics.AUC(
num_thresholds=200, curve='ROC',
summation_method='interpolation', name=None, dtype=None,
thresholds=None, multi_label=False, num_labels=None, label_weights=None,
from_logits=False
)

详情请参阅此处

(转述自《特洛伊船长》)

相关内容

  • 没有找到相关文章

最新更新