98 lines
3.2 KiB
Python
98 lines
3.2 KiB
Python
import os
|
|
import glob
|
|
import json
|
|
from tabulate import tabulate
|
|
|
|
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 = []
|
|
|
|
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
|
|
])
|
|
|
|
for info_file in glob.glob("model_train/*_info.json"):
|
|
with open(info_file, 'r') as f:
|
|
data = json.load(f)
|
|
# Support both 'accuracy' and 'test_accuracy'
|
|
acc = data.get('accuracy', data.get('test_accuracy', ''))
|
|
|
|
f1 = data.get('f1_score', '')
|
|
precision = data.get('precision', '')
|
|
recall = data.get('recall', '')
|
|
|
|
clf_rep = data.get('classification_report')
|
|
if isinstance(clf_rep, dict) and 'macro avg' in clf_rep:
|
|
if not f1:
|
|
f1 = clf_rep['macro avg'].get('f1-score', '')
|
|
if not precision:
|
|
precision = clf_rep['macro avg'].get('precision', '')
|
|
if not recall:
|
|
recall = clf_rep['macro avg'].get('recall', '')
|
|
|
|
if not acc and not f1:
|
|
continue
|
|
|
|
params = data.get('params', {})
|
|
param_str = f"estimators:{params.get('n_estimators')}, depth:{params.get('max_depth')}" if params else "N/A"
|
|
|
|
if data.get('model_type') == 'RandomForest_RealData':
|
|
param_str = "estimators:100, depth:15"
|
|
|
|
land_data.append([
|
|
data.get('model_type', ''),
|
|
acc,
|
|
precision,
|
|
recall,
|
|
f1,
|
|
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")
|