Bird
Raised Fist0
ML Pythonml~20 mins

Experiment tracking (MLflow) in ML Python - ML Experiment: Train & Evaluate

Choose your learning style10 modes available
Experiment - Experiment tracking (MLflow)
Problem:You have trained a machine learning model but have no organized way to track different runs, parameters, and results. This makes it hard to compare models and find the best one.
Current Metrics:Training accuracy: 92%, Validation accuracy: 85%, No experiment tracking used.
Issue:Without experiment tracking, it is difficult to reproduce results or compare different model versions systematically.
Your Task
Set up MLflow to track your machine learning experiments. Log parameters, metrics, and the model itself so you can compare runs easily.
Use MLflow's Python API for tracking.
Log at least parameters, training accuracy, validation accuracy, and the model.
Do not change the model architecture or dataset.
Hint 1
Hint 2
Hint 3
Hint 4
Solution
ML Python
import mlflow
import mlflow.sklearn
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score

# Load data
iris = load_iris()
X_train, X_val, y_train, y_val = train_test_split(iris.data, iris.target, test_size=0.2, random_state=42)

# Define model parameters
n_estimators = 100
max_depth = 3

# Start MLflow run
with mlflow.start_run():
    # Initialize model
    model = RandomForestClassifier(n_estimators=n_estimators, max_depth=max_depth, random_state=42)
    # Train model
    model.fit(X_train, y_train)
    # Predict
    train_preds = model.predict(X_train)
    val_preds = model.predict(X_val)
    # Calculate accuracy
    train_acc = accuracy_score(y_train, train_preds)
    val_acc = accuracy_score(y_val, val_preds)
    # Log parameters
    mlflow.log_param("n_estimators", n_estimators)
    mlflow.log_param("max_depth", max_depth)
    # Log metrics
    mlflow.log_metric("train_accuracy", train_acc)
    mlflow.log_metric("val_accuracy", val_acc)
    # Log model
    mlflow.sklearn.log_model(model, "random_forest_model")

print(f"Training accuracy: {train_acc:.2f}")
print(f"Validation accuracy: {val_acc:.2f}")
Added MLflow tracking code to log parameters, metrics, and model.
Wrapped training and evaluation inside mlflow.start_run() context.
Logged model hyperparameters and accuracy scores.
Saved the trained model using MLflow's sklearn integration.
Results Interpretation

Before: No experiment tracking, only printed accuracy.
After: Parameters, training and validation accuracy, and model saved in MLflow for easy comparison and reproducibility.

Using MLflow helps organize and track machine learning experiments, making it easier to compare different runs and reproduce results.
Bonus Experiment
Try logging additional metrics like precision, recall, or F1-score and compare multiple runs with different hyperparameters using MLflow UI.
💡 Hint
Calculate extra metrics with sklearn.metrics and log them with mlflow.log_metric(). Run multiple experiments changing parameters inside mlflow.start_run() blocks.

Practice

(1/5)
1. What is the main purpose of using MLflow in machine learning projects?
easy
A. To write machine learning algorithms from scratch
B. To visualize data without any coding
C. To track and manage machine learning experiments
D. To deploy machine learning models to mobile apps

Solution

  1. Step 1: Understand MLflow's role

    MLflow is designed to help track experiments by logging parameters, metrics, and models.
  2. Step 2: Compare options

    Options A, C, and D describe tasks outside MLflow's main purpose.
  3. Final Answer:

    To track and manage machine learning experiments -> Option C
  4. Quick Check:

    MLflow = experiment tracking [OK]
Hint: MLflow is for tracking experiments, not coding models [OK]
Common Mistakes:
  • Confusing MLflow with model building libraries
  • Thinking MLflow is only for visualization
  • Assuming MLflow deploys models directly
2. Which MLflow function is used to start a new experiment run in Python?
easy
A. mlflow.init_experiment()
B. mlflow.start_run()
C. mlflow.create_run()
D. mlflow.begin_experiment()

Solution

  1. Step 1: Recall MLflow run start syntax

    The correct function to start a run is mlflow.start_run().
  2. Step 2: Check other options

    Functions like init_experiment, create_run, and begin_experiment do not exist in MLflow API.
  3. Final Answer:

    mlflow.start_run() -> Option B
  4. Quick Check:

    Start run = mlflow.start_run() [OK]
Hint: Use start_run() to begin tracking an experiment run [OK]
Common Mistakes:
  • Using non-existent MLflow functions
  • Confusing experiment and run functions
  • Misspelling function names
3. What will be the output of this MLflow code snippet?
import mlflow
with mlflow.start_run():
    mlflow.log_param('alpha', 0.1)
    mlflow.log_metric('accuracy', 0.95)
    run_info = mlflow.active_run().info
print(run_info.run_id is not None)
medium
A. True
B. False
C. None
D. Error

Solution

  1. Step 1: Understand mlflow.start_run() context

    The code starts a run, logs parameters and metrics, then gets the active run info.
  2. Step 2: Check run_id existence

    Inside the run context, run_id is assigned and not None, so print(run_info.run_id is not None) outputs True.
  3. Final Answer:

    True -> Option A
  4. Quick Check:

    Active run has run_id = True [OK]
Hint: Active run always has a run_id during context [OK]
Common Mistakes:
  • Assuming run_id is None before logging
  • Confusing run info with experiment info
  • Expecting print to show run_id string
4. Identify the error in this MLflow code snippet:
import mlflow
mlflow.log_param('learning_rate', 0.01)
with mlflow.start_run():
    mlflow.log_metric('loss', 0.2)
medium
A. log_param called outside a run context
B. start_run() missing parentheses
C. log_metric called before log_param
D. No error, code runs fine

Solution

  1. Step 1: Check order of MLflow calls

    log_param is called before starting a run, which is not allowed.
  2. Step 2: Validate run context requirement

    MLflow requires logging functions inside a run context started by start_run().
  3. Final Answer:

    log_param called outside a run context -> Option A
  4. Quick Check:

    Logging outside run = error [OK]
Hint: Always log params and metrics inside start_run() [OK]
Common Mistakes:
  • Calling log_param before start_run()
  • Ignoring run context for logging
  • Assuming log_metric order matters
5. You want to compare two ML models' performance using MLflow. Which steps correctly describe this process?
hard
A. Only log parameters for both models, metrics are not needed for comparison
B. Log both models' metrics in the same run, then compare metrics manually
C. Use mlflow.log_artifact() to save models, no need to log metrics or parameters
D. Run each model in separate mlflow.start_run() blocks, log metrics, then use MLflow UI to compare

Solution

  1. Step 1: Understand MLflow run separation

    Each model should be run and logged in its own mlflow.start_run() block to keep results separate.
  2. Step 2: Use MLflow UI for comparison

    After logging metrics and parameters, MLflow UI allows easy comparison of runs.
  3. Final Answer:

    Run each model in separate mlflow.start_run() blocks, log metrics, then use MLflow UI to compare -> Option D
  4. Quick Check:

    Separate runs + UI = compare models [OK]
Hint: Use separate runs and MLflow UI to compare models easily [OK]
Common Mistakes:
  • Logging multiple models in one run
  • Skipping metric logging
  • Ignoring MLflow UI for comparison
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard