2015-05-27 12 views
4

我正在考慮使用這種方法來插入我有的一些3D點。作爲一個輸入,我在一個地區的不同高度上都有大氣濃度的氣體。我所看到的數據是每隔幾英尺垂直高程幾十英尺的數值,但水平分隔數百英尺(所以緊密排列的「列」)。Python - 克里格(高斯過程)在scikit_learn

這個假設是,在任何給定的時間點,垂直方向的數值顯着大於水平方向的數值。

我想執行三維克裏格法的假設佔(作爲一個參數,我可以調整,或者是統計定義 - 或/)。

我相信scikit學習模塊可以做到這一點。如果可以,我的問題是如何創建離散單元格輸出?也就是說,輸出到尺寸爲50 x 50 x 1英尺的3D數據網格中。理想情況下,我希望將[x_location,y_location,value]的輸出與這些(或相似)距離分開。

不幸的是我沒有足夠的時間去玩弄它,所以我只是希望在深入研究之前弄清楚在Python中這是否可行。謝謝!

回答

3

是的,你絕對可以在scikit_learn這樣做。

事實上,它是克里金/高斯過程迴歸的基本特徵,您可以使用各向異性協方差內核。

由於它在manual(下面引用)中進行了精簡,您可以自己設置協方差的參數或估計它們。你可以選擇所有參數相同或不同。

theta0:double array_like,可選 帶形狀(n_features)或(1,)的數組。自相關模型中的參數爲 。如果還指定thetaL和thetaU,則認爲該最佳可能性的起點是對最佳參數組的估計。默認假定各向同性 具有theta0 = 1e-1的自相關模型。

0

在2D情況下,這樣的事情應該工作:

import numpy as np 
from sklearn.gaussian_process import GaussianProcess 

x = np.arange(1,51) 
y = np.arange(1,51) 
X, Y = np.meshgrid(lons, lats) 

points = zip(obs_x, obs_y) 
values = obs_data # Replace with your observed data 

gp = GaussianProcess(theta0=0.1, thetaL=.001, thetaU=1., nugget=0.001) 
gp.fit(points, values) 
XY_pairs = np.column_stack([X.flatten(), Y.flatten()]) 
predicted = gp.predict(XY_pairs).reshape(X.shape)