## [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
Plugin Tags