Geostatistical analysis with scikit-learn style API. Compute variograms, kriging interpolation, and spatial correlation analysis. Use when Claude needs to: (1) Compute experimental variograms from spatial data, (2) Fit variogram models (spherical, exponential, gaussian, matern), (3) Perform Ordinary or Universal Kriging interpolation, (4) Assess spatial anisotropy with directional variograms, (5) Cross-validate spatial models, (6) Analyze spatio-temporal data, (7) Export variogram parameters for other geostatistical software.
import skgstat as skg
import numpy as np
# Create variogram
V = skg.Variogram(coordinates=coords, values=values, n_lags=15)
# Fit model
V.model = 'spherical'
print(f"Range: {V.parameters[0]:.2f}, Sill: {V.parameters[1]:.2f}")
# Kriging interpolation
ok = skg.OrdinaryKriging(V)
predictions = ok.transform(grid_coords)
| Class | Purpose |
|-------|---------|
| Variogram | Empirical and theoretical variograms |
| OrdinaryKriging | Interpolation with spatial correlation |
| DirectionalVariogram | Anisotropic variograms |
| SpaceTimeVariogram | Spatio-temporal analysis |
import skgstat as skg
V = skg.Variogram(
coordinates=coords, # (n, 2) array of x, y
values=values, # (n,) array of measurements
n_lags=15,
maxlag='median' # or specific distance
)
# Fit model: 'spherical', 'exponential', 'gaussian', 'matern', 'stable'
V.model = 'spherical'
# Get parameters
print(f"Range: {V.parameters[0]:.2f}")
print(f"Sill: {V.parameters[1]:.2f}")
print(f"Nugget: {V.parameters[2]:.2f}")
print(f"RMSE: {V.rmse:.4f}")
import skgstat as skg
import numpy as np
V = skg.Variogram(coords, values, model='spherical')
ok = skg.OrdinaryKriging(V)
# Create prediction grid
x = np.linspace(0, 100, 50)
y = np.linspace(0, 100, 50)
xx, yy = np.meshgrid(x, y)
grid_coords = np.column_stack([xx.ravel(), yy.ravel()])
# Predict
predictions = ok.transform(grid_coords)
Z = predictions.reshape(xx.shape)
# Get variance
ok.return_variance = True
predictions, variance = ok.transform(grid_coords)
import skgstat as skg
DV = skg.DirectionalVariogram(
coordinates=coords,
values=values,
azimuth=45, # Direction in degrees
tolerance=22.5, # Angular tolerance
bandwidth='q33' # Perpendicular bandwidth
)
# Check anisotropy
for az in [0, 45, 90, 135]:
DV.azimuth = az
print(f"Azimuth {az}: Range = {DV.parameters[0]:.2f}")
import skgstat as skg
from sklearn.model_selection import cross_val_score
V = skg.Variogram(coords, values, model='spherical')
ok = skg.OrdinaryKriging(V)
scores = cross_val_score(ok, coords, values, cv=5, scoring='neg_mean_squared_error')
print(f"CV RMSE: {np.sqrt(-scores.mean()):.4f}")
import skgstat as skg
# Use robust estimator for noisy data
V = skg.Variogram(
coords, values,
estimator='cressie' # 'matheron', 'cressie', 'dowd', 'genton'
)
| Model | Behavior |
|-------|----------|
| spherical | Most common, linear near origin |
| exponential | Never reaches sill, gradual approach |
| gaussian | Parabolic near origin, smooth |
| matern | Flexible smoothness control |
| Use Case | Tool | Why |
|----------|------|-----|
| Variogram analysis + kriging | scikit-gstat | Modern API, sklearn-compatible |
| GSLIB-style simulation (SGSIM) | GeostatsPy | Full GSLIB simulation engine |
| Kriging with trend/drift | pykrige | Universal kriging, regression kriging |
| Random field generation | gstools | Flexible covariance, SRF generation |
| Spatio-temporal variograms | scikit-gstat | Built-in SpaceTimeVariogram |
| Production geomodelling | SGeMS / Petrel | GUI, large-scale 3D models |
| Robust variogram estimation | scikit-gstat | Cressie, Dowd, Genton estimators |
| ML pipeline integration | scikit-gstat | sklearn fit/transform interface |
Choose scikit-gstat when: You want a Pythonic, scikit-learn-compatible API for variogram fitting and kriging. Best for exploratory geostatistical analysis with cross-validation and integration into ML pipelines.
Choose GeostatsPy when: You need GSLIB-compatible simulation workflows (SGSIM, SISIM) or are working with traditional geostatistical conventions.
Choose pykrige when: You need universal kriging with external drift variables or regression kriging combining geostatistics with machine learning predictions.
Variogram object with appropriate n_lags and maxlagDirectionalVariogram at 0, 45, 90, 135 degreesOrdinaryKriging object from fitted variogramok.transform(grid_coords)ok.return_variance = True to get kriging variancecross_val_score() to assess prediction quality| Issue | Solution |
|-------|----------|
| Variogram flat or erratic | Adjust n_lags and maxlag (try maxlag='median') |
| Poor model fit (high RMSE) | Try different model types or nested structures |
| Kriging too slow | Reduce number of conditioning points or grid resolution |
| Nugget too large | May indicate measurement error; try robust estimators |
| Anisotropy unclear | Use smaller angular tolerance in DirectionalVariogram |
npx skills add SteadfastAsArt/scikit-gstat下载完整 Skill 目录,包含 SKILL.md 及所有相关文件