Rychlý start: Použití Detektor anomálií jednorozměrné klientské knihovny

Začínáme s klientskou knihovnou Detektor anomálií pro jazyk C#. Postupujte podle těchto kroků a nainstalujte balíček a začněte používat algoritmy poskytované službou. Služba Detektor anomálií umožňuje v datech časových řad automaticky vyhledat anomálie pomocí nejlepších modelů bez ohledu na obor, scénář nebo objem dat.

Pomocí klientské Detektor anomálií pro jazyk C# můžete:

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

Referenční dokumentace ke knihovně | Zdrojový kód knihovny | Package (NuGet) | Vyhledejte kód na GitHub

Požadavky

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

Nastavení

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

Poznámka

Koncové body pro prostředky nevyužívající zkušební verzi vytvořené po 1. červenci 2019 používají vlastní formát subdomény, který vidíte níže. Další informace a úplný seznam regionálních koncových bodů najdete v tématu názvy vlastních subdomén pro 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ěření 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

Použijte pokyny 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 .NET Core

V okně konzoly (například cmd, PowerShell nebo Bash) pomocí příkazu vytvořte novou konzolovou aplikaci s dotnet new 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 knihovnu Detektor anomálií pro .NET pomocí následujícího příkazu:

dotnet add package Microsoft.Azure.CognitiveServices.AnomalyDetector

Z adresáře projektu otevřete soubor program.cs a pomocí přidejte následující directives kód:

using System;
using System.IO;
using System.Text;
using System.Linq;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.Azure.CognitiveServices.AnomalyDetector;
using Microsoft.Azure.CognitiveServices.AnomalyDetector.Models;

V metodě aplikace vytvořte proměnné pro umístění Azure vašeho prostředku a klíč main() jako proměnnou prostředí. Pokud jste proměnnou prostředí vytvořili po spuštění aplikace, bude nutné zavřít a znovu načíst editor, integrované vývojové prostředí nebo prostředí, ve které je spuštěná.

static void Main(string[] args){
    //This sample assumes you have created an environment variable for your key and endpoint
    string endpoint = Environment.GetEnvironmentVariable("ANOMALY_DETECTOR_ENDPOINT");
    string key = Environment.GetEnvironmentVariable("ANOMALY_DETECTOR_KEY");
    string datapath = "request-data.csv";

    IAnomalyDetectorClient client = createClient(endpoint, key); //Anomaly Detector client

    Request request = GetSeriesFromFile(datapath); // The request payload with points from the data file

    EntireDetectSampleAsync(client, request).Wait(); // Async method for batch anomaly detection
    LastDetectSampleAsync(client, request).Wait(); // Async method for analyzing the latest data point in the set
    DetectChangePoint(client, request).Wait(); // Async method for change point detection

    Console.WriteLine("\nPress ENTER to exit.");
    Console.ReadLine();
}

Objektový model

Klient Detektor anomálií je objekt AnomalyDetectorClient, který se ověřuje v Azure pomocí ApiKeyServiceClientCredentials, který obsahuje váš klíč. Klient může provést detekci anomálií u celé datové sady pomocí metody EntireDetectAsync()nebo nejnovějšího datového bodu pomocí metody LastDetectAsync(). Metoda ChangePointDetectAsync detekuje body, které označí změny v trendu.

Data časových řad se odesílaná jako řada bodů v objektu Request. Objekt obsahuje vlastnosti pro popis dat (například členitost) a parametry Request pro detekci anomálií.

Odpověď Detektor anomálií je buď objekt EntireDetectResponse, LastDetectResponsenebo changePointDetectResponse v závislosti na použité metodě.

Příklady kódu

Tyto fragmenty kódu ukazují, jak pomocí klientské knihovny pro .NET Detektor anomálií následujícím způsobem:

Ověření klienta

V nové metodě vytvořte instanci klienta s koncovým bodem a klíčem. Vytvořte objekt ApiKeyServiceClientCredentials s vaším klíčem a použijte ho s koncovým bodem k vytvoření objektu AnomalyDetectorClient.

static IAnomalyDetectorClient createClient(string endpoint, string key)
{
    IAnomalyDetectorClient client = new AnomalyDetectorClient(new ApiKeyServiceClientCredentials(key))
    {
        Endpoint = endpoint
    };
    return client;
}

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

Stáhněte si příklad dat pro tento rychlý start z GitHub:

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

Tato data časových řad jsou formátována .csv souboru a budou odeslána do Detektor anomálií API.

Vytvořte novou metodu pro čtení dat časové řady a přidejte ji do objektu Request. Volejte File.ReadAllLines() s cestou k souboru, vytvořte seznam objektů point a prokládejte všechny znaky nového řádku. Extrahujte hodnoty a oddělte datestamp od její číselné hodnoty a přidejte je do nového Point objektu.

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

static Request GetSeriesFromFile(string path)
{
    List<Point> list = File.ReadAllLines(path, Encoding.UTF8)
        .Where(e => e.Trim().Length != 0)
        .Select(e => e.Split(','))
        .Where(e => e.Length == 2)
        .Select(e => new Point(DateTime.Parse(e[0]), Double.Parse(e[1]))).ToList();
    
    return new Request(list, Granularity.Daily); 
}

Detekce anomálií v celé datové sadě

Vytvořte metodu pro volání metody EntireDetectAsync() klienta s objektem a vyčekejte na odpověď Request jako objekt EntireDetectResponse. Pokud časová řada obsahuje nějaké anomálie, iterují se v odpovědi hodnotami IsAnomaly a vytisknou se všechny hodnoty , které jsou true . Tyto hodnoty odpovídají indexu anomálií datových bodů, pokud byly nalezeny.

static async Task EntireDetectSampleAsync(IAnomalyDetectorClient client, Request request)
{
    Console.WriteLine("Detecting anomalies in the entire time series.");

    EntireDetectResponse result = await client.EntireDetectAsync(request).ConfigureAwait(false);

    if (result.IsAnomaly.Contains(true))
    {
        Console.WriteLine("An anomaly was detected at index:");
        for (int i = 0; i < request.Series.Count; ++i)
        {
            if (result.IsAnomaly[i])
            {
                Console.Write(i);
                Console.Write(" ");
            }
        }
        Console.WriteLine();
    }
    else
    {
        Console.WriteLine(" No anomalies detected in the series.");
    }
}

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

Vytvořte metodu pro volání metody LastDetectAsync() klienta s objektem a vyčekejte na odpověď Request jako objekt LastDetectResponse. Zkontrolujte atribut IsAnomaly odpovědi a zjistěte, jestli nejnovější odeslaný datový bod byl anomálií nebo ne.

static async Task LastDetectSampleAsync(IAnomalyDetectorClient client, Request request)
{

    Console.WriteLine("Detecting the anomaly status of the latest point in the series.");
    LastDetectResponse result = await client.LastDetectAsync(request).ConfigureAwait(false);

    if (result.IsAnomaly)
    {
        Console.WriteLine("The latest point was detected as an anomaly.");
    }
    else
    {
        Console.WriteLine("The latest point was not detected as an anomaly.");
    }
}

Detekce bodů změn v datové sadě

Vytvořte metodu pro volání metody DetectChangePointAsync klienta s objektem a vyčekejte na odpověď Request jako objekt ChangePointDetectResponse. Zkontrolujte hodnoty IsChangePoint odpovědi a vytiskněte všechny hodnoty , které jsou true . Tyto hodnoty odpovídají bodům změny trendu, pokud byly nalezeny.

public async Task DetectChangePoint(IAnomalyDetectorClient client, Request request)
{
    Console.WriteLine("Detecting the change points in the series.");

    ChangePointDetectResponse result = await client.DetectChangePointAsync(request).ConfigureAwait(false);

    if (result.IsChangePoint.Contains(true))
    {
        Console.WriteLine("A change point was detected at index:");
        for (int i = 0; i < request.Series.Count; ++i)
        {
            if (result.IsChangePoint[i])
            {
                Console.Write(i);
                Console.Write(" ");
            }
        }
        Console.WriteLine();
    }
    else
    {
        Console.WriteLine("No change point detected in the series.");
    }
}

Spuštění aplikace

Spusťte aplikaci pomocí dotnet run příkazu z adresáře vaší aplikace.

dotnet run

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

Pokud chcete vyčistit a odebrat předplatné Cognitive Services, můžete prostředek nebo skupinu prostředků odstranit. Odstraněním skupiny prostředků dojde také k odstranění všech dalších prostředků přidružených ke skupině prostředků.

Další kroky

Koncepty:

Kurzy:

Začínáme s klientskou knihovnou Detektor anomálií pro JavaScript. Postupujte podle těchto kroků a nainstalujte balíček a začněte používat algoritmy poskytované službou. Služba Detektor anomálií umožňuje v datech časových řad automaticky vyhledat anomálie pomocí nejlepších modelů bez ohledu na obor, scénář nebo objem dat.

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

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

Referenční dokumentace ke knihovně | Zdrojový kód knihovny | Balíček (npm) | Vyhledejte kód na GitHub

Požadavky

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

Nastavení

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

Poznámka

Koncové body pro prostředky nevyužívající zkušební verzi vytvořené po 1. červenci 2019 používají vlastní formát subdomény, který vidíte níže. Další informace a úplný seznam regionálních koncových bodů najdete v tématu názvy vlastních subdomén pro 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ěření 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

Použijte pokyny 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 do něj.

mkdir myapp && cd myapp

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

npm init

Vytvořte soubor s názvem a index.js importujte 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é pro koncový bod a klíč Azure vašeho prostředku. Pokud jste proměnnou prostředí vytvořili po spuštění aplikace, budete muset zavřít a znovu otevřít editor, integrované vývojové prostředí nebo prostředí, ve které ji spustíte, abyste k proměnné měli přístup. Vytvořte další proměnnou pro příklad datového souboru, který stáhnete v pozdějším kroku, a prázdný seznam pro datové body. 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 ms-rest-azure azure-cognitiveservices-anomalydetector balíčky NPM a . Knihovna csv-parse se také používá v tomto rychlém startu:

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

Soubor vaší package.json aplikace 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ést detekci anomálií u celé datové sady pomocí funkce entireDetect()nebo u nejnovějšího datového bodu pomocí metody LastDetect(). Metoda ChangePointDetectAsync detekuje body, které označí změny v trendu.

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

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

Příklady kódu

Tyto fragmenty kódu ukazují, jak pomocí klientské knihovny Detektor anomálií pro Node.js:

Ověření klienta

Vytvořte instanci objektu AnomalyDetectorClient s koncovým bodem a přihlašovacími údaji.

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

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

Stáhněte si příklad dat pro tento rychlý start z GitHub:

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

Tato data časových řad jsou formátována jako .csv a budou odeslána do rozhraní API Detektor anomálií dat.

Načtěte datový soubor pomocí metody knihovny csv-parse a readFileSync() parsování souboru pomocí parse() . Pro každý řádek nasučte 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é datové sadě

Voláním rozhraní API detekuje anomálie v celé časové řadě jako dávku pomocí metody entireDetect() klienta. Uložte vrácený objekt EntireDetectResponse. Iteruje seznamem odpovědí a vytiskne isAnomaly index všech true hodnot. Tyto hodnoty odpovídají indexu anomálií 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

Voláním Detektor anomálií API zjistěte, jestli je nejnovějším datovým bodem anomálie, pomocí metody lastDetect() klienta a uložte vrácený objekt LastDetectResponse. Hodnota odpovědi je isAnomaly logická hodnota, která určuje stav anomálií tohoto 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 datové sadě

Voláním rozhraní API zjistíte body změn v časové řadě pomocí metody detectChangePoint() klienta. Uložte vrácený objekt ChangePointDetectResponse. Iteruje seznamem odpovědí a vytiskne isChangePoint 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í node příkazu v souboru rychlého startu.

node index.js

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

Pokud chcete vyčistit a odebrat předplatné Cognitive Services, můžete prostředek nebo skupinu prostředků odstranit. Odstraněním skupiny prostředků dojde také k odstranění všech dalších prostředků přidružených ke skupině prostředků.

Další kroky

Koncepty:

Kurzy:

Začněte s klientskou knihovnou anomálií pro Python. Pomocí těchto kroků nainstalujete balíček Start s použitím algoritmů poskytovaných službou. Služba detektoru anomálií umožňuje v datech časových řad najít neobvyklé typy, a to díky tomu, že automaticky používá nejvhodnější modely, bez ohledu na obor, scénář nebo objem dat.

Použijte klientskou knihovnu detektoru anomálií pro Python:

  • Detekovat anomálie v celé sadě dat časových řad jako dávkový požadavek
  • Zjistit stav anomálií z nejnovějšího datového bodu v časové řadě
  • Zjištění bodů změny trendu v datové sadě.

Referenční dokumentace ke knihovně | Zdrojový kód knihovny | Balíček (PyPi) | Vyhledejte vzorový kód v GitHub

Požadavky

  • Python 3.x
  • Knihovna analýzy dat PANDAS
  • Předplatné Azure – Vytvořte si ho zdarma .
  • Jakmile budete mít předplatné Azure, vytvořením prostředku detektoru anomálií v Azure Portal, abyste získali svůj klíč a koncový bod. Počkejte na nasazení a klikněte na tlačítko Přejít k prostředku .
    • K připojení aplikace k rozhraní API detektoru anomálií budete potřebovat klíč a koncový bod z prostředku, který vytvoříte. Svůj klíč a koncový bod vložíte do níže uvedeného kódu později v rychlém startu. K vyzkoušení služby můžete použít bezplatnou cenovou úroveň ( F0 ) a upgradovat ji později na placenou úroveň pro produkční prostředí.

Nastavení

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

Poznámka

Koncové body pro prostředky nevyužívající zkušební verzi vytvořené po 1. červenci 2019 používají vlastní formát subdomény, který vidíte níže. Další informace a úplný seznam regionálních koncových bodů najdete v tématu názvy vlastních subdomén pro 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ěření 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

Použijte pokyny 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 importujte 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 nainstalovat klientskou knihovnu pomocí nástroje:

pip install --upgrade azure-ai-anomalydetector

Objektový model

Klient detektoru anomálií je objekt AnomalyDetectorClient , který se ověřuje v Azure pomocí vašeho klíče. Klient může provést detekci anomálií celou datovou sadu pomocí detect_entire_seriesnebo nejnovějšímu datovému bodu pomocí detect_last_point. Funkce detect_change_point detekuje body, které označují změny ve trendu.

Data časové řady se odesílají jako série objektů TimeSeriesPoints . DetectRequestObjekt obsahuje vlastnosti pro popsání dat TimeGranularity , například parametry pro detekci anomálií.

Odezva detektoru anomálií je objekt LastDetectResponse, EntireDetectResponsenebo ChangePointDetectResponse v závislosti na použité metodě.

Příklady kódu

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

Ověření klienta

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

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 GitHub:

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

Tato data časové řady jsou formátována jako soubor .csv a budou odesílána do rozhraní API detektoru anomálií.

Načtěte datový soubor pomocí metody knihovny PANDAS read_csv() a vytvořte prázdnou proměnnou seznamu pro uložení datové řady. Iterujte soubor a připojovat 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', parse_dates=[0])
for index, row in data_file.iterrows():
    series.append(TimeSeriesPoint(timestamp=row[0], value=row[1]))

Vytvořte DetectRequest objekt s časovou řadou a TimeGranularity (nebo periodicitou) svých datových bodů. Například, TimeGranularity.daily.

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

Popisy vstupních argumentů: series: vyžaduje se v požadavku. musí se jednat o typ pole nebo seznamu a mít více než 12 bodů a nesmí být větší než 8640 bodů. musí se seřadit podle časového razítka ve vzestupném pořadí a nemůže mít duplicitní časové razítko. ' členitost ': vyžaduje se v požadavku. může to být jenom jedna z následujících: [' Daily ', ' minute ', ' hourly ', ' týdně ', ' monthd ', ' monthd ', ' Seconde ']. ' customInterval ': musí být celé číslo > 0. ' period ': musí být celé číslo >= 0. ' maxAnomalyRatio ': musí být menší než 50% bodů řady (0 < maxAnomalyRatio < 0,5). ' citlivost ': musí se jednat o celé číslo od 0 do 99.

Detekovat anomálie v celé sadě dat

Zavolejte rozhraní API pro detekci anomálií prostřednictvím celých dat časových řad pomocí metody klienta detect_entire_series . Uložte vrácený objekt EntireDetectResponse . Iterujte v seznamu odpovědí is_anomaly a vytiskněte index všech true hodnot. Tyto hodnoty odpovídají indexu datových bodů neobvyklé, 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.')

Zjistit stav anomálií nejnovějšího datového bodu

Zavolejte rozhraní API pro detekci anomálií, abyste zjistili, jestli je váš nejnovější datový bod anomálií pomocí detect_last_point metody klienta, a uložte vrácený LastDetectResponse objekt. is_anomalyHodnota odpovědi je logická hodnota, která určuje stav anomálie tohoto 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.')

Zjištění bodů změny v sadě dat

Zavolejte rozhraní API pro detekci změn bodů v datech časové řady pomocí detect_change_point metody klienta. Uložte vrácený ChangePointDetectResponse objekt. Iterujte v seznamu odpovědí is_change_point a vytiskněte index všech true hodnot. Tyto hodnoty odpovídají indexům bodů změny trendů, 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é Cognitive Services, můžete prostředek nebo skupinu prostředků odstranit. Odstraněním skupiny prostředků dojde také k odstranění všech dalších prostředků přidružených ke skupině prostředků.

Další kroky

Koncepty:

Kurzy:

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

Základní informace o konceptech detektoru anomálií najdete v článku Přehled .

Požadavky

  • Předplatné Azure – Vytvořte si ho zdarma .
  • Jakmile budete mít předplatné Azure, vytvořením prostředku detektoru anomálií v Azure Portal, abyste získali svůj klíč a koncový bod. Počkejte na nasazení a vyberte tlačítko Přejít k prostředku .
    • K použití REST API budete potřebovat adresu klíče a koncového bodu z prostředku, který vytvoříte. K vyzkoušení služby můžete použít bezplatnou cenovou úroveň ( F0 ) a upgradovat ji později na placenou úroveň pro produkční prostředí.

Zjištění anomálií pro celou řadu

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

  • Klíč předplatného služby detektoru anomálií
  • Adresa koncového bodu detektoru anomálií.
  • Platný soubor JSON dat časových řad pro otestování anomálií. Pokud nemáte vlastní soubor, můžete vytvořit sample.jsv souboru z ukázky textu žádosti.
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 naplně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 rozhraní REST pro detekci anomálií.

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

Pokud chcete vyčistit a odebrat předplatné Cognitive Services, můžete prostředek nebo skupinu prostředků odstranit. Odstraněním skupiny prostředků dojde také k odstranění všech dalších prostředků přidružených ke skupině prostředků.

Další kroky

Koncepty:

Kurzy: