Py学习  »  Python

如何让python中的函数在两个列表(每个列表都有自己的x,y)之间进行插值?

Gordon • 4 年前 • 196 次点击  

我对python比较陌生,有一个复杂而有趣的问题(IMO),我正试图解决,但不知道如何继续。

我有一个数据集,包含三个参数:

  • 年龄(18,20,25,30。。。。最多59步,第5步)
  • 覆盖范围(50k、100k、150k、200k)
  • 保险费(一定年龄和一定保险范围的保险费)

可视化

enter image description here

#Age
Age = ["18","20","25","30","35","40","45","50","55","59"]
#Insurance coverage
Coverage = ["50000","100000","150000","200000"]

#Premiums Data
Cover50k_Annual_Premium = [473.05,501.90,588.45,698.05,842.25,1032.65,1298.05,1696.10,2376.85,3380.65]
Cover100k_Annual_Premium = [946.10,1003.80,1176.90,1396.10,1684.55,2065.30,2596.05,3392.15,4753.65,6761.25]
Cover150k_Annual_Premium = [1419.15,1505.70,1765.30,2094.15,2526.80,3097.95,3894.10,5088.25,7130.50,10141.90]
Cover200k_Annual_Premium = [1892.25,2007.60,2353.75,2792.20,3369.10,4130.60,5192.10,6784.35,9507.30,13522.55 ]

#Matrix
Premiums = np.array([Cover50k_Annual_Premium, Cover100k_Annual_Premium, Cover150k_Annual_Premium, Cover200k_Annual_Premium])

#visualization
plt.plot(Cover50k_Annual_Premium, c='Black', ls= '--', marker='o', label='50k')
plt.plot(Cover100k_Annual_Premium, c='red', ls= '--', marker='o', label='100k')
plt.plot(Cover150k_Annual_Premium, c='blue', ls= '--', marker='o', label='150k')
plt.plot(Cover200k_Annual_Premium, c='green', ls= '--', marker='o', label='200k')

# interpolate between all premiums
# formula: interp = [(i1 + i2)/2.0 for i1, i2 in zip(l1, l2)]
interp_premiums = [(Cover50k_Annual_Premium+Cover100k_Annual_Premium+Cover150k_Annual_Premium+Cover200k_Annual_Premium)/4.0 
          for Cover50k_Annual_Premium, Cover100k_Annual_Premium, Cover150k_Annual_Premium, Cover200k_Annual_Premium 
          in zip(Cover50k_Annual_Premium, Cover100k_Annual_Premium, Cover150k_Annual_Premium, Cover200k_Annual_Premium)]

plt.plot(interp_premiums, c='magenta', ls= '--', marker='o', label='interp')

plt.legend(loc='upper left',bbox_to_anchor=(1,1))
plt.xticks(list(range(0,10)),Age, rotation='vertical')
plt.show()

interp_premiums

# given Age 27, find the Premiums for 50k, 100k, 150k, 200k
# ?????

我试图得到一个人在给定年龄(如27岁)的每个保险范围(50k,100k,150k,200k)的估计保费(内插),但我卡住了。

最后,如果我在所有保险范围内返回一个给定的人的估计保险费列表,以便我也可以在保险范围之间插入(例如,27岁的人的保险费是多少,保险费是125k),那会更好。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/49335
 
196 次点击  
文章 [ 1 ]  |  最新文章 4 年前