Snabbstart: Använda Avvikelseidentifiering univariate-klientbibliotek

Kom igång med Avvikelseidentifiering klientbibliotek för C#. Följ de här stegen för att installera paketet och börja använda de algoritmer som tillhandahålls av tjänsten. Med Avvikelseidentifiering-tjänsten kan du hitta avvikelser i dina tidsseriedata genom att automatiskt använda de bästa modellerna på dem, oavsett bransch, scenario eller datavolym.

Använd Avvikelseidentifiering för C# för att:

  • Identifiera avvikelser i hela din tidsseriedatauppsättning som en batchbegäran
  • Identifiera avvikelsestatusen för den senaste datapunkten i tidsserien
  • Identifiera trendändringspunkter i datauppsättningen.

Biblioteksreferensdokumentation | Bibliotekskällkod | Paket (NuGet) | Hitta koden på GitHub

Förutsättningar

  • Azure-prenumeration – Skapa en kostnadsfritt
  • Den aktuella versionen av .NET Core
  • När du har din Azure-prenumeration skapar Avvikelseidentifiering en Avvikelseidentifiering resurs i Azure Portal för att slutpunkt. Vänta tills den har distribuerats och klicka på knappen Gå till resurs.
    • Du behöver nyckeln och slutpunkten från den resurs som du skapar för att ansluta ditt program till Avvikelseidentifiering-API:et. Du klistrar in din nyckel och slutpunkt i koden nedan senare i snabbstarten. Du kan använda den kostnadsfria prisnivån ( F0 ) för att prova tjänsten och senare uppgradera till en betald nivå för produktion.

Inrätta

Skapa en miljö variabel

Anteckning

Slut punkterna för icke-testresurser som skapats efter den 1 juli 2019 använder det anpassade under domän formatet som visas nedan. Mer information och en fullständig lista över regionala slut punkter finns i anpassade under domän namn för Cognitive Services.

Med din nyckel och slut punkt från den resurs som du har skapat skapar du två miljövariabler för autentisering:

  • ANOMALY_DETECTOR_KEY – Resurs nyckeln för autentisering av dina begär Anden.
  • ANOMALY_DETECTOR_ENDPOINT – Resurs slut punkten för att skicka API-begäranden. Resultatet ser ut så här:
    • https://<your-custom-subdomain>.api.cognitive.microsoft.com

Följ anvisningarna för ditt operativ system.

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

Starta om konsol fönstret när du har lagt till miljövariabeln.

Skapa ett nytt .NET Core-program

I ett konsolfönster (till exempel cmd, PowerShell eller Bash) använder du kommandot för att skapa en dotnet new ny konsolapp med namnet anomaly-detector-quickstart . Det här kommandot skapar ett enkelt "Hello World"-projekt med en enda C#-källfil: Program.cs.

dotnet new console -n anomaly-detector-quickstart

Ändra katalogen till den nyligen skapade appmappen. Du kan skapa programmet med:

dotnet build

Build-utdata får inte innehålla några varningar eller fel.

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

Installera klientbiblioteket

I programkatalogen installerar du Avvikelseidentifiering för .NET med följande kommando:

dotnet add package Microsoft.Azure.CognitiveServices.AnomalyDetector

Från projektkatalogen öppnar du filen program.cs och lägger till följande med 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;

I programmets main() -metod skapar du variabler för resursens Azure-plats och din nyckel som en miljövariabel. Om du har skapat miljövariabeln när programmet har startats måste redigeraren, IDE:t eller gränssnittet som kör den stängas och läsas in igen för att få åtkomst till variabeln.

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

Objektmodell

Klienten Avvikelseidentifiering är ett AnomalyDetectorClient-objekt som autentiserar till Azure med hjälp av ApiKeyServiceClientCredentials, som innehåller din nyckel. Klienten kan göra avvikelseidentifiering på en hel datauppsättning med hjälp av EntireDetectAsync()eller på den senaste datapunkten med lastDetectAsync(). Metoden ChangePointDetectAsync identifierar punkter som markerar ändringar i en trend.

Tidsseriedata skickas som en serie punkter i ett begärandeobjekt. Objektet Request innehåller egenskaper för att beskriva data (kornighet till exempel) och parametrar för avvikelseidentifiering.

Det Avvikelseidentifiering svaret är antingen ett EntireDetectResponse-, LastDetectResponse-eller changePointDetectResponse-objekt, beroende på vilken metod som används.

Kodexempel

De här kodfragmenten visar hur du gör följande med Avvikelseidentifiering klientbibliotek för .NET:

Autentisera klienten

I en ny metod instansierar du en klient med din slutpunkt och nyckel. Skapa ett ApiKeyServiceClientCredentials-objekt med din nyckel och använd det med slutpunkten för att skapa ett AnomalyDetectorClient-objekt.

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

Läsa in tidsseriedata från en fil

Ladda ned exempeldata för den här snabbstarten från GitHub:

  1. Högerklicka på Raw i webbläsaren.
  2. Klicka på Spara länk som.
  3. Spara filen i programkatalogen som en .csv fil.

Den här tidsseriedata formateras som en .csv-fil och skickas till Avvikelseidentifiering-API:et.

Skapa en ny metod för att läsa in tidsseriedata och lägga till dem i ett Request-objekt. Anropa File.ReadAllLines() med filsökvägen och skapa en lista med punktobjekt och ta bort eventuella nya radtecken. Extrahera värdena och avgränsa datestamp från dess numeriska värde och lägg till dem i ett nytt Point objekt.

Skapa Request ett -objekt med serien med punkter Granularity.Daily och för kornigheten (eller periodiciteten) för datapunkterna.

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

Identifiera avvikelser i hela datauppsättningen

Skapa en metod för att anropa klientens EntireDetectAsync()-metod med -objektet och vänta på svaret som ett Request EntireDetectResponse-objekt. Om tidsserien innehåller avvikelser itererar du genom svarets IsAnomaly-värden och skriver ut alla som är true . Dessa värden motsvarar indexet för avvikande datapunkter, om några hittades.

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

Identifiera avvikelsestatus för den senaste datapunkten

Skapa en metod för att anropa klientens LastDetectAsync()-metod med -objektet och vänta på svaret som Request ett LastDetectResponse-objekt. Kontrollera svarets IsAnomaly-attribut för att avgöra om den senaste datapunkten som skickades var en avvikelse eller inte.

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

Identifiera ändringspunkter i datauppsättningen

Skapa en metod för att anropa klientens DetectChangePointAsync-metod med -objektet och vänta på svaret som ett Request ChangePointDetectResponse-objekt. Kontrollera svarets IsChangePoint-värden och skriv ut alla som är true . Dessa värden motsvarar trendändringspunkter, om några hittades.

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

Kör programmet

Kör programmet med kommandot dotnet run från programkatalogen.

dotnet run

Rensa resurser

Om du vill rensa och ta bort en Cognitive Services prenumeration kan du ta bort resursen eller resurs gruppen. Om du tar bort resurs gruppen raderas även andra resurser som är associerade med resurs gruppen.

Nästa steg

Koncept:

Självstudier:

Kom igång med Avvikelseidentifiering klientbibliotek för JavaScript. Följ de här stegen för att installera paketet och börja använda de algoritmer som tillhandahålls av tjänsten. Med Avvikelseidentifiering-tjänsten kan du hitta avvikelser i dina tidsseriedata genom att automatiskt använda de bästa modellerna på dem, oavsett bransch, scenario eller datavolym.

Använd Avvikelseidentifiering för JavaScript för att:

  • Identifiera avvikelser i hela din tidsseriedatauppsättning som en batchbegäran
  • Identifiera avvikelsestatusen för den senaste datapunkten i tidsserien
  • Identifiera trendändringspunkter i datauppsättningen.

Biblioteksreferensdokumentation | Bibliotekskällkod | Paket (npm) | Hitta koden på GitHub

Förutsättningar

  • Azure-prenumeration – Skapa en kostnadsfritt
  • Den aktuella versionen av Node.js
  • När du har din Azure-prenumeration skapar Avvikelseidentifiering en Avvikelseidentifiering resurs i Azure Portal för att slutpunkt. Vänta tills den har distribuerats och klicka på knappen Gå till resurs.
    • Du behöver nyckeln och slutpunkten från den resurs som du skapar för att ansluta ditt program till Avvikelseidentifiering-API:et. Du klistrar in din nyckel och slutpunkt i koden nedan senare i snabbstarten. Du kan använda den kostnadsfria prisnivån ( F0 ) för att prova tjänsten och senare uppgradera till en betald nivå för produktion.

Inrätta

Skapa en miljö variabel

Anteckning

Slut punkterna för icke-testresurser som skapats efter den 1 juli 2019 använder det anpassade under domän formatet som visas nedan. Mer information och en fullständig lista över regionala slut punkter finns i anpassade under domän namn för Cognitive Services.

Med din nyckel och slut punkt från den resurs som du har skapat skapar du två miljövariabler för autentisering:

  • ANOMALY_DETECTOR_KEY – Resurs nyckeln för autentisering av dina begär Anden.
  • ANOMALY_DETECTOR_ENDPOINT – Resurs slut punkten för att skicka API-begäranden. Resultatet ser ut så här:
    • https://<your-custom-subdomain>.api.cognitive.microsoft.com

Följ anvisningarna för ditt operativ system.

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

Starta om konsol fönstret när du har lagt till miljövariabeln.

Skapa ett nytt Node.js-program

I ett konsolfönster (till exempel cmd, PowerShell eller Bash) skapar du en ny katalog för din app och navigerar till den.

mkdir myapp && cd myapp

Kör kommandot npm init för att skapa ett nodprogram med en package.json fil.

npm init

Skapa en fil med index.js namnet och importera följande bibliotek:

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

Skapa variabler för resursens Azure-slutpunkt och nyckel. Om du skapade miljövariabeln när du startade programmet måste du stänga och öppna redigeraren, IDE:t eller gränssnittet som kör det igen för att få åtkomst till variabeln. Skapa en annan variabel för exempeldatafilen som du ska ladda ned i ett senare steg och en tom lista för datapunkterna. Skapa sedan ett ApiKeyCredentials -objekt som ska innehålla nyckeln.

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

Installera klientbiblioteket

Installera ms-rest-azure azure-cognitiveservices-anomalydetector NPM-paketen och . Csv-parse-biblioteket används också i den här snabbstarten:

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

Appens package.json fil uppdateras med beroendena.

Objektmodell

Klienten Avvikelseidentifiering ett AnomalyDetectorClient-objekt som autentiserar till Azure med hjälp av din nyckel. Klienten kan göra avvikelseidentifiering på en hel datauppsättning med hjälp av entireDetect()eller på den senaste datapunkten med lastDetect(). Metoden ChangePointDetectAsync identifierar punkter som markerar ändringar i en trend.

Tidsseriedata skickas som en serie punkter i ett begärandeobjekt. Objektet Request innehåller egenskaper för att beskriva data (kornighet till exempel) och parametrar för avvikelseidentifiering.

Svaret Avvikelseidentifiering lastDetectResponse, EntireDetectResponseeller ChangePointDetectResponse beroende på vilken metod som används.

Kodexempel

De här kodfragmenten visar hur du gör följande med Avvikelseidentifiering klientbibliotek för Node.js:

Autentisera klienten

Instansiera ett AnomalyDetectorClient-objekt med din slutpunkt och dina autentiseringsuppgifter.

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

Läsa in tidsseriedata från en fil

Ladda ned exempeldata för den här snabbstarten från GitHub:

  1. Högerklicka på Raw i webbläsaren.
  2. Klicka på Spara länk som.
  3. Spara filen i programkatalogen som en .csv fil.

Den här tidsseriedata formateras som en .csv-fil och skickas till Avvikelseidentifiering-API:et.

Läs datafilen med csv-parse-bibliotekets readFileSync() -metod och parsa filen med parse() . För varje rad push-push-kodar du ett Point-objekt som innehåller tidsstämpeln och det numeriska värdet.

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

Identifiera avvikelser i hela datauppsättningen

Anropa API:et för att identifiera avvikelser genom hela tidsserien som en batch med klientens entireDetect()-metod. Lagra det returnerade Objektet EntireDetectResponse. Iterera genom svarets isAnomaly lista och skriv ut indexet för alla true värden. Dessa värden motsvarar indexet för avvikande datapunkter, om några hittades.

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

Identifiera avvikelsestatus för den senaste datapunkten

Anropa Avvikelseidentifiering API för att avgöra om din senaste datapunkt är en avvikelse med hjälp av klientens lastDetect()-metod och lagra det returnerade LastDetectResponse-objektet. Svarets värde isAnomaly är ett booleskt värde som anger den punktens avvikelsestatus.

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

Identifiera ändringspunkter i datauppsättningen

Anropa API:et för att identifiera ändringspunkter i tidsserien med klientens detectChangePoint()-metod. Lagra det returnerade ChangePointDetectResponse-objektet. Iterera genom svarets isChangePoint lista och skriv ut indexet för alla true värden. Dessa värden motsvarar indexen för trendändringspunkter, om några hittades.

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

Kör programmet

Kör programmet med kommandot node i snabbstartsfilen.

node index.js

Rensa resurser

Om du vill rensa och ta bort en Cognitive Services prenumeration kan du ta bort resursen eller resurs gruppen. Om du tar bort resurs gruppen raderas även andra resurser som är associerade med resurs gruppen.

Nästa steg

Koncept:

Självstudier:

Kom igång med Avvikelseidentifiering klientbibliotek för Python. Följ de här stegen för att installera paketet och börja använda de algoritmer som tillhandahålls av tjänsten. Med Avvikelseidentifiering-tjänsten kan du hitta avvikelser i dina tidsseriedata genom att automatiskt använda de bästa modellerna på dem, oavsett bransch, scenario eller datavolym.

Använd Avvikelseidentifiering klientbibliotek för Python för att:

  • Identifiera avvikelser i hela din tidsseriedatauppsättning som en batchbegäran
  • Identifiera avvikelsestatusen för den senaste datapunkten i tidsserien
  • Identifiera trendändringspunkter i datauppsättningen.

Dokumentation om biblioteksreferens | Bibliotekskällkod | Paket (PyPi) | Hitta exempelkoden på GitHub

Förutsättningar

  • Python 3.x
  • Pandas-dataanalysbiblioteket
  • Azure-prenumeration – Skapa en kostnadsfritt
  • När du har din Azure-prenumeration skapar Avvikelseidentifiering en Avvikelseidentifiering resurs i Azure Portal för att slutpunkt. Vänta tills den har distribuerats och klicka på knappen Gå till resurs.
    • Du behöver nyckeln och slutpunkten från den resurs som du skapar för att ansluta ditt program till Avvikelseidentifiering-API:et. Du klistrar in nyckeln och slutpunkten i koden nedan senare i snabbstarten. Du kan använda den kostnadsfria prisnivån ( F0 ) för att prova tjänsten och senare uppgradera till en betald nivå för produktion.

Inrätta

Skapa en miljö variabel

Anteckning

Slut punkterna för icke-testresurser som skapats efter den 1 juli 2019 använder det anpassade under domän formatet som visas nedan. Mer information och en fullständig lista över regionala slut punkter finns i anpassade under domän namn för Cognitive Services.

Med din nyckel och slut punkt från den resurs som du har skapat skapar du två miljövariabler för autentisering:

  • ANOMALY_DETECTOR_KEY – Resurs nyckeln för autentisering av dina begär Anden.
  • ANOMALY_DETECTOR_ENDPOINT – Resurs slut punkten för att skicka API-begäranden. Resultatet ser ut så här:
    • https://<your-custom-subdomain>.api.cognitive.microsoft.com

Följ anvisningarna för ditt operativ system.

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

Starta om konsol fönstret när du har lagt till miljövariabeln.

Skapa ett nytt Python-program

Skapa en ny Python-fil och importera följande bibliotek.

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

Skapa variabler för din nyckel som en miljövariabel, sökvägen till en tidsseriedatafil och Azure-platsen för din prenumeration. Till exempel 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")

Installera klientbiblioteket

När du har installerat Python kan du installera klientbiblioteket med:

pip install --upgrade azure-ai-anomalydetector

Objektmodell

Klienten Avvikelseidentifiering ett AnomalyDetectorClient-objekt som autentiserar till Azure med hjälp av din nyckel. Klienten kan göra avvikelseidentifiering av en hel datauppsättning med hjälp detect_entire_series, eller på den senaste datapunkten med hjälp av detect_last_point. Funktionen detect_change_point identifierar punkter som markerar ändringar i en trend.

Tidsseriedata skickas som en serie TimeSeriesPoints-objekt. -objektet DetectRequest innehåller egenskaper som beskriver data till exempel och parametrar för TimeGranularity avvikelseidentifiering.

Svaret Avvikelseidentifiering lastDetectResponse, EntireDetectResponseeller ChangePointDetectResponse beroende på vilken metod som används.

Kodexempel

De här kodfragmenten visar hur du gör följande med Avvikelseidentifiering klientbibliotek för Python:

Autentisera klienten

Lägg till azure-platsvariabeln till slutpunkten och autentisera klienten med din nyckel.

client = AnomalyDetectorClient(AzureKeyCredential(SUBSCRIPTION_KEY), ANOMALY_DETECTOR_ENDPOINT)

Läsa in tidsseriedata från en fil

Ladda ned exempeldata för den här snabbstarten från GitHub:

  1. Högerklicka på Raw i webbläsaren.
  2. Klicka på Spara länk som.
  3. Spara filen i programkatalogen som en .csv fil.

Den här tidsseriedata formateras som en .csv-fil och skickas till Avvikelseidentifiering-API:et.

Läs in datafilen med Pandas-bibliotekets read_csv() -metod och skapa en tom listvariabel för att lagra dataserien. Iterera genom filen och lägg till data som ett TimeSeriesPoint -objekt. Det här objektet innehåller tidsstämpeln och det numeriska värdet från raderna i .csv datafilen.

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

Skapa ett DetectRequest -objekt med din tidsserie och TimeGranularity (eller periodiciteten) för dess datapunkter. Till exempel TimeGranularity.daily.

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

Beskrivning av indataargument: "series": krävs i begäran. måste vara matris-/listtyp och ha fler än 12 punkter och högst 8 640 punkter. måste sorteras efter tidsstämpel i stigande ordning och får inte ha en duplicerad tidsstämpel. "granularitet": krävs i begäran. kan bara vara något av följande: ['daily', 'minutely', 'hourly', 'weekly', 'monthly', 'yearly', 'secondly']. "customInterval": måste vara ett heltal > 0. "period": måste vara ett heltal >= 0. "maxAnomalyRatio": måste vara mindre än 50 % av seriepunkterna (0 < maxAnomalyRatio < 0,5). "känslighet": måste vara ett heltal mellan 0 och 99.

Identifiera avvikelser i hela datauppsättningen

Anropa API:et för att identifiera avvikelser genom hela tidsseriedata med hjälp av klientens detect_entire_series -metod. Lagra det returnerade Objektet EntireDetectResponse. Iterera genom svarets is_anomaly lista och skriv ut indexet för alla true värden. Dessa värden motsvarar indexet för avvikande datapunkter, om några hittades.

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

Identifiera avvikelsestatus för den senaste datapunkten

Anropa Avvikelseidentifiering API för att avgöra om din senaste datapunkt är en avvikelse med hjälp av klientens detect_last_point -metod och lagra det returnerade LastDetectResponse objektet. Svarets värde is_anomaly är ett booleskt värde som anger den punktens avvikelsestatus.

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

Identifiera ändringspunkter i datauppsättningen

Anropa API:et för att identifiera ändringspunkter i tidsseriedata med hjälp av klientens detect_change_point -metod. Lagra det returnerade ChangePointDetectResponse objektet. Iterera genom svarets is_change_point lista och skriv ut indexet för alla true värden. Dessa värden motsvarar indexen för trendändringspunkter, om några hittades.

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

Kör programmet

Kör programmet med python kommandot och filnamnet.

Rensa resurser

Om du vill rensa och ta bort en Cognitive Services prenumeration kan du ta bort resursen eller resurs gruppen. Om du tar bort resurs gruppen raderas även andra resurser som är associerade med resurs gruppen.

Nästa steg

Koncept:

Självstudier:

I den här snabb starten får du lära dig att identifiera avvikelser i en batch med Time Series-data med hjälp av tjänsten avvikelse detektor och sväng.

En övergripande titt på begrepp för avvikelse detektor finns i översikts artikeln.

Förutsättningar

  • Azure-prenumeration – skapa en kostnads fritt
  • När du har en Azure-prenumeration skapa en avvikelse i den Azure Portal för att hämta nyckel och slut punkt. Vänta tills den har distribuerats och välj knappen gå till resurs .
    • Du behöver nyckel-och slut punkts adress från den resurs som du skapar för att använda REST API. Du kan använda den kostnads fria pris nivån ( F0 ) för att testa tjänsten och senare uppgradera till en betald nivå för produktion.

Identifiera avvikelser för en hel serie

Kör följande kommando i en kommando tolk. Du måste infoga följande värden i kommandot.

  • Prenumerations nyckeln för avvikelse detektor tjänsten.
  • Slut punkts adress för avvikelse detektor.
  • En giltig JSON-fil med Time Series-data för att testa avvikelser. Om du inte har en egen fil kan du skapa en sample.jspå en fil från exemplet på begär ande texten.
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}" 

Ett exempel med alla värden som är ifyllda:

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"

Om du använde exempel data från krav, bör du få svar 200 med följande resultat:

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

Mer information finns i REST- referens för avvikelse identifiering.

Rensa resurser

Om du vill rensa och ta bort en Cognitive Services prenumeration kan du ta bort resursen eller resurs gruppen. Om du tar bort resurs gruppen raderas även andra resurser som är associerade med resurs gruppen.

Nästa steg

Koncept:

Självstudier: