使用不带sklearn的Python使用两个高斯的均值和标准差绘制ROC曲线

时间:2019-02-27 02:29:00

标签: python roc

我需要帮助为我的问题绘制一些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

0 个答案:

没有答案