Python - Kriging (Gaussian Process) in scikit_learn

前端 未结 2 461
旧时难觅i
旧时难觅i 2021-01-05 04:25

I am considering using this method to interpolate some 3D points I have. As an input I have atmospheric concentrations of a gas at various elevations over an area. The data

相关标签:
2条回答
  • 2021-01-05 05:29

    Yes, you can definitely do that in scikit_learn.

    In fact, it is a basic feature of kriging/Gaussian process regression that you can use anisotropic covariance kernels.

    As it is precised in the manual (cited below) ou can either set the parameters of the covariance yourself or estimate them. And you can choose either having all parameters equal or all different.

    theta0 : double array_like, optional An array with shape (n_features, ) or (1, ). The parameters in the autocorrelation model. If thetaL and thetaU are also specified, theta0 is considered as the starting point for the maximum likelihood estimation of the best set of parameters. Default assumes isotropic autocorrelation model with theta0 = 1e-1.

    0 讨论(0)
  • 2021-01-05 05:30

    In the 2d case, something like this should work:

    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)
    
    0 讨论(0)
提交回复
热议问题