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
F0na placenou úroveň pro produkční prostředí.
- 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
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
- Načtení datové sady časových řad ze souboru
- Detekce anomálií v celé datové sadě
- Zjištění stavu anomálií nejnovějšího datového bodu
- Zjištění bodů změny v datové sadě
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:
- V prohlížeči klikněte pravým tlačítkem na Raw.
- Klikněte na Uložit odkaz jako.
- 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:
- Co je rozhraní API Detektoru anomálií?
- Metody detekce anomálií
- Osvědčené postupy při použití rozhraní API detektoru anomálií
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
F0na placenou úroveň pro produkční prostředí.
- 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
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
- Načtení datové sady časových řad ze souboru
- Detekce anomálií v celé datové sadě
- Zjištění stavu anomálií nejnovějšího datového bodu
- Zjištění bodů změny v datové sadě
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:
- V prohlížeči klikněte pravým tlačítkem na Raw.
- Klikněte na Uložit odkaz jako.
- 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:
- Co je rozhraní API Detektoru anomálií?
- Metody detekce anomálií
- Osvědčené postupy při použití rozhraní API detektoru anomálií
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í.
- 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ň (
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
- Načtení datové sady časových řad ze souboru
- Detekovat anomálie v celé sadě dat
- Zjistit stav anomálií nejnovějšího datového bodu
- Zjistit body změny v sadě dat
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:
- V prohlížeči klikněte pravým tlačítkem na raw.
- Klikněte na Uložit odkaz jako.
- 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:
- Co je rozhraní API Detektoru anomálií?
- Metody detekce anomálií
- Osvědčené postupy při použití rozhraní API detektoru anomálií
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í.
- 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ň (
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:
- Co je rozhraní API Detektoru anomálií?
- Metody detekce anomálií
- Osvědčené postupy při použití rozhraní API detektoru anomálií
Kurzy: