# Criticalsuccessindex

> Compute the CriticalSuccessIndex metric — provided by torchmetrics. Use when the user has predictions and ground-truth and needs to compute CriticalSuccessIndex, or asks how to score with CriticalSuccessIndex.

- Skill: `qhjqhj00/criticalsuccessindex` (Agent Skill)
- Install (CLI): `npx skillmds add qhjqhj00/criticalsuccessindex`
- Raw SKILL.md: https://api.skillmd.com/api/skills/qhjqhj00/criticalsuccessindex/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: qhjqhj00 (https://skillmd.com/u/qhjqhj00)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/qhjqhj00/criticalsuccessindex

---


# criticalsuccessindex

> Metric `CriticalSuccessIndex` from `torchmetrics` (torchmetrics.CriticalSuccessIndex)

## When to invoke this skill

The user has predictions + ground truth and asks to evaluate with CriticalSuccessIndex, or
mentions `torchmetrics.CriticalSuccessIndex` directly, or wants the standard torchmetrics implementation.

## Reference signature

```python
from torchmetrics import CriticalSuccessIndex

# CriticalSuccessIndex(threshold: float, keep_sequence_dim: Optional[int] = None, **kwargs: Any) -> None
```

## Library docstring

```
Calculate critical success index (CSI).

Critical success index (also known as the threat score) is a statistic used weather forecasting that measures
forecast performance over inputs binarized at a specified threshold. It is defined as:

.. math:: \text{CSI} = \frac{\text{TP}}{\text{TP}+\text{FN}+\text{FP}}

Where :math:`\text{TP}`, :math:`\text{FN}` and :math:`\text{FP}` represent the number of true positives, false
negatives and false positives respectively after binarizing the input tensors.

Args:
    threshold: Values above or equal to threshold are replaced with 1, below by 0
    keep_sequence_dim: Index of the sequence dimension if the inputs are sequences of images. If specified,
        the score will be calculated separately for each image in the sequence. If ``None``, the score will be
        calculated across all dimensions.

Example:
    >>> import torch
    >>> from torchmetrics.regression import CriticalSuccessIndex
    >>> x = torch.Tensor([[0.2, 0.7], [0.9, 0.3]])
    >>> y = torch.Tensor([[0.4, 0.2], [0.8, 0.6]])
    >>> csi = CriticalSuccessIndex(0.5)
    >>> csi(x, y)
    tensor(0.3333)

Example:
    >>> import torch
    >>> from torchmetrics.regression import CriticalSuccessIndex
    >>> x = torch.Tensor([[[0.2, 0.7], [0.9, 0.3]], [[0.2, 0.7], [0.9, 0.3]]])
    >>> y = torch.Tensor([[[0.4, 0.2], [0.8, 0.6]], [[0.4, 0.2], [0.8, 0.6]]])
    >>> csi = CriticalSuccessIndex(0.5, keep_sequence_dim=0)
    >>> csi(x, y)
    tensor([0.3333, 0.3333])
```

## Quick recipe

```python
import torchmetrics as _m
score = _m.CriticalSuccessIndex(y_true, y_pred)
```

## Don'ts

- Don't reimplement when the library version handles edge cases (NaN, ties, empty inputs) better than a hand-rolled formula.
- Always check the library version's argument order — sklearn is `(y_true, y_pred)` while torchmetrics is `(preds, target)`.

