""" Tạo metadata cho model_odc.joblib (legacy model) """ import json from pathlib import Path # Metadata cho model_odc.joblib # Model này là GridSearchCV Pipeline với 39 features (temporal mode) # Features: NDVI time series + NDWI time series + NDBI time series + radar features # Calculate feature names for temporal mode with 12 timesteps # (12 NDVI + 12 NDWI + 12 NDBI + 3 radar = 39 features) n_timesteps = 12 feature_names = [] # NDVI time series for t in range(n_timesteps): feature_names.append(f"NDVI_t{t+1}") # NDWI time series for t in range(n_timesteps): feature_names.append(f"NDWI_t{t+1}") # NDBI time series for t in range(n_timesteps): feature_names.append(f"NDBI_t{t+1}") # Radar features feature_names.extend(["VH_db_mean", "VV_db_mean", "VH_VV_ratio"]) metadata = { "timestamp": "2025-12-20T10:00:00", "data_source": "Unknown (Legacy model)", "collections": ["sentinel-2-l2a", "sentinel-1-rtc"], "features": feature_names, "feature_mode": "temporal", # IMPORTANT: temporal mode with 39 features "training_samples": None, "testing_samples": None, "test_size": 0.2, "train_accuracy": None, "test_accuracy": None, "model_type": "random_forest", # GridSearchCV with RandomForest "device": "cpu", "n_estimators": 100, "max_depth": None, "learning_rate": None, "cnn_epochs": None, "n_features": 39, # GridSearchCV expects 39 features! "n_classes": 8, "class_names": [ "Lua tom", # 0 "Lua", # 1 "CHN", # 2 "CLN", # 3 "TS", # 4 "Song", # 5 "Dat xay dung", # 6 "Rung" # 7 ], "classification_report": None, "confusion_matrix": None, "bbox": None, "time_range": None, "resolution": 10, "notes": "Legacy GridSearchCV Pipeline model with 39 temporal features (12 timesteps each for NDVI/NDWI/NDBI + 3 radar features). Requires temporal mode feature extraction." } # Save metadata model_train_dir = Path("model_train") metadata_file = model_train_dir / "model_odc_info.json" print("Creating metadata for model_odc.joblib...") print(f"Saving to: {metadata_file}") with open(metadata_file, 'w') as f: json.dump(metadata, f, indent=2) print("✅ Metadata created successfully!") print("\nMetadata content:") print(json.dumps(metadata, indent=2))