从两个独立的数据帧创建Pandas数据帧

2024-09-30 00:36:03 发布

您现在位置:Python中文网/ 问答频道 /正文

试图在给定的曲线下,写出一个函数来解两个给定的区域。正如print语句所证实的那样,Dataframe的列是正确解包的,但是,我没有办法从单独的帧中创建一个新的Dataframe或引用fpr Dataframe的特定索引来进行计算。在

def areaUnderCurve(tpr, fpr):
auc = 0.0
for fpr, tpr in zip(tpr['True Positive Rate'], fpr['False Positive Rate']):
    auc += np.trapz(y=fpr['False Positive Rate'], x=tpr['True Positive Rate'])                      
return auc

calcAUC = areaUnderCurve(dataframe, dataframe)
print(calcAUC)

打印语句的输出示例:

^{pr2}$

***更新用于尝试根据应答计算AUC的代码,收到以下错误“float object is not subscriptable”


Tags: 函数falsetruedataframerate语句曲线print
2条回答

@杰伊·皮伊

为了回答您的第一个问题,您肯定可以从两个数据帧创建一个数据帧

data=pd.DataFrame(zip(tpr['True Positive Rate'],fpr['False Positive Rate']),columns=['TPR','FPR'])

为了计算ROC,可以在这个数据帧上使用以下逻辑

^{pr2}$

随机值示例

tpr=pd.DataFrame(np.random.rand(100,2),columns=['Col1','True Positive Rate'])
fpr=pd.DataFrame(np.random.rand(100,2),columns=['Col2','False Positive Rate'])
data=pd.DataFrame(zip(tpr['True Positive Rate'],fpr['False Positive Rate']),columns=['TPR','FPR'])
data['dFPR']=list(np.diff(data['FPR'].values)) + [0]
data['dTPR']=list(np.diff(data['TPR'].values)) + [0]
data['sum1']=data.apply(lambda x : x['TPR'] * x['dFPR'],axis=1)
data['sum2']=data.apply(lambda x : x['dTPR'] * x['dFPR'],axis=1)
ROC=sum(data['sum1']) + sum(data['sum2'])/2
print(ROC)

0.773539521758

numpy有数值积分的方法,例如,^{}使用梯形规则进行计算。在

import numpy as np

np.trapz(y=fpr['False Positive Rate'], x=tpr['True Positive Rate'])

应该给你这个区域。在

相关问题 更多 >

    热门问题