Version: [5235] PlanX GeoStats Lab 2.1.2

## [2.1.2] - 2026-08-15

- **Bug fix**: Conformal Prediction Interval called
`mapie.regression.MapieRegressor`, an API removed in `mapie` 1.0's
rewrite (the package installs as `mapie` 1.x by default today). Every
run failed with an import error once `mapie` was actually installed.
Rewrote the wrapper (`core/ml_engines.py::fit_conformal_interval`)
against the current
`CrossConformalRegressor`/`fit_conformalize`/`predict_interval` API,
preserving the same jackknife+ cross-conformal method and coverage
semantics; pinned `mapie>=1.0` in `requirements_geostats.txt`.
- **Bug fix**: TabPFN Regression/Classification crashed with a raw
`OSError: [WinError 10038]` instead of a usable error whenever the
one-time TabPFN license/model-download step had not already been
completed, because TabPFN's interactive browser-login prompt polls
`sys.stdin` with `select.select()`, which only supports sockets on
Windows. This is an upstream TabPFN limitation on Windows, not fixable
from the plugin side, so both TabPFN tools now catch the failure and
raise a clear, actionable message: accept the license once at
https://ux.priorlabs.ai/account outside QGIS, then set a permanent
`TABPFN_TOKEN` environment variable so TabPFN authenticates silently
on every future run with no browser prompt.
- Added real QGIS runtime execution coverage for **06 | Machine
Learning and Explainable AI** (all 34 algorithms) to
`tests/qgis_runtime_algorithm_matrix.py`, which previously exercised
Groups 00-05 only. 19 tools that need only scikit-learn now run for
real against the sample data on every verify; the 15 that need an
optional package or TabPFN's license step correctly report that
condition instead of failing. This is how both bugs above were
actually found, rather than assumed fixed.

## [2.1.1] - 2026-08-15

- **Bug fix**: the docked GeoStats Lab panel's group list
(`geostats_dock.py::GEOSTATS_GROUPS`) never included `06 | Machine
Learning and Explainable AI`. All 34 algorithms in that group —
including every tool added in 2.1.0 (Conformal Prediction Interval,
TabPFN, DiCE, CatBoost, EBM) plus the original 26 from 2.0.0 — were
fully registered and runnable from the Processing Toolbox the entire
time, but silently never appeared in the docked panel specifically,
since the panel iterates its own hardcoded group list rather than
reading group ids directly off the provider. Fixed by adding the
missing group entry, and added
`tests/smoke_provider_catalog.py::test_dock_group_list_covers_every_algorithm_group_id`,
which now fails the build if any future group is ever left out of the
dock's list again.

## [2.1.0] - 2026-08-15

- **8 new algorithms, taking the plugin from 73 to 81**, all in **06 |
Machine Learning and Explainable AI**:
  - **Conformal Prediction Interval** — distribution-free prediction
intervals with a proven marginal coverage guarantee (MAPIE's
jackknife+ cross-conformal method), for any regression model in the
group, not just Random Forest/Extra Trees.
  - **TabPFN Regression** and **TabPFN Classification** — a 2025
zero-shot tabular foundation model (Hollmann et al., *Nature*, 2025):
a transformer pretrained once, offline, on millions of synthetic
datasets, performing in-context learning at inference time with no
per-dataset training loop or hyperparameters.
  - **DiCE Counterfactual Explanation** — the action-oriented
complement to SHAP: diverse, minimal field-value changes to one record
that would flip its predicted class (Mothilal, Sharma & Tan, ACM FAT*
2020).
  - **Gradient Boosting Regression/Classification (CatBoost)** — a 4th
GBM engine alongside scikit-learn/XGBoost/LightGBM, using ordered
boosting to remove the target-leakage bias present in classical
gradient boosting (Prokhorenkova et al., NeurIPS 2018).
  - **Explainable Boosting Machine Regression/Classification** — a
glass-box generalized additive model (Lou, Caruana & Gehrke, KDD 2012)
whose per-field contribution to every prediction is exact, read
directly off the fitted model, not approximated by sampling the way
SHAP explains a black-box model.
- **Spatial k-Fold Cross-Validation Evaluator** gained a **kNNDM**
fold-assignment option (Linnenbrink, Milà, Ludwig & Meyer,
*Geoscientific Model Development*, 2024) alongside the existing
K-Means spatial block method — chooses the fold split whose induced
test-to-train distance distribution best matches the dataset's own
leave-one-out distance distribution, rather than optimizing purely for
geographic compactness.
- New optional dependencies (`catboost`, `interpret`, `mapie`,
`dice-ml`, `tabpfn`) install through the existing Setup and
Diagnostics > Install / Update GeoStats Libraries workflow.
- Reference manual expanded with full Theoretical Background /
Mathematical Formulation / Parameters / Output / Interpretation Guide
/ Literature entries for all 8 new tools, and deepened across the 26
pre-existing Machine Learning entries with additional theory
paragraphs, equations, interpretation guidance, and citations.
- Fixed two pre-existing bugs in Multiscale Geographically Weighted
Regression (MGWR), unrelated to this release's new tools, surfaced
while re-running the full QGIS runtime verification gate: an
adaptive-kernel bandwidth-search precondition that previously failed
with an opaque numpy error on small samples now raises a clear,
actionable message instead; and a result-extraction crash when
`hat_matrix=False` (a property access that raised instead of returning
a safe default).

## [2.0.0] - 2026-08-15

- **29 new algorithms, taking the plugin from 44 to 73**, across one
new group plus one existing group:
  - **06 | Machine Learning and Explainable AI (26 tools)**: Random
Forest, Extra Trees, Support Vector, and Neural Network (MLP)
regression/classification; Gradient Boosting regression/classification
across three engines (scikit-learn `HistGradientBoosting`, XGBoost,
LightGBM — six tools total); Spatial k-Fold Cross-Validation Evaluator
(K-Means-blocked folds, not random shuffling, to remove
spatial-autocorrelation leakage); Permutation Feature Importance;
Partial Dependence Report; ML Model Comparison (Leaderboard); **SHAP
Global Feature Importance**, **SHAP Spatial Attribution Map** (writes
every explanatory field's per-record SHAP contribution back onto the
map as a symbolizable `shap_<field>` column — this release's flagship
capability), and **SHAP Local Explanation Report**; Model Residual
Spatial Autocorrelation Check (Global Moran's I on a fitted ML model's
residuals); Prediction Uncertainty Map (per-tree spread for Random
Forest/Extra Trees); DBSCAN, HDBSCAN, and Gaussian Mixture Model
clustering.
  - **05 | Models and Scenarios (+3 tools)**: Spatial Regime
Regression (`spreg.OLS_Regimes` with a joint Chow test for structural
instability across regimes), Quantile Regression (hand-rolled
iteratively-reweighted-least-squares on the pinball loss — no new
dependency), Geographically Weighted Summary Statistics (local
mean/std/skew via the same GWR/MGWR kernel families, plus Kish
effective sample size).
- New optional dependencies (`xgboost`, `lightgbm`, `shap`) install
through the existing Setup and Diagnostics > Install / Update GeoStats
Libraries workflow, alongside
`numba`/`libpysal`/`esda`/`spreg`/`mgwr`/`scikit-learn`.
- A new synthetic classification QA/demo GeoPackage
(`planx_geostats_classification_qa`) fills the gap the bundled Izmir
FUR sample cannot cover on its own — it has no categorical field.
Sample Dataset Guide and Workflow Advisor updated to load and
recommend it.
- Reference manual expanded with a full Theoretical Background /
Mathematical Formulation / Parameters / Output / Interpretation Guide
/ Literature entry for every new tool (44 to 73 manual entries), each
with real academic citations. Manual hero stats, sidebar navigation,
and workflow diagram updated for 7 analytical groups.
- Network centrality and accessibility tools (Network
Betweenness/Closeness/Straightness Centrality, Network Reach, 2SFCA,
Gravity-Based Accessibility, Nearest-Facility Coverage Gap) were
built, then removed before release as out of scope for a
spatial-statistics lab - that functionality already lives in the main
PlanX plugin.

yes

geo140195philo

2026-08-19T07:37:06.344328+00:00

3.28.0

4.99.0

None

no

Version management

Plugin details