# Lab 01 — Первый MLflow run

← [Раздел](README.md) · [Главная](../README.md)

## Цель

Выполнить практическую работу: **Lab 01 — Первый MLflow run**.

## Предварительно

- [10 — Практикум](README.md)

## Время

**2–4 часа**

---

## Задача

Обучить простую модель sklearn и залогировать run локально.

## Шаги

1. `python3 -m venv .venv && source .venv/bin/activate`
2. `pip install mlflow scikit-learn`
3. Создайте `train.py`:

```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

mlflow.set_experiment("iris-lab")

X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

with mlflow.start_run(run_name="rf-baseline"):
    n_estimators = 50
    mlflow.log_param("n_estimators", n_estimators)
    model = RandomForestClassifier(n_estimators=n_estimators, random_state=42)
    model.fit(X_train, y_train)
    acc = accuracy_score(y_test, model.predict(X_test))
    mlflow.log_metric("accuracy", acc)
    mlflow.sklearn.log_model(model, "model")
    print(f"accuracy={acc}")
```

4. `python train.py`
5. `mlflow ui` → откройте `http://127.0.0.1:5000`

## Ожидаемый результат

Run с params, metric accuracy и artifact model.

---

## Самопроверка

1. Какой run_id / model version получили?
2. Что бы сломалось без `set_tracking_uri`?
3. Скриншот UI (для себя).

---

## Дальше

→ [Lab 02 — Tracking Server](lab-02-tracking-server.md)
