Quickstart: De Anomaly Detector-clientbibliotheek gebruiken

Ga aan de slag met Anomaly Detector clientbibliotheek voor C#. Voer de volgende stappen uit om het pakket te installeren en de algoritmen te gaan gebruiken die door de service worden geleverd. Met de Anomaly Detector-service kunt u afwijkingen in uw tijdreeksgegevens vinden door hierop automatisch de best passende modellen uit te voeren, ongeacht de branche, het scenario of het gegevensvolume.

Gebruik de Anomaly Detector-clientbibliotheek voor C# voor het volgende:

  • Anomalieën in uw tijdreeksgegevensset als een batchaanvraag te detecteren
  • De anomaliestatus van het laatste gegevenspunt in uw tijdreeks te detecteren
  • Trendwijzigingspunten in uw gegevensset te detecteren.

Referentiedocumentatie voor bibliotheek | Bibliotheekbroncode | Pakket (NuGet) | De code zoeken op GitHub

Vereisten

  • Azure-abonnement: Krijg een gratis abonnement
  • De huidige versie van .NET Core
  • Zodra u een Azure-abonnement hebt, maakt u een Anomaly Detector-resource in de Azure-portal om uw sleutel en eindpunt op te halen. Wacht tot deze is geïmplementeerd en klik op de knop Naar de resource gaan.
    • U hebt de sleutel en het eindpunt nodig van de resource die u maakt om de toepassing te verbinden met de Anomaly Detector-API. Later in de quickstart plakt u uw sleutel en eindpunt in de onderstaande code. U kunt de gratis prijscategorie (F0) gebruiken om de service uit te proberen, en later upgraden naar een betaalde laag voor productie.

Instellen

Een omgevingsvariabele maken

Notitie

De eindpunten voor niet-proefversie-resources die zijn gemaakt na 1 juli 2019, gebruiken de aangepaste indeling voor subdomeinen die hieronder wordt weergegeven. Zie Aangepaste subdomeinnamen voor Cognitive Services voor meer informatie en een volledige lijst met regionale eindpunten.

Maak met uw sleutel en eindpunt van de resource die u hebt gemaakt, twee omgevingsvariabelen voor verificatie:

  • ANOMALY_DETECTOR_KEY: de resourcesleutel voor het verifiëren van uw aanvragen.
  • ANOMALY_DETECTOR_ENDPOINT: het resource-eindpunt voor het verzenden van API-aanvragen. Dit ziet er als volgt uit:
    • https://<your-custom-subdomain>.api.cognitive.microsoft.com

Volg de instructies voor uw besturingssysteem.

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

Nadat u de omgevingsvariabele hebt toegevoegd, start u het consolevenster opnieuw.

Een nieuwe .NET Core-app maken

Gebruik in een consolevenster (zoals cmd, PowerShell of Bash) de opdracht dotnet new om een nieuwe console-app te maken met de naam anomaly-detector-quickstart. Met deze opdracht maakt u een eenvoudig Hallo wereld-project met één C#-bronbestand: Program.cs.

dotnet new console -n anomaly-detector-quickstart

Wijzig uw map in de zojuist gemaakte app-map. U kunt de toepassing maken met:

dotnet build

De build-uitvoer mag geen waarschuwingen of fouten bevatten.

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

De clientbibliotheek installeren

Installeer in de toepassingsmap de Anomaly Detector-clientbibliotheek voor .NET met de volgende opdracht:

dotnet add package Microsoft.Azure.CognitiveServices.AnomalyDetector

Open vanuit de projectmap het program.cs-bestand en voeg het volgende toe met behulp van directives:

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;

Maak in de main()-methode van de toepassing variabelen voor de Azure-locatie van uw resource en uw sleutel als omgevingsvariabele. Als u de omgevingsvariabele hebt gemaakt nadat u de toepassing hebt gestart, moet u de editor, IDE of shell waarmee deze wordt uitgevoerd, sluiten en opnieuw openen om toegang te krijgen tot de variabele.

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();
}

Objectmodel

De Anomaly Detector-client is een AnomalyDetectorClient-object dat met behulp van ApiKeyServiceClientCredentials, dat uw sleutel bevat, wordt geverifieerd bij Azure. De client kan anomaliedetectie uitvoeren op een hele gegevensset met behulp van EntireDetectAsync(), of op het laatste gegevenspunt met behulp van LastDetectAsync(). De methode ChangePointDetectAsync detecteert punten die wijzigingen in een trend markeren.

Tijdreeksgegevens worden verzonden als een reeks punten in een aanvraagobject. Het Request-object bevat eigenschappen die de gegevens beschrijven (granulariteit bijvoorbeeld) en parameters voor de anomaliedetectie.

Het antwoord van Anomaly Detector is een EntireDetectResponse-, LastDetectResponse- of ChangePointDetectResponse-object afhankelijk van de gebruikte methode.

Codevoorbeelden

Deze codefragmenten laten zien hoe u de volgende taken kunt uitvoeren met de Anomaly Detector-clientbibliotheek voor .NET:

De client verifiëren

Instantieer in een nieuwe methode een client met uw eindpunt en sleutel. Maak een ApiKeyServiceClientCredentials-object met uw sleutel en gebruik het met uw eindpunt om een AnomalyDetectorClient--object te maken.

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

Tijdreeksgegevens uit een bestand laden

Download de voorbeeldgegevens voor deze quickstart van GitHub:

  1. Klik in uw browser met de rechtermuisknop op Onbewerkt.
  2. Klik op Koppeling opslaan als.
  3. Sla het bestand op in de map van de toepassing als CSV-bestand.

Deze tijdreeksgegevens worden opgemaakt als CSV-bestand en worden verzonden naar de Anomaly Detector-API.

Maak een nieuwe methode om de tijdreeksgegevens te lezen en voeg deze toe aan een Aanvraag-object. Roep File.ReadAllLines() aan met het bestandspad en maak een lijst met Punt-objecten en verwijder nieuwe regeltekens. Extraheer de waarden en scheid de tijdstempel van de numerieke waarde, en voeg ze toe aan een nieuw Point-object.

Maak een Request-object met de reeks punten en Granularity.Daily voor de Granulariteit (of periodiciteit) van de gegevenspunten.

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); 
}

Anomalieën in de volledige gegevensset detecteren

Maak een methode voor het aanroepen van de EntireDetectAsync()-methode van de client met het Request-object en wacht op het antwoord als een EntireDetectResponse-object. Als de tijdreeks afwijkende waarden bevat, herhaalt u de IsAnomaly-waarden en drukt u de waarden af die true zijn. Deze waarden komen overeen met de index van afwijkende gegevenspunten, als die zijn gevonden.

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.");
    }
}

De anomaliestatus van het laatste gegevenspunt detecteren

Maak een methode voor het aanroepen van de LastDetectAsync()-methode van de client met het Request-object en wacht op het antwoord als een LastDetectResponse-object. Controleer het IsAnomaly-kenmerk van de reactie om te bepalen of het meest recente verzonden gegevenspunt wel of niet afwijkend is.

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.");
    }
}

Wijzigingspunten in de gegevensset detecteren

Maak een methode voor het aanroepen van de DetectChangePointAsync-methode van de client met het Request-object en wacht op het antwoord als een ChangePointDetectResponse-object. Controleer de IsChangePoint-waarden van het antwoord en druk alle waarden af die true zijn. Deze waarden komen overeen met trendwijzigingspunten, als die zijn gevonden.

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.");
    }
}

De toepassing uitvoeren

Voer de toepassing uit vanuit uw toepassingsmap met de opdracht dotnet run.

dotnet run

Resources opschonen

Als u een Cognitive Services-abonnement wilt opschonen en verwijderen, kunt u de resource of resourcegroep verwijderen. Als u de resourcegroep verwijdert, worden ook andere resources verwijderd die aan de resourcegroep zijn gekoppeld.

Volgende stappen

Concepten:

Zelfstudies:

Aan de slag met de Anomaly Detector-clientbibliotheek voor JavaScript. Voer de volgende stappen uit om het pakket te installeren en de algoritmen te gaan gebruiken die door de service worden geleverd. Met de Anomaly Detector-service kunt u afwijkingen in uw tijdreeksgegevens vinden door automatisch de best passende modellen erop uit te voeren, onafhankelijk van bedrijfstak, scenario of gegevensvolume.

Gebruik de Anomaly Detector-clientbibliotheek voor JavaScript om:

  • Anomalieën in uw tijdreeksgegevensset als een batchaanvraag te detecteren
  • De anomaliestatus van het laatste gegevenspunt in uw tijdreeks te detecteren
  • Trendwijzigingspunten in uw gegevensset te detecteren.

Referentiedocumentaie voor bibliotheek | Bibliotheekbroncode | Pakket (npm) | De code zoeken op GitHub

Vereisten

  • Azure-abonnement: Krijg een gratis abonnement
  • De huidige versie van Node.js
  • Zodra u een Azure-abonnement hebt, Een Anomaly Detector-resource maken in de Azure-portal om uw sleutel en eindpunt op te halen. Wacht tot deze is geïmplementeerd en klik op de knop Naar de resource gaan.
    • U hebt de sleutel en het eindpunt nodig van de resource die u maakt om de toepassing te verbinden met de Anomaly Detector-API. Later in de quickstart plakt u uw sleutel en eindpunt in de onderstaande code. U kunt de gratis prijscategorie (F0) gebruiken om de service uit te proberen, en later upgraden naar een betaalde laag voor productie.

Instellen

Een omgevingsvariabele maken

Notitie

De eindpunten voor niet-proefversie-resources die zijn gemaakt na 1 juli 2019, gebruiken de aangepaste indeling voor subdomeinen die hieronder wordt weergegeven. Zie Aangepaste subdomeinnamen voor Cognitive Services voor meer informatie en een volledige lijst met regionale eindpunten.

Maak met uw sleutel en eindpunt van de resource die u hebt gemaakt, twee omgevingsvariabelen voor verificatie:

  • ANOMALY_DETECTOR_KEY: de resourcesleutel voor het verifiëren van uw aanvragen.
  • ANOMALY_DETECTOR_ENDPOINT: het resource-eindpunt voor het verzenden van API-aanvragen. Dit ziet er als volgt uit:
    • https://<your-custom-subdomain>.api.cognitive.microsoft.com

Volg de instructies voor uw besturingssysteem.

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

Nadat u de omgevingsvariabele hebt toegevoegd, start u het consolevenster opnieuw.

Een nieuwe Node.js-toepassing maken

Maak in een consolevenster (zoals cmd, PowerShell of Bash) een nieuwe map voor de app, en navigeer naar deze map.

mkdir myapp && cd myapp

Voer de opdracht npm init uit om een knooppunttoepassing te maken met een package.json-bestand.

npm init

Maak een bestand met de naam index.js en importeer de volgende bibliotheken:

'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');

Maak variabelen voor het Azure-eindpunt en de Azure-sleutel voor uw resource. Als u de omgevingsvariabele hebt gemaakt nadat u de toepassing hebt gestart, moet u de editor, IDE of shell waarmee deze wordt uitgevoerd, sluiten en opnieuw openen om toegang te krijgen tot de variabele. Maak een andere variabele voor het voorbeeldgegevensbestand dat u in een latere stap gaat downloaden, en maak een lege lijst voor de gegevenspunten. Maak vervolgens een ApiKeyCredentials-object om de sleutel in op te slaan.

// 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 = [];

De clientbibliotheek installeren

Installeer de NPM-pakketten ms-rest-azure en azure-cognitiveservices-anomalydetector. De CSV-parseerbibliotheek wordt ook gebruikt in deze snelstart:

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

Het package.json-bestand van uw app wordt bijgewerkt met de afhankelijkheden.

Objectmodel

De Anomaly Detector-client is een AnomalyDetectorClient-object dat met behulp van uw sleutel wordt geverifieerd bij Azure. De client kan anomaliedetectie uitvoeren op een hele gegevensset met behulp van entireDetect(), of op het laatste gegevenspunt met behulp van LastDetect(). De methode ChangePointDetectAsync detecteert punten die wijzigingen in een trend markeren.

Tijdreeksgegevens worden verzonden als een reeks punten in een aanvraagobject. Het Request-object bevat eigenschappen die de gegevens (bijvoorbeeld granulariteit) en parameters voor de anomaliedetectie beschrijven.

Het antwoord van Anomaly Detector is een LastDetectResponse-, EntireDetectResponse- of ChangePointDetectResponse-object afhankelijk van de gebruikte methode.

Codevoorbeelden

Deze codefragmenten laten zien hoe u de volgende taken kunt uitvoeren met de Anomaly Detector-clientbibliotheek voor Node.js:

De client verifiëren

Instantieer een AnomalyDetectorClient-object met uw eindpunt en referenties.

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

Tijdreeksgegevens vanuit een bestand laden

Download de voorbeeldgegevens voor deze quickstart van GitHub:

  1. Klik in uw browser met de rechtermuisknop op Onbewerkt.
  2. Klik op Koppeling opslaan als.
  3. Sla het bestand op in de map van de toepassing als CSV-bestand.

Deze tijdreeksgegevens worden opgemaakt als CSV-bestand en naar de Anomaly Detector-API verzonden.

Lees het gegevensbestand met de readFileSync()-methode van de CSV-parseerbibliotheek en parseer het bestand met parse(). Voor elke regel pusht u een puntobject met het tijdstempel en de numerieke waarde.

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()

Anomalieën in de volledige gegevensset detecteren

Roep de API aan om anomalieën te detecteren in de volledige tijdreeksgegevens met behulp van de entireDetect()-methode van de client. Sla het geretourneerde EntireDetectResponse-object op. Herhaal de isAnomaly-lijst van de reactie en druk de index van alle true-waarden af. Deze waarden komen overeen met de index van afwijkende gegevenspunten, als die zijn gevonden.

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()

De anomaliestatus van het laatste gegevenspunt detecteren

Roep de Anomaly Detector-API aan om te bepalen of uw laatste gegevenspunt een anomalie is met behulp van de lastDetect()-methode van de client en sla het geretourneerde LastDetectResponse-object op. De isAnomaly-waarde van de reactie is een booleaanse waarde die de anomaliestatus van het punt aangeeft.

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()

Wijzigingspunten in de gegevensset detecteren

Roep de API aan om wijzigingspunten in de tijdreeks te detecteren met behulp van de methode detectChangePoint() van de client. Sla het geretourneerde ChangePointDetectResponse-object op. Herhaal de isChangePoint-lijst van de reactie en druk de index van alle true-waarden af. Deze waarden komen overeen met de indexen van trendwijzigingspunten, als die zijn gevonden.

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)
        })
}

De toepassing uitvoeren

Voer de toepassing uit met de opdracht node in uw quickstart-bestand.

node index.js

Resources opschonen

Als u een Cognitive Services-abonnement wilt opschonen en verwijderen, kunt u de resource of resourcegroep verwijderen. Als u de resourcegroep verwijdert, worden ook andere resources verwijderd die aan de resourcegroep zijn gekoppeld.

Volgende stappen

Concepten:

Zelfstudies:

Ga aan de slag met de Anomaly Detector-clientbibliotheek voor Python. Voer de volgende stappen uit om het pakket te installeren en de algoritmen te gaan gebruiken die door de service worden geleverd. Met de Anomaly Detector-service kunt u afwijkingen in uw tijdreeksgegevens vinden door hierop automatisch de best passende modellen uit te voeren, ongeacht de branche, het scenario of het gegevensvolume.

Gebruik de Anomaly Detector-clientbibliotheek voor Python om:

  • Anomalieën in uw tijdreeksgegevensset als een batchaanvraag te detecteren
  • De anomaliestatus van het laatste gegevenspunt in uw tijdreeks te detecteren
  • Trendwijzigingspunten in uw gegevensset te detecteren.

Referentiedocumentatie voor bibliotheek | Bibliotheekbroncode | Pakket (PyPi) | De voorbeeldcode zoeken op GitHub

Vereisten

  • Python 3.x
  • De bibliotheek voor Pandas-gegevensanalyse
  • Azure-abonnement: Krijg een gratis abonnement
  • Zodra u een Azure-abonnement hebt, maakt u een Anomaly Detector-resource in Azure Portal om uw sleutel en eindpunt op te halen. Wacht tot deze is geïmplementeerd en klik op de knop Naar de resource gaan.
    • U hebt de sleutel en het eindpunt nodig van de resource die u maakt om de toepassing te verbinden met de Anomaly Detector-API. Later in de quickstart plakt u uw sleutel en eindpunt in de onderstaande code. U kunt de gratis prijscategorie (F0) gebruiken om de service uit te proberen, en later upgraden naar een betaalde laag voor productie.

Instellen

Een omgevingsvariabele maken

Notitie

De eindpunten voor niet-proefversie-resources die zijn gemaakt na 1 juli 2019, gebruiken de aangepaste indeling voor subdomeinen die hieronder wordt weergegeven. Zie Aangepaste subdomeinnamen voor Cognitive Services voor meer informatie en een volledige lijst met regionale eindpunten.

Maak met uw sleutel en eindpunt van de resource die u hebt gemaakt, twee omgevingsvariabelen voor verificatie:

  • ANOMALY_DETECTOR_KEY: de resourcesleutel voor het verifiëren van uw aanvragen.
  • ANOMALY_DETECTOR_ENDPOINT: het resource-eindpunt voor het verzenden van API-aanvragen. Dit ziet er als volgt uit:
    • https://<your-custom-subdomain>.api.cognitive.microsoft.com

Volg de instructies voor uw besturingssysteem.

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

Nadat u de omgevingsvariabele hebt toegevoegd, start u het consolevenster opnieuw.

Een nieuwe Python-toepassing maken

Maak een nieuw Python-bestand en importeer de volgende bibliotheken.

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

Maak variabelen voor uw sleutel als een omgevingsvariabele, het pad naar een tijdreeksgegevensbestand en de Azure-locatie van uw abonnement. Bijvoorbeeld 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")

De clientbibliotheek installeren

Na de installatie van Python kunt u de clientbibliotheek installeren met:

pip install --upgrade azure-ai-anomalydetector

Objectmodel

De Anomaly Detector-client is een AnomalyDetectorClient-object dat met behulp van uw sleutel wordt geverifieerd bij Azure. De client kan anomaliedetectie uitvoeren op een hele gegevensset met behulp van detect_entire_series, of op het laatste gegevenspunt met behulp van detect_last_point. De functie detect_change_point detecteert punten die wijzigingen in een trend markeren.

Tijdreeksgegevens worden verzonden als een reeks TimeSeriesPoints-objecten. Het DetectRequest-object bevat eigenschappen die bijvoorbeeld de TimeGranularity van gegevens beschrijven en parameters voor de anomaliedetectie.

Het antwoord van Anomaly Detector is een LastDetectResponse-, EntireDetectResponse- of ChangePointDetectResponse-object afhankelijk van de gebruikte methode.

Codevoorbeelden

Deze codefragmenten laten zien hoe u de volgende taken kunt uitvoeren met de Anomaly Detector-clientbibliotheek voor Python:

De client verifiëren

Voeg uw Azure-locatievariabele toe aan het eindpunt en verifieer de client met uw sleutel.

client = AnomalyDetectorClient(AzureKeyCredential(SUBSCRIPTION_KEY), ANOMALY_DETECTOR_ENDPOINT)

Tijdreeksgegevens uit een bestand laden

Download de voorbeeldgegevens voor deze quickstart van GitHub:

  1. Klik in uw browser met de rechtermuisknop op Onbewerkt.
  2. Klik op Koppeling opslaan als.
  3. Sla het bestand op in de map van de toepassing als CSV-bestand.

Deze tijdreeksgegevens worden opgemaakt als CSV-bestand en worden verzonden naar de Anomaly Detector-API.

Laad uw gegevensbestand met de read_csv()-methode van de Pandas-bibliotheek en maak een lege lijstvariabele om uw gegevensreeksen op te slaan. Herhaal het bestand en voeg de gegevens toe als TimeSeriesPoint-object. Dit object bevat de tijdstempel en de numerieke waarde van de rijen van uw CSV-gegevensbestand.

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]))

Maak een DetectRequestobject met uw tijdreeks en de TimeGranularity (of periodiciteit) van de gegevenspunten. Bijvoorbeeld TimeGranularity.daily.

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

Beschrijvingen van invoerargumenten: 'series': vereist in aanvraag. moet matrix-/lijsttype zijn en meer dan 12 punten en niet meer dan 8640 punten hebben. moet worden gesorteerd op tijdstempel in oplopende volgorde en mag geen dubbele tijdstempel hebben. 'granulariteit': vereist in de aanvraag. kan slechts een van de volgende zijn: ['daily', 'minutely', 'hourly', 'weekly', 'monthly', 'yearly', 'secondly']. 'customInterval': moet een geheel getal > 0. 'period': moet een geheel getal >= 0. 'maxAnomalyRatio': moet minder zijn dan 50% van de reekspunten (0 < maxAnomalyRatio < 0,5). 'gevoeligheid': moet een geheel getal tussen 0 en 99 zijn.

Anomalieën in de volledige gegevensset detecteren

Roep de API aan om anomalieën te detecteren via de volledige tijdreeksgegevens met behulp van de detect_entire_series-methode van de client. Sla het geretourneerde EntireDetectResponse-object op. Herhaal de is_anomaly-lijst van de reactie en druk de index van alle true-waarden af. Deze waarden komen overeen met de index van afwijkende gegevenspunten, als die zijn gevonden.

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.')

De anomaliestatus van het laatste gegevenspunt detecteren

Roep de Anomaly Detector-API aan om te bepalen of uw laatste gegevenspunt een anomalie is met behulp van de detect_last_point-methode van de client en sla het geretourneerde LastDetectResponse-object op. De is_anomaly-waarde van het antwoord is een booleaanse waarde die de afwijkingsstatus van het punt opgeeft.

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.')

Wijzigingspunten in de gegevensset detecteren

Roep de API aan om wijzigingspunten in de tijdreeksgegevens te detecteren met behulp van de methode detect_change_point van de client. Sla het geretourneerde ChangePointDetectResponse-object op. Herhaal de is_change_point-lijst van de reactie en druk de index van alle true-waarden af. Deze waarden komen overeen met de indexen van trendwijzigingspunten, als die zijn gevonden.

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.')

De toepassing uitvoeren

Voer de toepassing uit met de opdracht python en uw bestandsnaam.

Resources opschonen

Als u een Cognitive Services-abonnement wilt opschonen en verwijderen, kunt u de resource of resourcegroep verwijderen. Als u de resourcegroep verwijdert, worden ook andere resources verwijderd die aan de resourcegroep zijn gekoppeld.

Volgende stappen

Concepten:

Zelfstudies:

In deze quickstart leert u hoe u afwijkingen in een batch met tijdreeksgegevens kunt detecteren, met behulp van de Anomaly Detector-service en cURL.

Raadpleeg het overzichtsartikel voor een gedetailleerde bespreking van de concepten van Anomaly Detector.

Vereisten

  • Azure-abonnement: Krijg een gratis abonnement
  • Zodra u een Azure-abonnement hebt, maakt u een Anomaly Detector-resource in Azure Portal om uw sleutel en eindpunt op te halen. Wacht tot deze is geïmplementeerd en selecteer de knop Ga naar resource.
    • U hebt het sleutel- en eindpuntadres nodig van de resource die u maakt, om de REST API te gebruiken. U kunt de gratis prijscategorie (F0) gebruiken om de service uit te proberen, en later upgraden naar een betaalde laag voor productie.

Afwijkingen voor een volledige reeks detecteren

Voer de volgende opdracht uit bij een opdrachtprompt: U moet de volgende waarden in de opdracht gebruiken.

  • Uw abonnementssleutel voor de Anomaly Detector-service.
  • Uw eindadres voor Anomaly Detector.
  • Een geldig JSON-bestand met tijdreeksgegevens om te testen op afwijkingen. Als u geen eigen bestand hebt, kunt u een voorbeeld.json-bestand maken vanuit het Aanvraagbody-voorbeeld.
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}" 

Voor een voorbeeld met alle waarden al ingevuld:

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"

Als u de voorbeeldgegevens uit de vereisten hebt gebruikt, ontvangt u een antwoord 200, met de volgende resultaten:

{
  "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
}

Raadpleeg de REST-naslaginformatie over anomaliedetectie voor meer informatie.

Resources opschonen

Als u een Cognitive Services-abonnement wilt opschonen en verwijderen, kunt u de resource of resourcegroep verwijderen. Als u de resourcegroep verwijdert, worden ook andere resources verwijderd die aan de resourcegroep zijn gekoppeld.

Volgende stappen

Concepten:

Zelfstudies: