Untitled

 avatar
unknown
python
6 days ago
1.2 kB
6
Indexable
@app.route("/train", methods=["GET"])
def train_model():
    """Endpoint untuk melatih ulang model SARIMA."""
    df = get_filtered_logs()
    if df is None or df.empty:
        return jsonify({"error": "Data tidak tersedia atau kosong."}), 500
    
    train_size = int(len(df) * 0.8)
    train = df["volume"][:train_size]
    test = df["volume"][train_size:]
    
    model = train_sarima_model(train)
    if model is None:
        return jsonify({"error": "Gagal melatih model SARIMA."}), 500
    
    MODEL_CACHE["model"] = model
    MODEL_CACHE["last_updated"] = datetime.now()
    
    # Evaluasi model
    predictions = model.predict(n_periods=len(test))
    mse = mean_squared_error(test, predictions)
    rmse = np.sqrt(mse)
    
    try:
        model_path = "/home/iqsansyachranie/sarima_model2.pkl"
        with open(model_path, "wb") as f:
            pickle.dump(model, f)
        logger.info("✅ Model SARIMA berhasil disimpan!")
    except Exception as e:
        logger.warning(f"⚠️ Gagal menyimpan model: {str(e)}")
    
    return jsonify({
        "message": "Model berhasil dilatih!",
        "aic": model.aic(),
        "mse": mse,
        "rmse": rmse
    })
Editor is loading...
Leave a Comment