telco-churn-app / scripts /test_phase2.py
ziadkassem's picture
Added full pipeline
63289b7
import os
import pandas as pd
import sys
from mlflow.models import infer_signature
import mlflow
import mlflow.xgboost
sys.path.append(os.path.join(os.path.dirname(__file__), "..", "src"))
from data.load_data import load_data
from models.evaluate import evaluate_model
from models.train import train_model
mlflow.set_tracking_uri("http://127.0.0.1:5000")
mlflow.set_experiment("First Experiment")
def main():
df = load_data("data/processed/train_processed.csv")
print("Data loaded for modelling!")
model,X_test,y_test,train_metrics,params = train_model(df,target_col="Churn")
# X_test_float = X_test.astype("float64")
evaluate_results = evaluate_model(model,X_test,y_test)
signature = infer_signature(X_test,y_test)
with mlflow.start_run():
mlflow.log_params(params)
for param, value in evaluate_results.items():
if param != "classification_threshold":
mlflow.log_metric(param,value)
mlflow.log_param("classification_threshold",evaluate_results["classification_threshold"])
mlflow.xgboost.log_model(model,name="xgboost_model",signature=signature)
if __name__=="__main__":
main()
# mlflow server --backend-store-uri sqlite:///C:/mlflow_server/mlflow.db --default-artifact-root file:///C:/mlflow_server/artifacts --host 127.0.0.1 --port 5000