Построить кривые ROC от средних и стандартных двух гауссианов, использующих Python без sklearn - PullRequest
0 голосов
/ 27 февраля 2019

Мне нужна помощь, чтобы построить некоторые кривые ROC для моей проблемы.Это моя проблема: из моделирования у меня есть два результата (которые в основном являются характеристиками детектора с учетом двух гипотез), и у меня есть конкретно среднее значение и стандартное отклонение.Всего у меня 4 номера.Я знаю, что мои результаты имеют нормальное распределение.Я хотел бы нарисовать кривые ROC просто, но в Интернете я нашел только туториал, в котором используется sklearn, что кажется мне слишком большим!Это простой способ сделать это?

Это код, который я написал, но он, кажется, не работает должным образом!

def Normal_Distribution(Samples,mean,std):
    x = np.linspace(1/Samples,2.0,Samples) + mean
    Norm = 1.0 / np.sqrt(2*np.pi*(std**2))
    pdf_normal_dist = Norm*np.exp(-((x-mean)**2)/(2.0*(std**2)))/len(x)
    pdf_normal_dist = pdf_normal_dist/np.sum(pdf_normal_dist)
    return pdf_normal_dist


  
def ROC(Number_Samples,bad_pdf, good_pdf):
    x = np.arange(Number_Samples)
    #Total
    total_bad = np.sum(bad_pdf)
    total_good = np.sum(good_pdf)
    #Cumulative sum
    cum_TP = 0
    cum_FP = 0
    #TPR and FPR list initialization
    TPR_list=[]
    FPR_list=[]
    #Iteratre through all values of x
    for i in range(len(x)):
      
        cum_TP+=good_pdf[len(x)-1-i]
        cum_FP+=bad_pdf[len(x)-1-i]
        FPR=cum_FP/total_bad
        TPR=cum_TP/total_good
        TPR_list.append(TPR)
        FPR_list.append(FPR)
    return FPR_list,TPR_list
...