Cập nhật mã nguồn và file Colab Cache
This commit is contained in:
@@ -0,0 +1,110 @@
|
||||
import os
|
||||
import glob
|
||||
import json
|
||||
import subprocess
|
||||
import time
|
||||
from tabulate import tabulate
|
||||
|
||||
scripts = [
|
||||
"train_land_randomforest.py",
|
||||
"train_cloud_cnn.py",
|
||||
"train_cloud_swin_unet.py",
|
||||
"train_ndvi_statistical.py",
|
||||
"train_ndvi_lstm_gru.py",
|
||||
"train_ndvi_convlstm.py",
|
||||
"train_ndvi_hybrid_physics.py",
|
||||
"train_ndvi_ensemble.py"
|
||||
]
|
||||
|
||||
print("🚀 Đang khởi chạy song song tất cả các mô hình...")
|
||||
processes = []
|
||||
for script in scripts:
|
||||
if os.path.exists(script):
|
||||
cmd = f"source /home/x79/miniconda3/etc/profile.d/conda.sh && conda activate env_01 && python {script}"
|
||||
p = subprocess.Popen(["bash", "-c", cmd], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
|
||||
processes.append((script, p))
|
||||
|
||||
for script, p in processes:
|
||||
p.wait()
|
||||
|
||||
print("✅ Đã chạy xong tất cả các mô hình!\n")
|
||||
print("📊 BẢNG SO SÁNH KẾT QUẢ CÁC MÔ HÌNH\n")
|
||||
|
||||
# 1. Phân loại đất
|
||||
print("### 1. Nhóm Phân loại Lớp phủ (Land Classification)")
|
||||
land_data = []
|
||||
|
||||
# Đọc XGBoost từ thư mục gốc
|
||||
if os.path.exists("model_xgboost_info.json"):
|
||||
with open("model_xgboost_info.json", 'r') as f:
|
||||
data = json.load(f)
|
||||
params = data.get('params', {})
|
||||
param_str = f"estimators:{params.get('n_estimators')}, depth:{params.get('max_depth')}" if params else "N/A"
|
||||
land_data.append([
|
||||
data.get('model_type', 'XGBoost'),
|
||||
data.get('accuracy', ''),
|
||||
data.get('precision', ''),
|
||||
data.get('recall', ''),
|
||||
data.get('f1_score', ''),
|
||||
param_str
|
||||
])
|
||||
|
||||
# Đọc các model khác trong model_train
|
||||
for info_file in glob.glob("model_train/*_info.json"):
|
||||
with open(info_file, 'r') as f:
|
||||
data = json.load(f)
|
||||
# Chỉ lấy các model có độ chính xác (để lọc model rác/cũ)
|
||||
if 'accuracy' not in data and 'f1_score' not in data:
|
||||
continue
|
||||
|
||||
params = data.get('params', {})
|
||||
param_str = f"estimators:{params.get('n_estimators')}, depth:{params.get('max_depth')}" if params else "N/A"
|
||||
|
||||
# Fallback for Random Forest
|
||||
if data.get('model_type') == 'RandomForest_RealData':
|
||||
param_str = "estimators:100, depth:15"
|
||||
|
||||
land_data.append([
|
||||
data.get('model_type', ''),
|
||||
data.get('accuracy', ''),
|
||||
data.get('precision', ''),
|
||||
data.get('recall', ''),
|
||||
data.get('f1_score', ''),
|
||||
param_str
|
||||
])
|
||||
|
||||
if land_data:
|
||||
print(tabulate(land_data, headers=["Model", "Accuracy", "Precision", "Recall", "F1-Score", "Parameters"], tablefmt="github"))
|
||||
print("\n")
|
||||
|
||||
# 2. Xóa mây
|
||||
print("### 2. Nhóm Xóa mây (Cloud Removal)")
|
||||
cloud_data = []
|
||||
for info_file in glob.glob("cloud_removal_model/*_info.json"):
|
||||
with open(info_file, 'r') as f:
|
||||
data = json.load(f)
|
||||
cloud_data.append([
|
||||
data.get('model_type', ''),
|
||||
data.get('epoch', ''),
|
||||
data.get('train_loss', ''),
|
||||
data.get('val_loss', '')
|
||||
])
|
||||
if cloud_data:
|
||||
print(tabulate(cloud_data, headers=["Model", "Epochs", "Train Loss", "Val Loss"], tablefmt="github"))
|
||||
print("\n")
|
||||
|
||||
# 3. Dự báo NDVI
|
||||
print("### 3. Nhóm Dự báo Thực vật (NDVI Forecasting)")
|
||||
ndvi_data = []
|
||||
for info_file in glob.glob("ndvi_forecast_model/*_info.json"):
|
||||
with open(info_file, 'r') as f:
|
||||
data = json.load(f)
|
||||
ndvi_data.append([
|
||||
data.get('model_type', ''),
|
||||
data.get('rmse', ''),
|
||||
data.get('mae', ''),
|
||||
data.get('epoch', 'N/A')
|
||||
])
|
||||
if ndvi_data:
|
||||
print(tabulate(ndvi_data, headers=["Model", "RMSE", "MAE", "Epochs"], tablefmt="github"))
|
||||
print("\n")
|
||||
Reference in New Issue
Block a user