refactor: reorganize project structure by moving core modules and update import paths in API server
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
#!/usr/bin/env python
|
||||
# coding: utf-8
|
||||
import os
|
||||
import json
|
||||
import joblib
|
||||
import numpy as np
|
||||
from sklearn.ensemble import VotingRegressor
|
||||
from sklearn.linear_model import LinearRegression
|
||||
from sklearn.ensemble import RandomForestRegressor
|
||||
from core.ndvi_data_loader import NDVITimeSeriesDataset
|
||||
|
||||
print("=" * 70)
|
||||
print("🚀 Training Multi-Model Ensemble for NDVI (REAL DATA & CPU)")
|
||||
print("=" * 70)
|
||||
|
||||
dataset = NDVITimeSeriesDataset(sequence_length=5, spatial=False)
|
||||
|
||||
X_train, y_train = [], []
|
||||
for x, y in dataset:
|
||||
X_train.append(x.numpy().flatten())
|
||||
y_train.append(y.numpy().flatten()[0])
|
||||
|
||||
X_train = np.array(X_train)
|
||||
y_train = np.array(y_train)
|
||||
|
||||
print(f"\n[TRAIN] Bắt đầu Training Ensemble trên {len(X_train)} samples...")
|
||||
# CPU Ensemble
|
||||
model1 = LinearRegression()
|
||||
model2 = RandomForestRegressor(n_estimators=50, random_state=42)
|
||||
ensemble = VotingRegressor([('lr', model1), ('rf', model2)])
|
||||
|
||||
ensemble.fit(X_train, y_train)
|
||||
|
||||
# Predict and calc error
|
||||
preds = ensemble.predict(X_train)
|
||||
mse = np.mean((preds - y_train)**2)
|
||||
|
||||
model_dir = "ndvi_forecast_model"
|
||||
model_path = os.path.join(model_dir, "ndvi_ensemble_real.joblib")
|
||||
joblib.dump(ensemble, model_path)
|
||||
print(f"\n[SAVE] Model saved to {model_path}")
|
||||
|
||||
with open(os.path.join(model_dir, "ndvi_ensemble_real_info.json"), "w") as f:
|
||||
json.dump({
|
||||
"model_type": "Multi-Model Ensemble (Real Data & CPU)",
|
||||
"target": "NDVI",
|
||||
"rmse": float(mse**0.5),
|
||||
"mae": float(np.mean(np.abs(preds - y_train)))
|
||||
}, f, indent=2)
|
||||
print("[SAVE] Model info saved.")
|
||||
Reference in New Issue
Block a user