# Baseline

Baseline for drift detection and model performance monitoring.

A Baseline defines a reference point for comparing production data against expected patterns. It serves as the foundation for detecting data drift, model performance degradation, and distributional changes in ML systems.

## Example

```python
# Create a static baseline from training data
baseline = Baseline(
    name="production_baseline_v1",
    model_id=model.id,
    environment=EnvType.PRE_PRODUCTION,
    dataset_id=training_dataset.id,
    type_="STATIC"
).create()

# Create a rolling 30-day baseline
rolling_baseline = Baseline(
    name="rolling_30day",
    model_id=model.id,
    environment=EnvType.PRODUCTION,
    type_="ROLLING_WINDOW",
    window_bin_size=WindowBinSize.DAY,
    offset_delta=30
).create()

# Monitor drift detection
print(f"Baseline '{baseline.name}' has {baseline.row_count} records")
print(f"Created: {baseline.created_at}")
```

{% hint style="info" %}
Baselines are immutable once created. To modify baseline parameters, create a new baseline and update your monitoring configurations.
{% endhint %}

Initialize a Baseline instance.

Creates a baseline configuration for drift detection and monitoring. The baseline serves as a reference point for comparing production data against expected patterns.

## Parameters

| Parameter         | Type                                                                                  | Required | Default | Description                                                                                                                                                                                                         |
| ----------------- | ------------------------------------------------------------------------------------- | -------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `name`            | `str`                                                                                 | ✗        | `None`  | Human-readable name for the baseline. Should be descriptive and unique within the model context.                                                                                                                    |
| `model_id`        | \`UUID                                                                                | str\`    | ✗       | `None`                                                                                                                                                                                                              |
| `environment`     | [`EnvType`](https://docs.fiddler.ai/api/fiddler-python-client-sdk/constants/env-type) | ✗        | `None`  | Environment type (`PRE_PRODUCTION` or `PRODUCTION`). Determines the data environment this baseline monitors.                                                                                                        |
| `type_`           | `str`                                                                                 | ✗        | `None`  | Baseline type. Supported values: "`STATIC`": Fixed dataset reference (requires dataset\_id); "`ROLLING_WINDOW`": Sliding time window (requires offset\_delta); "`PREVIOUS_PERIOD`": Previous time period comparison |
| `dataset_id`      | \`UUID                                                                                | str      | None\`  | ✗                                                                                                                                                                                                                   |
| `start_time`      | \`int                                                                                 | None\`   | ✗       | `None`                                                                                                                                                                                                              |
| `end_time`        | \`int                                                                                 | None\`   | ✗       | `None`                                                                                                                                                                                                              |
| `offset_delta`    | \`int                                                                                 | None\`   | ✗       | `None`                                                                                                                                                                                                              |
| `window_bin_size` | \`WindowBinSize                                                                       | str      | None\`  | ✗                                                                                                                                                                                                                   |

## Example

```python
# Static baseline from training data
baseline = Baseline(
    name="training_baseline_v2",
    model_id=model.id,
    environment=EnvType.PRE_PRODUCTION,
    dataset_id=training_dataset.id,
    type_="STATIC"
)

# Rolling 7-day window baseline
rolling_baseline = Baseline(
    name="weekly_rolling",
    model_id=model.id,
    environment=EnvType.PRODUCTION,
    type_="ROLLING_WINDOW",
    offset_delta=7,
    window_bin_size=WindowBinSize.DAY
)

# Previous month comparison baseline
monthly_baseline = Baseline(
    name="month_over_month",
    model_id=model.id,
    environment=EnvType.PRODUCTION,
    type_="PREVIOUS_PERIOD",
    offset_delta=30,
    window_bin_size=WindowBinSize.DAY
)
```

{% hint style="info" %}
After initialization, call create() to persist the baseline to the Fiddler platform. The baseline configuration cannot be modified after creation.
{% endhint %}

## *classmethod* get(id\_)

Retrieve a baseline by its unique identifier.

Fetches a baseline from the Fiddler platform using its UUID. This method returns the complete baseline configuration including metadata and statistics.

## Parameters

| Parameter | Type   | Required | Default | Description |
| --------- | ------ | -------- | ------- | ----------- |
| `id_`     | \`UUID | str\`    | ✗       | `None`      |

## Returns

The baseline instance with all configuration and metadata populated from the server.

**Return type:** `Baseline`

## Raises

* **NotFound** -- If no baseline exists with the specified ID.
* **ApiError** -- If there's an error communicating with the Fiddler API.

## Example

```python
# Retrieve baseline by ID
baseline = Baseline.get(id_="550e8400-e29b-41d4-a716-446655440000")
print(f"Baseline: {baseline.name}")
print(f"Type: {baseline.type}")
print(f"Environment: {baseline.environment}")
print(f"Records: {baseline.row_count}")

# Check baseline configuration
if baseline.type == "STATIC":

    print(f"Reference dataset: {baseline.dataset_id}")

elif baseline.type == "ROLLING_WINDOW":
    print(f"Window size: {baseline.offset_delta} days")
    print(f"Bin size: {baseline.window_bin_size}")
```

{% hint style="info" %}
This method makes an API call to fetch the latest baseline information from the server, including any updated statistics or metadata.
{% endhint %}

## *classmethod* from\_name(name, model\_id)

Get the baseline instance of a model from baseline name

## Parameters

| Parameter  | Type   | Required | Default | Description   |
| ---------- | ------ | -------- | ------- | ------------- |
| `name`     | `str`  | ✗        | `None`  | Baseline name |
| `model_id` | \`UUID | str\`    | ✗       | `None`        |

## Returns

Baseline instance

**Return type:** [*Baseline*](#baseline)

## *classmethod* list(model\_id, type\_=None, environment=None)

Get a list of all baselines of a model.

**Return type:** *Iterator*\[[*Baseline*](#baseline)]

## create()

Create a new baseline.

**Return type:** [*Baseline*](#baseline)

## delete()

Delete a baseline.

**Return type:** None
