Error in printing optimal cutoff value / Type Error: unsupported operand type

Error in printing optimal cutoff value / Type Error: unsupported operand type

我有三个列表:

FPR=[1.0,0.6437673130193906,0.22105263157894736,0.03102493074792244,0.00221606648199446,0.0]
TPR=[1.0,0.9407831900668577,0.7172874880611271,0.3638968481375358,0.10315186246418338,0.0]
thresholds=array([0. , 0.2, 0.4, 0.6, 0.8, 1. ])

我正在尝试检索最佳截止值。我试过下面的代码。

i = np.arange(len(TPR))
roc = pd.DataFrame({'tf' : pd.Series(FPR-(1-FPR), index=i), 'threshold' : pd.Series(thresholds,index=i)})
roc_th = roc.iloc[(roc.tf-0).abs().argsort()[:1]]

但是我在第 2 行遇到错误

TypeError: unsupported operand type(s) for -: 'int' and 'list'

请帮我解决这个问题。如果我可以为您提供任何其他信息,请告诉我。

只需将前两行改为

FPR=np.array([1.0,0.6437673130193906,0.22105263157894736,0.03102493074792244,0.00221606648199446,0.0])
TPR=np.array([1.0,0.9407831900668577,0.7172874880611271,0.3638968481375358,0.10315186246418338,0.0])

当您在定义数据框的行执行 1-FPR 时,您试图从正常的 python 列表中减去 1。这不受支持,因此您的错误是说它不能从 int 和列表中减去 - 。标量-向量减法仅为 numpy 数组定义。