Rychlý start: Použití Detektor anomálií jednovariate klientské knihovny

Začínáme s klientskou knihovnou Detektor anomálií pro C#. Pokud chcete balíček nainstalovat pomocí algoritmů poskytovaných službou, postupujte podle těchto kroků. Služba Detektor anomálií umožňuje najít odchylky v datech časových řad automaticky pomocí nejvhodnějších modelů bez ohledu na obor, scénář nebo objem dat.

Použijte klientskou knihovnu Detektor anomálií pro jazyk C# k:

  • Detekce anomálií v rámci datové sady časových řad jako dávkového požadavku
  • Zjištění stavu anomálií nejnovějšího datového bodu v časové řadě
  • Zjištění bodů změn trendu ve vaší sadě dat

Referenční dokumentace | ke knihovně Zdrojový kód | knihovny Balíček (NuGet) | Vyhledání kódu na GitHubu

Požadavky

  • Předplatné Azure – Vytvoření bezplatného předplatného
  • Aktuální verze .NET Core
  • Jakmile budete mít předplatné Azure, vytvořte Detektor anomálií v Azure Portal a získejte klíč a koncový bod. Počkejte, až se nasadí, a klikněte na tlačítko Přejít k prostředku .
    • K připojení aplikace k rozhraní API Detektor anomálií budete potřebovat klíč a koncový bod z prostředku, který vytvoříte. Klíč a koncový bod vložíte do kódu níže v rychlém startu. K vyzkoušení služby můžete použít cenovou úroveňF0 Free a později upgradovat na placenou úroveň pro produkční prostředí.

Nastavení

Vytvoření nové aplikace .NET Core

V okně konzoly (například cmd, PowerShell nebo Bash) pomocí dotnet new příkazu vytvořte novou konzolovou aplikaci s názvem anomaly-detector-quickstart. Tento příkaz vytvoří jednoduchý projekt Hello World s jedním zdrojovým souborem jazyka C#: Program.cs.

dotnet new console -n anomaly-detector-quickstart

Změňte adresář na nově vytvořenou složku aplikace. Aplikaci můžete sestavit pomocí:

dotnet build

Výstup sestavení by neměl obsahovat žádná upozornění ani chyby.

...
Build succeeded.
 0 Warning(s)
 0 Error(s)
...

Instalace klientské knihovny

V adresáři aplikace nainstalujte klientskou knihovnu Detektor anomálií pro .NET pomocí následujícího příkazu:

dotnet add package Azure.AI.AnomalyDetector --version 3.0.0-preview.5

Zjištění anomálií z celé časové řady

Budete muset aktualizovat následující kód a zadat vlastní hodnoty pro následující proměnné.

Název proměnné Hodnota
your-endpoint Tuto hodnotu najdete v části Koncový bod klíčů & při zkoumání prostředku z Azure Portal. Příkladem koncového bodu je:https://contoso-new-001.cognitiveservices.azure.com/
your-apikey Tuto hodnotu najdete v části Koncový bod klíčů & při zkoumání prostředku z Azure Portal. Můžete použít klíč1 nebo klíč2. Vždy máte dva platné klíče, které umožňují zabezpečené obměně klíčů s nulovým výpadkem.
request-data.csv Abyste zjistili anomálii, musíte zadat cestu k vlastním ukázkovým datům uloženým ve formátu CSV. Pokud chcete použít naše ukázková data, můžete si zde stáhnout ukázková data.

V adresáři projektu otevřete program.cs soubor a nahraďte následujícím kódem:

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using Azure.AI.AnomalyDetector;
using Azure.AI.AnomalyDetector.Models;
using Azure.Core.TestFramework;
using NUnit.Framework;

namespace Azure.AI.AnomalyDetector.Tests.Samples
{
    public partial class AnomalyDetectorSamples : SamplesBase<AnomalyDetectorTestEnvironment>
    {
        [Test]
        public async Task DetectEntireSeriesAnomaly()
        {
            //read endpoint and apiKey
            string endpoint = "your-endpoint";
            string apiKey = "your-apikey";

            var endpointUri = new Uri(endpoint);
            var credential = new AzureKeyCredential(apiKey);

            //create client
            AnomalyDetectorClient client = new AnomalyDetectorClient(endpointUri, credential);

            //read data
            string datapath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "samples", "data", "request-data.csv");

            List<TimeSeriesPoint> list = File.ReadAllLines(datapath, Encoding.UTF8)
                .Where(e => e.Trim().Length != 0)
                .Select(e => e.Split(','))
                .Where(e => e.Length == 2)
                .Select(e => new TimeSeriesPoint(float.Parse(e[1])){ Timestamp = DateTime.Parse(e[0])}).ToList();

            //create request
            DetectRequest request = new DetectRequest(list)
            {
                Granularity = TimeGranularity.Daily
            };

            //detect
            Console.WriteLine("Detecting anomalies in the entire time series.");

            try
            {
                EntireDetectResponse result = await client.DetectEntireSeriesAsync(request).ConfigureAwait(false);

                bool hasAnomaly = false;
                for (int i = 0; i < request.Series.Count; ++i)
                {
                    if (result.IsAnomaly[i])
                    {
                        Console.WriteLine("An anomaly was detected at index: {0}.", i);
                        hasAnomaly = true;
                    }
                }
                if (!hasAnomaly)
                {
                    Console.WriteLine("No anomalies detected in the series.");
                }
            }
            catch (RequestFailedException ex)
            {
                Console.WriteLine(String.Format("Entire detection failed: {0}", ex.Message));
                throw;
            }
            catch (Exception ex)
            {
                Console.WriteLine(String.Format("Detection error. {0}", ex.Message));
                throw;
            }
        }
    }
}

Důležité

Nezapomeňte klíč z kódu odebrat, až budete hotovi, a nikdy ho veřejně nesdělíte. V produkčním prostředí použijte zabezpečený způsob ukládání a přístupu k vašim přihlašovacím údajům, jako je Azure Key Vault. Další informace najdete v článku o zabezpečení služeb Cognitive Services.

Podrobnosti kódu

Načtení časových řad a vytvoření DetectRequest

Můžete si stáhnout ukázková data, číst v datech časových řad a přidat je do objektu DetectRequest .

Volání File.ReadAllLines s cestou k souboru a vytvoření seznamu TimeSeriesPoint objektů a prokládání všech nových znaků řádku Extrahujte hodnoty a oddělte časové razítko od číselné hodnoty a přidejte je do nového TimeSeriesPoint objektu.

DetectRequest Vytvořte objekt s řadou bodů a TimeGranularity.Daily pro členitost (nebo perioditu) datových bodů.

//read data
string datapath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "samples", "data", "request-data.csv");

List<TimeSeriesPoint> list = File.ReadAllLines(datapath, Encoding.UTF8)
    .Where(e => e.Trim().Length != 0)
    .Select(e => e.Split(','))
    .Where(e => e.Length == 2)
    .Select(e => new TimeSeriesPoint(float.Parse(e[1])){ Timestamp = DateTime.Parse(e[0])}).ToList();

//create request
DetectRequest request = new DetectRequest(list)
{
    Granularity = TimeGranularity.Daily
};

Detekce anomálií celé řady

Zavolejte metodu klienta DetectEntireSeriesAsync s objektem DetectRequest a vyčkejte na odpověď jako EntireDetectResponse objekt. Iterujte hodnoty odpovědi IsAnomaly a vytiskněte všechny hodnoty, které jsou pravdivé. Tyto hodnoty odpovídají indexu neobvyklých datových bodů, pokud byly nalezeny nějaké hodnoty.

//detect
Console.WriteLine("Detecting anomalies in the entire time series.");

try
{
    EntireDetectResponse result = await client.DetectEntireSeriesAsync(request).ConfigureAwait(false);

    bool hasAnomaly = false;
    for (int i = 0; i < request.Series.Count; ++i)
    {
        if (result.IsAnomaly[i])
        {
            Console.WriteLine("An anomaly was detected at index: {0}.", i);
            hasAnomaly = true;
        }
    }
    if (!hasAnomaly)
    {
        Console.WriteLine("No anomalies detected in the series.");
    }
}
catch (RequestFailedException ex)
{
    Console.WriteLine(String.Format("Entire detection failed: {0}", ex.Message));
    throw;
}
catch (Exception ex)
{
    Console.WriteLine(String.Format("Detection error. {0}", ex.Message));
    throw;
}

Vyčištění prostředků

Pokud chcete vyčistit a odebrat předplatné služeb Cognitive Services, můžete odstranit prostředek nebo skupinu prostředků. Odstraněním skupiny prostředků odstraníte také všechny další prostředky přidružené ke skupině prostředků.

Další kroky

Koncepty:

Kurzy:

Začínáme s klientskou knihovnou Detektor anomálií pro JavaScript. Pokud chcete balíček nainstalovat pomocí algoritmů poskytovaných službou, postupujte podle těchto kroků. Služba Detektor anomálií umožňuje najít odchylky v datech časových řad automaticky pomocí nejvhodnějších modelů bez ohledu na obor, scénář nebo objem dat.

Použijte klientskou knihovnu Detektor anomálií pro JavaScript k:

  • Detekce anomálií v rámci datové sady časových řad jako dávkového požadavku
  • Zjištění stavu anomálií nejnovějšího datového bodu v časové řadě
  • Zjištění bodů změn trendu ve vaší sadě dat

Referenční dokumentace | ke knihovně Zdrojový kód | knihovny Balíček (npm) | Vyhledání kódu na GitHubu

Požadavky

  • Předplatné Azure – Vytvoření bezplatného předplatného
  • Aktuální verze Node.js
  • Jakmile budete mít předplatné Azure, vytvořte Detektor anomálií v Azure Portal a získejte klíč a koncový bod. Počkejte, až se nasadí, a klikněte na tlačítko Přejít k prostředku .
    • K připojení aplikace k rozhraní API Detektor anomálií budete potřebovat klíč a koncový bod z prostředku, který vytvoříte. Klíč a koncový bod vložíte do kódu níže v rychlém startu. K vyzkoušení služby můžete použít cenovou úroveňF0 Free a později upgradovat na placenou úroveň pro produkční prostředí.

Nastavení

Vytvoření proměnné prostředí

Poznámka

Koncové body pro prostředky, které nejsou zkušební verze vytvořené po 1. červenci 2019, používají vlastní subdoménový formát zobrazený níže. Další informace a úplný seznam regionálních koncových bodů najdete v tématu Vlastní názvy subdomén pro Cognitive Services.

Pomocí klíče a koncového bodu z vytvořeného prostředku vytvořte dvě proměnné prostředí pro ověřování:

  • ANOMALY_DETECTOR_KEY – Klíč prostředku pro ověřování vašich požadavků.
  • ANOMALY_DETECTOR_ENDPOINT – Koncový bod prostředku pro odesílání požadavků rozhraní API. Bude vypadat takto:
    • https://<your-custom-subdomain>.api.cognitive.microsoft.com

Postupujte podle pokynů pro váš operační systém.

setx ANOMALY_DETECTOR_KEY <replace-with-your-anomaly-detector-key>
setx ANOMALY_DETECTOR_ENDPOINT <replace-with-your-anomaly-detector-endpoint>

Po přidání proměnné prostředí restartujte okno konzoly.

Vytvoření nové aplikace Node.js

V okně konzoly (například cmd, PowerShell nebo Bash) vytvořte nový adresář pro vaši aplikaci a přejděte na něj.

mkdir myapp && cd myapp

Spuštěním npm init příkazu vytvořte aplikaci uzlu se souborem package.json .

npm init

Vytvořte soubor s názvem index.js a naimportujte následující knihovny:

'use strict'

const fs = require('fs');
const parse = require("csv-parse/lib/sync");
const { AnomalyDetectorClient } = require('@azure/ai-anomaly-detector');
const { AzureKeyCredential } = require('@azure/core-auth');

Vytvořte proměnné koncového bodu a klíče vašeho prostředku Azure. Pokud jste po spuštění aplikace vytvořili proměnnou prostředí, budete muset zavřít a znovu otevřít editor, integrované vývojové prostředí nebo prostředí, ve kterém je spuštěná, abyste k proměnné měli přístup. Vytvořte další proměnnou pro ukázkový datový soubor, který si stáhnete v pozdějším kroku, a prázdný seznam datových bodů. Pak vytvořte ApiKeyCredentials objekt, který bude obsahovat klíč.

// Spreadsheet with 2 columns and n rows.
let CSV_FILE = './request-data.csv';

// Authentication variables
let key = 'PASTE_YOUR_ANOMALY_DETECTOR_SUBSCRIPTION_KEY_HERE';
let endpoint = 'PASTE_YOUR_ANOMALY_DETECTOR_ENDPOINT_HERE';

// Points array for the request body
let points = [];

Instalace klientské knihovny

Nainstalujte balíčky ms-rest-azure NPM a azure-cognitiveservices-anomalydetector nainstalujte je. Knihovna csv-parse se používá také v tomto rychlém startu:

npm install @azure/ai-anomaly-detector @azure/ms-rest-js csv-parse

Soubor vaší aplikace package.json se aktualizuje o závislosti.

Objektový model

Klient Detektor anomálií je objekt AnomalyDetectorClient, který se ověřuje v Azure pomocí vašeho klíče. Klient může provádět detekci anomálií pro celou datovou sadu pomocí celého objektuDetect() nebo nejnovějšího datového bodu pomocí funkce LastDetect(). Metoda ChangePointDetectAsync detekuje body, které označují změny v trendu.

Data časových řad se odesílají jako řady bodů v objektu požadavku . Objekt Request obsahuje vlastnosti pro popis dat (například Členitost ) a parametry detekce anomálií.

Odpověď Detektor anomálií je LastDetectResponse, EntireDetectResponse nebo ChangePointDetectResponse objekt v závislosti na použité metodě.

Příklady kódu

Tyto fragmenty kódu ukazují, jak provést následující kroky s klientskou knihovnou Detektor anomálií pro Node.js:

Ověření klienta

Vytvořte instanci objektu AnomalyDetectorClient pomocí vašeho koncového bodu a přihlašovacích údajů.

let anomalyDetectorClient = new AnomalyDetectorClient(endpoint, new AzureKeyCredential(key));

Načtení dat časových řad ze souboru

Stáhněte si ukázková data pro tento rychlý start z GitHubu:

  1. V prohlížeči klikněte pravým tlačítkem na Nezpracovaný.
  2. Klikněte na Uložit odkaz jako.
  3. Uložte soubor do adresáře aplikace jako soubor .csv.

Tato data časových řad jsou naformátovaná jako soubor .csv a budou odeslána do rozhraní DETEKTOR ANOMÁLIÍ API.

Čtení datového souboru pomocí metody knihovny readFileSync() csv-parse a parsování souboru s parse(). Pro každý řádek nasdílet objekt Point obsahující časové razítko a číselnou hodnotu.

function readFile() {
    let input = fs.readFileSync(CSV_FILE).toString();
    let parsed = parse(input, { skip_empty_lines: true });
    parsed.forEach(function (e) {
        points.push({ timestamp: new Date(e[0]), value: parseFloat(e[1]) });
    });
}
readFile()

Detekce anomálií v celé sadě dat

Voláním rozhraní API můžete detekovat anomálie v celé časové řadě jako dávku pomocí celé metodyDetect() klienta. Uložte vrácený objekt EntireDetectResponse . Iterujte seznamem odpovědí isAnomaly a vytiskněte index všech true hodnot. Tyto hodnoty odpovídají indexu neobvyklých datových bodů, pokud byly nalezeny.

async function batchCall() {
    // Create request body for API call
    let body = { series: points, granularity: 'daily' }
    // Make the call to detect anomalies in whole series of points
    await anomalyDetectorClient.detectEntireSeries(body)
        .then((response) => {
            console.log("Batch (entire) anomaly detection):")
            for (let item = 0; item < response.isAnomaly.length; item++) {
                if (response.isAnomaly[item]) {
                    console.log("An anomaly was detected from the series, at row " + item)
                }
            }
        }).catch((error) => {
            console.log(error)
        })

}
batchCall()

Zjištění stavu anomálií nejnovějšího datového bodu

Volejte rozhraní DETEKTOR ANOMÁLIÍ API, abyste zjistili, jestli je váš nejnovější datový bod anomálií pomocí metody lastDetect() klienta a uloží vrácený objekt LastDetectResponse. Hodnota odpovědi isAnomaly je logická hodnota, která určuje stav anomálií daného bodu.

async function lastDetection() {

    let body = { series: points, granularity: 'daily' }
    // Make the call to detect anomalies in the latest point of a series
    await anomalyDetectorClient.detectLastPoint(body)
        .then((response) => {
            console.log("Latest point anomaly detection:")
            if (response.isAnomaly) {
                console.log("The latest point, in row " + points.length + ", is detected as an anomaly.")
            } else {
                console.log("The latest point, in row " + points.length + ", is not detected as an anomaly.")
            }
        }).catch((error) => {
            console.log(error)
        })
}
lastDetection()

Detekce bodů změn v sadě dat

Voláním rozhraní API detekujte body změn v časové řadě metodou DetectChangePoint() klienta. Uložte vrácený objekt ChangePointDetectResponse . Iterujte seznamem odpovědí isChangePoint a vytiskněte index všech true hodnot. Tyto hodnoty odpovídají indexům bodů změn trendu, pokud byly nalezeny.

async function changePointDetection() {

    let body = { series: points, granularity: 'daily' }
    // get change point detect results
    await anomalyDetectorClient.detectChangePoint(body)
        .then((response) => {
            if (
                response.isChangePoint.some(function (changePoint) {
                    return changePoint === true;
                })
            ) {
                console.log("Change points were detected from the series at index:");
                response.isChangePoint.forEach(function (changePoint, index) {
                    if (changePoint === true) {
                        console.log(index);
                    }
                });
            } else {
                console.log("There is no change point detected from the series.");
            }
        }).catch((error) => {
            console.log(error)
        })
}

Spuštění aplikace

Spusťte aplikaci pomocí příkazu v souboru rychlého node startu.

node index.js

Vyčištění prostředků

Pokud chcete vyčistit a odebrat předplatné služeb Cognitive Services, můžete prostředek nebo skupinu prostředků odstranit. Odstraněním této skupiny prostředků odstraníte také všechny ostatní prostředky přidružené ke skupině prostředků.

Další kroky

Koncepty:

Kurzy:

Začínáme s klientskou knihovnou Detektor anomálií pro Python Pomocí těchto kroků nainstalujte balíček pomocí algoritmů poskytovaných službou. Služba Detektor anomálií umožňuje najít odchylky v datech časových řad automaticky pomocí nejvhodnějších modelů bez ohledu na obor, scénář nebo objem dat.

Pomocí klientské knihovny Detektor anomálií pro Python můžete:

  • Detekce anomálií v rámci datové sady časových řad jako dávkové žádosti
  • Zjištění stavu anomálií nejnovějšího datového bodu v časové řadě
  • Detekce bodů změn trendu v datové sadě

Referenční dokumentace ke knihovně | Zdrojový kód | knihovny Balíček (PyPi) | Vyhledání ukázkového kódu na GitHubu

Požadavky

  • Python 3.x
  • Knihovna pro analýzu dat Pandas
  • Předplatné Azure – Vytvoření bezplatného předplatného
  • Jakmile budete mít předplatné Azure, Detektor anomálií v Azure Portal, abyste získali klíč a koncový bod. Počkejte, až se nasazení nasadí, a klikněte na tlačítko Přejít k prostředku .
    • K připojení aplikace k rozhraní API Detektor anomálií budete potřebovat klíč a koncový bod z prostředku, který vytvoříte. Klíč a koncový bod vložíte do kódu níže v rychlém startu. Pomocí cenové úrovně Free (F0) můžete službu vyzkoušet a upgradovat později na placenou úroveň pro produkční prostředí.

Nastavení

Vytvoření proměnné prostředí

Poznámka

Koncové body pro prostředky bez zkušební verze vytvořené po 1. červenci 2019 používají následující formát vlastní subdomény. Další informace a úplný seznam regionálních koncových bodů najdete v tématu Názvy vlastních subdomén služeb Cognitive Services.

Pomocí klíče a koncového bodu z prostředku, který jste vytvořili, vytvořte dvě proměnné prostředí pro ověřování:

  • ANOMALY_DETECTOR_KEY – Klíč prostředku pro ověřování vašich požadavků.
  • ANOMALY_DETECTOR_ENDPOINT – Koncový bod prostředku pro odesílání požadavků rozhraní API. Bude vypadat takto:
    • https://<your-custom-subdomain>.api.cognitive.microsoft.com

Postupujte podle pokynů pro váš operační systém.

setx ANOMALY_DETECTOR_KEY <replace-with-your-anomaly-detector-key>
setx ANOMALY_DETECTOR_ENDPOINT <replace-with-your-anomaly-detector-endpoint>

Po přidání proměnné prostředí restartujte okno konzoly.

Vytvoření nové aplikace v Pythonu

Vytvořte nový soubor Pythonu a naimportujte následující knihovny.

import os
from azure.ai.anomalydetector import AnomalyDetectorClient
from azure.ai.anomalydetector.models import DetectRequest, TimeSeriesPoint, TimeGranularity, \
    AnomalyDetectorError
from azure.core.credentials import AzureKeyCredential
import pandas as pd

Vytvořte proměnné pro klíč jako proměnnou prostředí, cestu k datovému souboru časové řady a umístění Azure vašeho předplatného. Například, westus2.

SUBSCRIPTION_KEY = os.environ["ANOMALY_DETECTOR_KEY"]
ANOMALY_DETECTOR_ENDPOINT = os.environ["ANOMALY_DETECTOR_ENDPOINT"]
TIME_SERIES_DATA_PATH = os.path.join("./sample_data", "request-data.csv")

Instalace klientské knihovny

Po instalaci Pythonu můžete klientskou knihovnu nainstalovat pomocí následujících možností:

pip install --upgrade azure-ai-anomalydetector

Objektový model

Klient Detektor anomálií je objekt AnomalyDetectorClient, který se ověřuje v Azure pomocí vašeho klíče. Klient může provádět detekci anomálií celé datové sady pomocí detect_entire_series nebo v nejnovějším datovém bodu pomocí detect_last_point. Funkce detect_change_point detekuje body, které označují změny v trendu.

Data časových řad se odesílají jako řada objektů TimeSeriesPoints . Objekt DetectRequest obsahuje vlastnosti, které popisují data TimeGranularity , například a parametry detekce anomálií.

Odpověď Detektor anomálií je LastDetectResponse, EntireDetectResponse nebo ChangePointDetectResponse objekt v závislosti na použité metodě.

Příklady kódu

Tyto fragmenty kódu ukazují, jak provést následující kroky pomocí klientské knihovny Detektor anomálií pro Python:

Ověření klienta

Přidejte do koncového bodu proměnnou umístění Azure a ověřte klienta pomocí klíče.

client = AnomalyDetectorClient(AzureKeyCredential(SUBSCRIPTION_KEY), ANOMALY_DETECTOR_ENDPOINT)

Načtení dat časových řad ze souboru

Stáhněte si ukázková data pro tento rychlý start z GitHubu:

  1. V prohlížeči klikněte pravým tlačítkem na Nezpracovaný.
  2. Klikněte na Uložit odkaz jako.
  3. Uložte soubor do adresáře aplikace jako soubor .csv.

Tato data časových řad jsou naformátovaná jako soubor .csv a budou odeslána do rozhraní DETEKTOR ANOMÁLIÍ API.

Načtěte datový soubor pomocí metody knihovny read_csv() Pandas a vytvořte prázdnou proměnnou seznamu pro ukládání datových řad. Iterujte soubor a připojte data jako TimeSeriesPoint objekt. Tento objekt bude obsahovat časové razítko a číselnou hodnotu z řádků datového souboru .csv.

series = []
data_file = pd.read_csv(TIME_SERIES_DATA_PATH, header=None, encoding='utf-8', date_parser=[0])
for index, row in data_file.iterrows():
    series.append(TimeSeriesPoint(timestamp=row[0], value=row[1]))

Vytvořte DetectRequest objekt s časovými řadami a TimeGranularity (nebo periodikou) datových bodů. Například, TimeGranularity.daily.

request = DetectRequest(series=series, granularity=TimeGranularity.daily)

Popisy vstupních argumentů: "series": povinné v požadavku. musí být typ matice/seznamu a musí mít více než 12 bodů a maximálně 8640 bodů. musí být seřazeno podle časového razítka ve vzestupném pořadí a nesmí mít duplicitní časové razítko. "členitost": požadováno v požadavku. může být pouze jedna z následujících možností: ['daily', 'minutely', 'hourly', 'weekly', 'monthly', 'yearly', 'secondly']. CustomInterval: musí být celé číslo > 0. "tečka": musí být celé číslo >= 0. "maxAnomalyRatio": musí být menší než 50 % bodů řady (0 maxAnomalyRatio < 0,5<). "citlivost": musí být celé číslo od 0 do 99.

Detekce anomálií v celé sadě dat

Voláním rozhraní API můžete detekovat anomálie prostřednictvím dat celé časové řady pomocí metody klienta detect_entire_series . Uložte vrácený objekt EntireDetectResponse . Iterujte seznamem odpovědí is_anomaly a vytiskněte index všech true hodnot. Tyto hodnoty odpovídají indexu neobvyklých datových bodů, pokud byly nalezeny.

print('Detecting anomalies in the entire time series.')

try:
    response = client.detect_entire_series(request)
except AnomalyDetectorError as e:
    print('Error code: {}'.format(e.error.code), 'Error message: {}'.format(e.error.message))
except Exception as e:
    print(e)

if any(response.is_anomaly):
    print('An anomaly was detected at index:')
    for i, value in enumerate(response.is_anomaly):
        if value:
            print(i)
else:
    print('No anomalies were detected in the time series.')

Zjištění stavu anomálií nejnovějšího datového bodu

Zavolejte rozhraní API Detektor anomálií, abyste zjistili, jestli je váš nejnovější datový bod anomálií pomocí metody klientadetect_last_point, a uložte vrácený LastDetectResponse objekt. Hodnota odpovědi is_anomaly je logická hodnota, která určuje stav anomálií daného bodu.

print('Detecting the anomaly status of the latest data point.')

try:
    response = client.detect_last_point(request)
except AnomalyDetectorError as e:
    print('Error code: {}'.format(e.error.code), 'Error message: {}'.format(e.error.message))
except Exception as e:
    print(e)

if response.is_anomaly:
    print('The latest point is detected as anomaly.')
else:
    print('The latest point is not detected as anomaly.')

Detekce bodů změn v sadě dat

Voláním rozhraní API detekujte body změn v datech časových řad pomocí metody klienta detect_change_point . Uložte vrácený ChangePointDetectResponse objekt. Iterujte seznamem odpovědí is_change_point a vytiskněte index všech true hodnot. Tyto hodnoty odpovídají indexům bodů změn trendu, pokud byly nalezeny.

print('Detecting change points in the entire time series.')

try:
    response = client.detect_change_point(request)
except AnomalyDetectorError as e:
    print('Error code: {}'.format(e.error.code), 'Error message: {}'.format(e.error.message))
except Exception as e:
    print(e)

if any(response.is_change_point):
    print('An change point was detected at index:')
    for i, value in enumerate(response.is_change_point):
        if value:
            print(i)
else:
    print('No change point were detected in the time series.')

Spuštění aplikace

Spusťte aplikaci pomocí python příkazu a názvu souboru.

Vyčištění prostředků

Pokud chcete vyčistit a odebrat předplatné služeb Cognitive Services, můžete prostředek nebo skupinu prostředků odstranit. Odstraněním této skupiny prostředků odstraníte také všechny ostatní prostředky přidružené ke skupině prostředků.

Další kroky

Koncepty:

Kurzy:

V tomto rychlém startu se dozvíte, jak pomocí služby Detektor anomálií a cURL detekovat anomálie v dávce dat časových řad.

Základní informace o konceptech Detektor anomálií najdete v článku s přehledem.

Požadavky

  • Předplatné Azure – Vytvoření bezplatného předplatného
  • Jakmile budete mít předplatné Azure, Detektor anomálií v Azure Portal, abyste získali klíč a koncový bod. Počkejte, až se nasazení nasadí, a vyberte tlačítko Přejít k prostředku .
    • K použití rozhraní REST API budete potřebovat klíč a adresu koncového bodu z prostředku, který vytvoříte. Pomocí cenové úrovně Free (F0) můžete službu vyzkoušet a upgradovat později na placenou úroveň pro produkční prostředí.

Detekce anomálií pro celou řadu

Na příkazovém řádku spusťte následující příkaz. Do příkazu budete muset vložit následující hodnoty.

  • Klíč předplatného služby Detektor anomálií
  • Adresa koncového bodu detektoru anomálií
  • Platný soubor JSON dat časových řad pro testování anomálií. Pokud nemáte vlastní soubor, můžete z ukázky textu požadavku vytvořit soubor sample.json.
curl -v -X POST "https://{endpointresourcename.cognitive.microsoft.com}/anomalydetector/v1.0/timeseries/entire/detect"
-H "Content-Type: application/json"
-H "Ocp-Apim-Subscription-Key: {subscription key}"
-d "@{path_to_file.json}" 

Příklad se všemi vyplněnými hodnotami:

curl -v -X POST "https://my-resource-name.cognitiveservices.azure.com/anomalydetector/v1.0/timeseries/entire/detect" -H  "Content-Type: application/json" -H "Ocp-Apim-Subscription-Key:1111112222222ed333333ab333333333" -d "@test.json"

Pokud jste použili ukázková data z požadavků, měli byste obdržet odpověď 200 s následujícími výsledky:

{
  "expectedValues": [
    827.7940908243968,
    798.9133774671927,
    888.6058431807189,
    900.5606407986661,
    962.8389426378304,
    933.2591606306954,
    891.0784104799666,
    856.1781601363697,
    809.8987227908941,
    807.375129007505,
    764.3196682448518,
    803.933498594564,
    823.5900620883058,
    794.0905641334288,
    883.164245249282,
    894.8419000690953,
    956.8430591101258,
    927.6285055190114,
    885.812983784303,
    851.6424797402517,
    806.0927886943216,
    804.6826815312029,
    762.74070738882,
    804.0251702513732,
    825.3523662579559,
    798.0404188724976,
    889.3016505577698,
    902.4226124345937,
    965.867078532635,
    937.3200495736695,
    896.1720524711102,
    862.0087368413656,
    816.4662342097423,
    814.4297745524709,
    771.8614479159354,
    811.859271346729,
    831.8998279215521,
    802.947544797165,
    892.5684407435083,
    904.5488214533809,
    966.8527063844707,
    937.3168391003043,
    895.180003672544,
    860.3649596356635,
    814.1707285969043,
    811.9054862686213,
    769.1083769610742,
    809.2328084659704
  ],
  "upperMargins": [
    41.389704541219835,
    39.94566887335964,
    44.43029215903594,
    45.02803203993331,
    48.14194713189152,
    46.66295803153477,
    44.55392052399833,
    42.808908006818484,
    40.494936139544706,
    40.36875645037525,
    38.215983412242586,
    40.196674929728196,
    41.17950310441529,
    39.70452820667144,
    44.1582122624641,
    44.74209500345477,
    47.84215295550629,
    46.38142527595057,
    44.290649189215145,
    42.58212398701258,
    40.30463943471608,
    40.234134076560146,
    38.137035369441,
    40.201258512568664,
    41.267618312897795,
    39.90202094362488,
    44.46508252788849,
    45.121130621729684,
    48.29335392663175,
    46.86600247868348,
    44.80860262355551,
    43.100436842068284,
    40.82331171048711,
    40.721488727623544,
    38.593072395796774,
    40.59296356733645,
    41.5949913960776,
    40.14737723985825,
    44.62842203717541,
    45.227441072669045,
    48.34263531922354,
    46.86584195501521,
    44.759000183627194,
    43.01824798178317,
    40.70853642984521,
    40.59527431343106,
    38.45541884805371,
    40.46164042329852
  ],
  "lowerMargins": [
    41.389704541219835,
    39.94566887335964,
    44.43029215903594,
    45.02803203993331,
    48.14194713189152,
    46.66295803153477,
    44.55392052399833,
    42.808908006818484,
    40.494936139544706,
    40.36875645037525,
    38.215983412242586,
    40.196674929728196,
    41.17950310441529,
    39.70452820667144,
    44.1582122624641,
    44.74209500345477,
    47.84215295550629,
    46.38142527595057,
    44.290649189215145,
    42.58212398701258,
    40.30463943471608,
    40.234134076560146,
    38.137035369441,
    40.201258512568664,
    41.267618312897795,
    39.90202094362488,
    44.46508252788849,
    45.121130621729684,
    48.29335392663175,
    46.86600247868348,
    44.80860262355551,
    43.100436842068284,
    40.82331171048711,
    40.721488727623544,
    38.593072395796774,
    40.59296356733645,
    41.5949913960776,
    40.14737723985825,
    44.62842203717541,
    45.227441072669045,
    48.34263531922354,
    46.86584195501521,
    44.759000183627194,
    43.01824798178317,
    40.70853642984521,
    40.59527431343106,
    38.45541884805371,
    40.46164042329852
  ],
  "isAnomaly": [
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    true,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false
  ],
  "isPositiveAnomaly": [
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    true,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false
  ],
  "isNegativeAnomaly": [
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false,
    false
  ],
  "period": 12
}

Další informace najdete v referenčních informacích k rest pro detekci anomálií.

Vyčištění prostředků

Pokud chcete vyčistit a odebrat předplatné služeb Cognitive Services, můžete prostředek nebo skupinu prostředků odstranit. Odstraněním této skupiny prostředků odstraníte také všechny ostatní prostředky přidružené ke skupině prostředků.

Další kroky

Koncepty:

Kurzy: