網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
python 插值 —— 如何實(shí)現(xiàn)插值,以及錯(cuò)誤ValueError: A value in x_new is below the interpolation range.
作者:別出BUG求求了 更新時(shí)間: 2023-11-16 編程語(yǔ)言1. 插值
插值,是離散函數(shù)逼近的重要方法,利用它可通過(guò)函數(shù)在有限個(gè)點(diǎn)處的取值狀況,估算出函數(shù)在其他點(diǎn)處的近似值。
插值與擬合有一定差別,但其目的都是類似的,根據(jù)已有數(shù)值,生成預(yù)測(cè)函數(shù),來(lái)預(yù)測(cè)目標(biāo)值。
2. python實(shí)現(xiàn)
下面介紹一下,在Python中如何實(shí)現(xiàn)插值。
import scipy.interpolate as spi
# 準(zhǔn)備數(shù)據(jù),X和Y都是有限離散點(diǎn)集,X與Y是一一對(duì)應(yīng)的
# 我們想用X逼近Y
X
Y
# 準(zhǔn)備插值點(diǎn),就是擬合點(diǎn),用于生成插值函數(shù)
# 1)如果(X, Y)有很多,就從X和Y中選擇一部分點(diǎn),作為插值點(diǎn),選擇的時(shí)候注意一一對(duì)應(yīng);
# 2)如果(X, Y)不太多,則可以選擇所有點(diǎn)作為插值點(diǎn);
# 這里由于(X, Y)很龐大,所以選擇其中一部分點(diǎn)作為插值點(diǎn)
idx = np.arange(1,len(X)+1, 100)
new_x = [list(X)[i] for i in idx]
new_y = [list(Y)[i] for i in idx]
# 生成差值函數(shù)
# kind代表插值函數(shù)格式,有這幾種['linear','zero', 'slinear', 'quadratic', 'cubic', 4, 5]
f = spi.interp1d(X,Y,kind="linear")
# 隨便給一個(gè)x,預(yù)測(cè)Y
x = [1000, 2000]
predict_y = f(x)
如果在預(yù)測(cè)的時(shí)候,出現(xiàn)以下報(bào)錯(cuò)
ValueError: A value in x_new is below the interpolation range.
原因: 在使用上述插值函數(shù)f ff進(jìn)行預(yù)測(cè)的時(shí)候,所給的x的取值超出了【生成該函數(shù)時(shí)候所使用的X】的取值范圍,函數(shù)給不出預(yù)測(cè)值,因此報(bào)錯(cuò)。
解決辦法:加上參數(shù)fill_value="extrapolate"就可以了,函數(shù)會(huì)自動(dòng)推斷給出預(yù)測(cè)值。但是注意:如果需要預(yù)測(cè)的Y YY不是單調(diào)的,使用該參數(shù)自動(dòng)推斷出來(lái)的預(yù)測(cè)值y yy可能會(huì)不準(zhǔn)確。(因?yàn)檫@里面的自動(dòng)推斷,應(yīng)該是按照線性單調(diào)推斷的,這個(gè)我還沒(méi)有確認(rèn)過(guò))
# fill_value="extrapolate"的意思是當(dāng)用該函數(shù)預(yù)測(cè)Y時(shí),如果所給x超出【生成該函數(shù)時(shí)候所使用的X】的取值范圍時(shí),該函數(shù)會(huì)自動(dòng)推測(cè)給出相應(yīng)的預(yù)測(cè)值y。
f = spi.interp1d(X,Y,kind="linear",fill_value="extrapolate")
原文鏈接:https://blog.csdn.net/weixin_39589455/article/details/128098928
- 上一篇:沒(méi)有了
- 下一篇:沒(méi)有了
相關(guān)推薦
- 2022-04-06 Python的type函數(shù)結(jié)果你知道嘛_python
- 2022-06-02 C語(yǔ)言循環(huán)隊(duì)列與用隊(duì)列實(shí)現(xiàn)棧問(wèn)題解析_C 語(yǔ)言
- 2022-07-20 關(guān)于numpy強(qiáng)制類型轉(zhuǎn)換的問(wèn)題_python
- 2022-05-31 Golang庫(kù)插件注冊(cè)加載機(jī)制的問(wèn)題_Golang
- 2022-07-13 VMware Workstations 打開(kāi).vmx 虛擬機(jī)無(wú)反應(yīng)問(wèn)題
- 2022-05-20 如何保證緩存和數(shù)據(jù)庫(kù)的一致性?
- 2022-05-11 linq中的分組操作符_實(shí)用技巧
- 2022-11-05 Android實(shí)現(xiàn)折線圖小工具_(dá)Android
- 欄目分類
-
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支