mcpField
A
anomaly-detector

anomaly-detector

github.com/majesticlabs-devData & databases5076 installsUpdated 7w ago
Repository

About anomaly-detector

An anomaly-detection skill for data engineers and analysts, with functions for outlier detection across tabular and time-series data. It includes statistical, density-based, and ensemble approaches.

Key features

  1. 01Z-score and IQR detection
  2. 02Modified Z-score detection
  3. 03Isolation Forest and LOF
  4. 04Rolling and STL time-series detection
  5. 05Ensemble voting across methods

Use cases

  1. 01Flag outliers in a single data column
  2. 02Detect anomalies across multiple numeric columns
  3. 03Find anomalies in trending or seasonal series

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/majesticlabs-dev/majestic-marketplace --skill anomaly-detector

After installing, type/anomaly-detectorin Claude Code to confirm it loaded.

Bundled filesscripts/anomaly_detection.py

Details

From the project README

Anomaly Detector

Audience: Data engineers and analysts detecting outliers in datasets.

Goal: Provide production-ready anomaly detection functions for various data types.

Scripts

Execute detection functions from scripts/anomaly_detection.py:

from scripts.anomaly_detection import (
    detect_anomalies_zscore,
    detect_anomalies_iqr,
    detect_anomalies_modified_zscore,
    detect_anomalies_isolation_forest,
    detect_anomalies_lof,
    detect_anomalies_rolling,
    detect_anomalies_stl,
    detect_anomalies_ensemble
)

Method Selection

MethodBest ForLimitations
Z-ScoreNormal distributionsSensitive to outliers
IQRSkewed distributionsLess sensitive overall
Modified Z-ScoreRobust detectionSlower computation
Isolation ForestHigh-dimensional dataRequires tuning
LOFLocal density anomaliesComputationally expensive
RollingTime-series with trendsWindow size sensitive
STLSeasonal time-seriesRequires known period

Usage Examples

Single Column Detection
import pandas as pd
from scripts.anomaly_detection import detect_anomalies_zscore, detect_anomalies_iqr

df = pd.read_csv('data.csv')

# Z-score method (good for normal distributions)
anomalies_z = detect_anomalies_zscore(df['value'], threshold=3.0)

# IQR method (robust to skewed data)
anomalies_iqr = detect_anomalies_iqr(df['value'], multiplier=1.5)

print(f"Z-score found {anomalies_z.sum()} anomalies")
print(f"IQR found {anomalies_iqr.sum()} anomalies")
Multi-Column with Isolation Forest
from scripts.anomaly_detection import detect_anomalies_isolation_forest

numeric_cols = ['revenue', 'quantity', 'price']
anomalies = detect_anomalies_isolation_forest(df, numeric_cols, contamination=0.01)

df_anomalies = df[anomalies]
Ensemble Approach (Recommended)
from scripts.anomaly_detection import detect_anomalies_ensemble

results = detect_anomalies_ensemble(
    df,
    columns=['revenue', 'quantity'],
    methods=['zscore', 'iqr', 'isolation_forest'],
    min_agreement=2  # Flag if 2+ methods agree
)

confirmed_anomalies = df[results['is_anomaly']]
Time-Series Anomalies
from scripts.anomaly_detection import detect_anomalies_rolling, detect_anomalies_stl

# Rolling window (for trending data)
anomalies = detect_anomalies_rolling(df['daily_sales'], window=7, n_std=2.0)

# STL decomposition (for seasonal data)
anomalies = detect_anomalies_stl(df['monthly_revenue'], period=12, threshold=3.0)

Dependencies

pandas
numpy
scikit-learn  # For Isolation Forest, LOF
statsmodels   # For STL decomposition

Comments

Markdown supported