geocif 0.2.68__tar.gz → 0.2.70__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {geocif-0.2.68/geocif.egg-info → geocif-0.2.70}/PKG-INFO +1 -1
- {geocif-0.2.68 → geocif-0.2.70}/geocif/geocif.py +1 -1
- {geocif-0.2.68 → geocif-0.2.70}/geocif/ml/feature_selection.py +24 -5
- {geocif-0.2.68 → geocif-0.2.70/geocif.egg-info}/PKG-INFO +1 -1
- {geocif-0.2.68 → geocif-0.2.70}/setup.py +1 -1
- {geocif-0.2.68 → geocif-0.2.70}/LICENSE +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/MANIFEST.in +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/README.md +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/__init__.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/agmet/__init__.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/agmet/geoagmet.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/agmet/plot.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/agmet/utils.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/analysis.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/backup/__init__.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/backup/constants.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/backup/features.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/backup/geo.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/backup/geocif.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/backup/metadata.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/backup/models.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/cei/__init__.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/cei/definitions.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/cei/indices.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/experiments.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/geocif_runner.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/indices_runner.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/indices_runner_algeria.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/indices_runner_angola.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/indices_runner_madagascar.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/indices_runner_malawi.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/indices_runner_mozambique.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/indices_runner_south_africa.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/indices_runner_zambia.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/indices_runner_zimbabwe.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/logger.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/ml/__init__.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/ml/correlations.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/ml/embedding.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/ml/feature_engineering.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/ml/outliers.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/ml/outlook.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/ml/output.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/ml/spatial_autocorrelation.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/ml/stages.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/ml/stats.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/ml/trainers.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/ml/trend.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/ml/xai.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/mm.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/playground/__init__.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/playground/aa.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/playground/aaaa.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/playground/area.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/playground/automl.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/playground/download_esi.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/playground/enso.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/playground/eval.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/playground/gamtest.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/playground/gee_access.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/playground/misc.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/playground/play_xagg.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/playground/reg.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/playground/sustain.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/playground/test_catboost.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/playground/tmp.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/playground/tmp2.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/playground/tmp3.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/playground/tmp4.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/playground/tmp5.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/playground/wolayita.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/playground/wolayita_maize_mask.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/playground/wolayita_v2.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/playground/wolayita_v3.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/risk/__init__.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/risk/impact_assessment.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/utils.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/viz/__init__.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/viz/gt.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/viz/plot.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/viz/tmp.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif/viz/viz_ml.py +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif.egg-info/SOURCES.txt +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif.egg-info/dependency_links.txt +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif.egg-info/not-zip-safe +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/geocif.egg-info/top_level.txt +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/requirements.txt +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/setup.cfg +0 -0
- {geocif-0.2.68 → geocif-0.2.70}/tests/test_geocif.py +0 -0
@@ -841,7 +841,7 @@ class Geocif:
|
|
841
841
|
df_region_train.reset_index(drop=True, inplace=True)
|
842
842
|
df_region_train = df_region_train.dropna(subset=[self.target_column])
|
843
843
|
|
844
|
-
self.X_train = df_region_train[self.feature_names]
|
844
|
+
self.X_train = df_region_train[self.feature_names + ["Region"]]
|
845
845
|
|
846
846
|
# Drop any columns with NaNs except the lag yield columns
|
847
847
|
lag_prefix = "t -"
|
@@ -65,7 +65,6 @@ def select_features(
|
|
65
65
|
X_filtered : pd.DataFrame of selected features
|
66
66
|
selected_features : list[str]
|
67
67
|
"""
|
68
|
-
|
69
68
|
# copy original for multi-mode recursion
|
70
69
|
X_clean = X.copy()
|
71
70
|
|
@@ -250,10 +249,30 @@ def select_features(
|
|
250
249
|
|
251
250
|
elif method == "BorutaPy":
|
252
251
|
from boruta import BorutaPy
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
252
|
+
from collections import Counter
|
253
|
+
import itertools as it
|
254
|
+
|
255
|
+
region_selected = {} # {region: [features …]}
|
256
|
+
for region in tqdm(X_clean["Region"].unique(), desc="BorutaPy", leave=False):
|
257
|
+
idx = X_clean["Region"] == region
|
258
|
+
X_region = X_clean.loc[idx].drop(columns=["Region"])
|
259
|
+
y_region = y.loc[idx] if hasattr(y, "loc") else y[idx]
|
260
|
+
|
261
|
+
sel = BorutaPy(
|
262
|
+
estimator=forest,
|
263
|
+
n_estimators="auto",
|
264
|
+
random_state=42,
|
265
|
+
verbose=0
|
266
|
+
)
|
267
|
+
sel.fit(X_region.values, y_region.values)
|
268
|
+
|
269
|
+
region_selected[region] = (
|
270
|
+
X_region.columns[sel.support_ | sel.support_weak_].tolist()
|
271
|
+
)
|
272
|
+
|
273
|
+
# ─── 3. keep features chosen in ≥ 2 regions ------------------------------
|
274
|
+
counts = Counter(it.chain.from_iterable(region_selected.values()))
|
275
|
+
selected = [feat for feat, n in counts.items() if n >= 2]
|
257
276
|
|
258
277
|
elif method == "Leshy":
|
259
278
|
import arfs.feature_selection.allrelevant as arfsgroot
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|