對某個多項式函式,已知有給定的k + 1個取值點:
其中xj對應著自變數的位置,而yj對應著函式在這個位置的取值。
假設任意兩個不同的xj都互不相同,那麼應用拉格朗日插值公式所得到的拉格朗日插值多項式為:
其中每個
為拉格朗日基本多項式(或稱插值基函式),其表示式為:
拉格朗日基本多項式
的特點是在xj上取值為1,在其它的點xi,i≠j上取值為0。
假設有某個二次多項式函式f,已知它在三個點上的取值為:
要求 f(18) 的值。
首先寫出每個拉格朗日基本多項式:
然後應用拉格朗日插值法,就可以得到p的表示式(p為函式f的插值函式):
此時代入數值18就可以求出所需之值:
import pandas as pd # 匯入資料分析庫pandas
from scipy.interpolate import lagrange # 匯入拉格朗日插值函式
inputfile =
'../data/catering_sale.xls'
# 銷量資料路徑
outputfile =
'../tmp/sales.xls'
# 輸出資料路徑
data = pd.read_excel(inputfile)
# 讀入資料
data[u'銷量'][
(data[u'銷量'
]<
400)
|(data[u'銷量'
]>
5000)]
=none
# 過濾異常值,將其變為空值
# 自定義列向量插值函式
# s為列向量,n為被插值的位置,k為取前後的資料個數,預設為5
defployinterp_column
(s, n, k=5)
: y = s[
list
(range
(n-k, n))+
list
(range
(n+1
, n+
1+k))]
# 取數
y = y[y.notnull()]
# 剔除空值
return lagrange(y.index,
list
(y))
(n)# 插值並返回插值結果
# 逐個元素判斷是否需要插值
for i in data.columns:
for j in
range
(len
(data)):
if(data[i]
.isnull())
[j]:
# 如果為空即插值。
data[i]
[j]= ployinterp_column(data[i]
, j)
data.to_excel(outputfile)
# 輸出結果,寫入檔案
keyerror: 『passing list-likes to .loc or with any missing labels is no longer supported, see
import pandas as pd # 匯入資料分析庫pandas
from scipy.interpolate import lagrange # 匯入拉格朗日插值函式
inputfile =
'../data/catering_sale.xls'
# 銷量資料路徑
outputfile =
'../tmp/sales.xls'
# 輸出資料路徑
data = pd.read_excel(inputfile)
# 讀入資料
data.loc[
((data[
'銷量'
]<
400)
|(data[
'銷量'
]>
5000))
,'銷量']=
none
# 過濾異常值,將其變為空值
# 自定義列向量插值函式
# s為列向量,n為被插值的位置,k為取前後的資料個數,預設為5
defployinterp_column
(s, n, k=5)
: y = s.reindex(
(list
(range
(n-k, n))+
list
(range
(n+1
, n+
1+k)))
# 取數
y = y[y.notnull()]
# 剔除空值
return lagrange(y.index,
list
(y))
(n)# 插值並返回插值結果
# 逐個元素判斷是否需要插值
for i in data.columns:
for j in
range
(len
(data)):
if(data[i]
.isnull())
[j]:
# 如果為空即插值。
data.loc[j, i]
= ployinterp_column(data[i]
, j)
data.to_excel(outputfile)
# 輸出結果,寫入檔案
錯誤是傳遞了不存在標籤的索引,上述**
y = s[list(range(n-k, n)) + list(range(n+1, n+1+k))]當n,也就是行索引在資料頭或尾k個位置之內時會產生源資料不存在的行索引,0.21.0版本之前會為對應的索引建立nan值,0.21.0版本之後會報錯誤
拉格朗日插值法的公式結構整齊緊湊,在理論分析中十分方便,然而在計算中,當插值點增加或減少乙個時,所對應的基本多項式就需要全部重新計算,於是整個公式都會變化,非常繁瑣。這時可以用重心拉格朗日插值法或牛頓插值法來代替。此外,當插值點比較多的時候,拉格朗日插值多項式的次數可能會很高,因此具有數值不穩定的特點,也就是說儘管在已知的幾個點取到給定的數值,但在附近卻會和「實際上」的值之間有很大的偏差。這類現象也被稱為龍格現象,解決的辦法是分段用較低次數的插值多項式。
Python資料分析與挖掘實戰 挖掘建模
常用的分類與 演算法 1回歸模型分類 1線性回歸 自變數因變數線性關係,最小二乘法求解 2非線性回歸 自變數因變數非線性關係,函式變換為線性關係,或非線性最小二乘方法求解 3logistic回歸 因變數一般有1和0兩種取值,將因變數的取值範圍控制再0 1範圍內 4嶺回歸 自變數之間具有多重共線性 5...
python資料分析與挖掘實戰 資料探勘基礎
從大量資料 包括文字 中挖掘出隱含的 未知的 對決策有潛在價值的關係 模式和趨勢,並用這些知識和規則建立用於決策支援的模型,提高 性決策支援的方法 工具和過程,就是資料探勘 它是利用各種分析工具在大量資料中尋找其規律和發現模型與資料之間關係的過程,是統計學 資料庫技術和人工智慧技術的綜合。1.定義挖...
Python資料分析與挖掘實戰學習07
一 python基礎 1.python簡介 python是一種物件導向的解釋型語言,由荷蘭人guido van rossum與1989年發明,第乙個公開發行版本於1991年發布。python語法簡潔清晰,強制用空白符作為語句縮排。python語言最大的特點是簡單和強大。2.python庫 1 bas...