我如何找到FAR和FRR以获得EER

时间:2019-07-19 13:56:12

标签: python-3.x machine-learning keras deep-learning metrics

在这里我试图通过使用Keras查找FAR和FRR来获得ERR,但是我无法计算FAR和ERR 如何计算FAR和FRR

将y_test中的每一行的EER计算为笔画

pred=model.predict(X_test)
y_true=[]
y_pred=[]

index=0

EER=[]
thresh=[]

for n in range(test_stock_index.size-2):
  for z in range(test_stock_index[n+1]-test_stock_index[n]):
    y_true.extend(y_test[index])
    y_pred.extend(pred[index])
    index+=1

  #calculate the EER
  fpr, tpr, threshold = metrics.roc_curve(y_true, y_pred)
  fnr = 1 - tpr
  EER.append(brentq(lambda x : 1. - x - interp1d(fpr, tpr)(x), 0., 1.))

根据输入的接受率,将y_test中每行的EER计算为笔划

    pred=model.predict(X_test)
    y_true=[]
    y_pred=[]

    AR=0.90 #Acceptance rate
    index=0

    EER=[]
    thresh=[]
    for n in range(test_stock_index.size-2):
      for z in range(test_stock_index[n+1]-test_stock_index[n]):
        if pred[index,np.where(y_test[index] == 1)[0][0]] >=AR:
          y_true.append(1)
        else:
          y_true.append(0)
        y_pred.append(pred[index,np.where(y_test[index] == 1)[0][0]])
        index+=1
      #cal the EER
      fpr, tpr, threshold = metrics.roc_curve(y_true, y_pred)
      fnr = 1 - tpr
      EER.append(brentq(lambda x : 1. - x - interp1d(fpr, tpr)(x), 0., 1.))
      #thresh.append(interp1d(fpr, threshold)(EER[n]))
      y_true=[]
      y_pred=[]

    print(ERR)

我尝试了其他操作,但返回

  

分类指标不能同时处理二进制和连续   目标

EER=[]
thresh=[]

for n in range(test_stock_index.size-2):
  for z in range(test_stock_index[n+1]-test_stock_index[n]):
    y_true.extend(y_test[index])
    y_pred.extend(pred[index])
    index+=1

  #calculate the EER
  tn, fp, fn, tp = confusion_matrix(y_true, y_pred)
  FAR = FPR = fp/(fp + tn)
  FRR = FNR = fn/(fn + tp)
  EER.append(brentq(lambda x : 1. - x - interp1d(FAR, FRR)(x), 0., 1.))

0 个答案:

没有答案