关于python出现ValueError: A value in x_new is below the interpolation range.的解决方法

ValueError: A value in x_new is below the interpolation range.

在使用scipy.interpolate.interp1d()函数计算EER的时候出现了上述报错。从如何优雅地平均多条曲线 & scipy.interpolate.interp1d below the interpolation range error 这篇CSDN文章中发现,原因是我在

EER = optimize.brentq(lambda x : 1. - x - interpolate.interp1d(list_FAR, list_TPR)(x), 0., 1.)

插值的点只能在现有点之内,而传给interp1d()函数的list_FAR(x轴)不一定会在0和1有值,即最小值不一定是0,最大值不一定是1,导致函数没法在最小值到0之间插值,最大值到1之间插值。
例如提供的参考点x轴为0.2~0.8,那么就无法在0.2和0.8之外的点插值。

解决方法:人为添加x=0和x=1的参考点,注意添加的时候要看(x,y)连成的曲线趋势是什么样的,如果为单调递增,那么要添加(0,0)和(1,1)的点;如果为单调递减,添加(0,1)和(1,0)的点。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值