Кривая RO C для модели CNN - PullRequest
       24

Кривая RO C для модели CNN

0 голосов
/ 18 января 2020

Как я могу построить кривую RO C в Python для моделей CNN для ряда пациентов?

Я получил пустую цифру, когда запускаю свой код. Как я могу решить эту ошибку? enter image description here

    acc=0
    fp=0
    tp=0
    fn=0
    lastTenResult=list()
    for el in interPrediction:
        if(el[1]>0.5):
            acc=acc+1
            lastTenResult.append(1)
        else:
            lastTenResult.append(0)
        if(len(lastTenResult)>10):
            acc=acc-lastTenResult.pop(0)
        if(acc>=8):
          fp=fp+1
          lastTenResult=list()
          acc=0
    lastTenResult=list()
    for el in preictPrediction:
        if(el[1]>0.5):
            acc=acc+1
            lastTenResult.append(1)
        else:
            lastTenResult.append(0)
        if(len(lastTenResult)>10):
            acc=acc-lastTenResult.pop(0)
        if(acc>=8):
          tp=tp+1 
        else:
            if(len(lastTenResult)==10):
               fn=fn+1 
                sensitivity=tp/(tp+fn)
    FPR=fp/(secondsInterictalInTest/(60*60))
    TPR=tp/(tp + fn)
  result=result+str(i+1)+','+str(tp)+','+str(fp)+','+str(fn)+','+str(secondsInterictalInTest)+','
    result=result+str(sensitivity)+','+str(FPR)+'\n'
    print('True Positive, False Positive, False negative, Second of Inter in Test, Sensitivity, FPR')
print(str(tp)+','+str(fp)+','+str(fn)+','+str(secondsInterictalInTest)+','+str(sensitivity)+','+str(FPR))
with open(OutputPath, "a+") as myfile:
    myfile.write(result)
    x =FPR  # false_positive_rate
    y =TPR # true_positive_rate 
    # This is the ROC curve
    plt.plot(x,y)
    plt.show()

1 Ответ

0 голосов
/ 18 января 2020

Во-первых, не могли бы вы проверить, что x и y представляют собой список числовых значений с NA? Если да, то можете ли вы попытаться создать такую ​​фигуру?

import matplotlib.pyplot as plt
plt.figure() #             <---------------------------
plt.plot(x,y, label="XXX")
plt.plot([0,1], [0,1], 'r--')
pltt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.show()

В sklearn есть функции, которые позволяют вам сделать это очень легко.

from sklearn.metrics import roc_aus_score
from sklearn.metrics import roc_curve

FPR, TPR, thresholds = roc_curve(Y)

Надеюсь работает для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...