Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ważne
Od 20 września 2023 r. nie będzie można tworzyć nowych zasobów usługi Anomaly Detector. Usługa narzędzia do wykrywania anomalii jest wycofywana 1 października 2026 r. Zalecamy migrację do Microsoft Fabric, który integruje projekt open-source microsoft/anomaly-detector, lub bezpośrednio do projektu open-source narzędzia do wykrywania anomalii.
dokumentacja referencyjna Biblioteka |Kod źródłowy biblioteki | Pakiet (NuGet) |Znajdź przykładowy kod na GitHub
Rozpocznij pracę z biblioteką klienta Narzędzie do wykrywania anomalii dla języka C#. Wykonaj następujące kroki, aby zainstalować pakiet za pomocą algorytmów dostarczonych przez usługę. Usługa Narzędzie do wykrywania anomalii umożliwia automatyczne znajdowanie nieprawidłowości w danych szeregów czasowych przy użyciu najlepiej dopasowanych modeli, niezależnie od branży, scenariusza lub ilości danych.
Użyj biblioteki klienta Anomaly Detector w języku C#, aby:
- Wykryj anomalie w zestawie danych szeregów czasowych w formie żądania wsadowego
- Wykrywanie stanu anomalii najnowszego punktu danych w szeregach czasowych
- Wykrywanie punktów zmian trendu w zestawie danych.
Wymagania wstępne
- Subskrypcja Azure — Utwórz ją bezpłatnie
- Bieżąca wersja .NET Core
- Po utworzeniu subskrypcji Azure utwórz zasób narzędzia do wykrywania anomalii w portalu Azure, aby uzyskać klucz i punkt końcowy. Poczekaj na wdrożenie i wybierz przycisk Przejdź do zasobu . Możesz użyć warstwy cenowej bezpłatna (
F0), aby wypróbować usługę, a następnie uaktualnić ją do warstwy płatnej dla środowiska produkcyjnego.
Konfiguruj
Tworzenie nowej aplikacji .NET Core
W oknie konsoli (takim jak cmd, PowerShell lub Bash) użyj dotnet new polecenia , aby utworzyć nową aplikację konsolową o nazwie anomaly-detector-quickstart. To polecenie tworzy prosty projekt "Hello world" z pojedynczym plikiem źródłowym języka C#: Program.cs.
dotnet new console -n anomaly-detector-quickstart
Zmień katalog na nowo utworzony folder aplikacji. Aplikację można skompilować za pomocą następujących funkcji:
dotnet build
Dane wyjściowe kompilacji nie powinny zawierać żadnych ostrzeżeń ani błędów.
...
Build succeeded.
0 Warning(s)
0 Error(s)
...
Instalowanie biblioteki klienta
W katalogu aplikacji zainstaluj bibliotekę klienta narzędzia do wykrywania anomalii dla .NET za pomocą następującego polecenia:
dotnet add package Azure.AI.AnomalyDetector --prerelease
Pobierz klucz i punkt końcowy
Aby pomyślnie wykonać wywołanie do usługi Detektor anomalii, potrzebne są następujące wartości:
| Nazwa zmiennej | Wartość |
|---|---|
ANOMALY_DETECTOR_ENDPOINT |
Tę wartość można znaleźć w Klucze i punkt końcowy podczas przeglądania zasobu w portalu Azure. Przykładowy punkt końcowy: https://YOUR_RESOURCE_NAME.cognitiveservices.azure.com/ |
ANOMALY_DETECTOR_API_KEY |
Wartość klucza API można znaleźć w KEY1 lub KEY2. |
DATA_PATH |
Ten szybki przewodnik wykorzystuje plik request-data.csv, który można pobrać z naszych danych przykładowych na GitHubie. Przykładowa ścieżka: c:\\test\\request-data.csv |
Przejdź do zasobu w portalu Azure. Punkt końcowy i klucze można znaleźć w sekcji Zarządzanie zasobami. Skopiuj punkt końcowy i klucz dostępu, ponieważ będziesz potrzebować obu do uwierzytelniania wywołań interfejsu API. Możesz użyć wartości KEY1 lub KEY2. Zawsze posiadanie dwóch kluczy umożliwia bezpieczne obracanie i ponowne generowanie kluczy bez powodowania zakłóceń usługi.
Tworzenie zmiennych środowiskowych
Tworzenie i przypisywanie trwałych zmiennych środowiskowych dla klucza i punktu końcowego.
Ważne
Zalecamy uwierzytelnianie Microsoft Entra ID przy użyciu zarządzanych tożsamości Azure, aby można było uniknąć przechowywania poświadczeń z aplikacjami uruchomionymi w chmurze.
Używaj kluczy interfejsu API z ostrożnością. Nie dołączaj klucza interfejsu API bezpośrednio do kodu i nigdy nie publikuj go publicznie. Jeśli używasz kluczy interfejsu API, przechowuj je bezpiecznie w Azure Key Vault, regularnie obracaj klucze i ograniczaj dostęp do Azure Key Vault przy użyciu kontroli dostępu opartej na rolach i ograniczeń dostępu do sieci. Aby uzyskać więcej informacji na temat bezpiecznego używania kluczy interfejsu API w aplikacjach, zobacz
Aby uzyskać więcej informacji na temat zabezpieczeń usług sztucznej inteligencji, zobacz Uwierzytelnianie żądań do usług Azure AI.
setx ANOMALY_DETECTOR_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx ANOMALY_DETECTOR_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"
Pobierz przykładowe dane
Ten przewodnik szybki start używa pliku request-data.csv, który można pobrać z naszych przykładowych danych GitHub.
Możesz również pobrać przykładowe dane, uruchamiając:
curl "https://raw.githubusercontent.com/Azure/azure-sdk-for-python/main/sdk/anomalydetector/azure-ai-anomalydetector/samples/sample_data/request-data.csv" --output request-data.csv
Wykrywanie anomalii
W katalogu projektu otwórz plik program.cs i zastąp ciąg następującym kodem:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using Azure;
using Azure.AI.AnomalyDetector;
using static System.Environment;
namespace anomaly_detector_quickstart
{
internal class Program
{
static void Main(string[] args)
{
string endpoint = GetEnvironmentVariable("ANOMALY_DETECTOR_ENDPOINT");
string apiKey = GetEnvironmentVariable("ANOMALY_DETECTOR_API_KEY");
var endpointUri = new Uri(endpoint);
var credential = new AzureKeyCredential(apiKey);
//create client
AnomalyDetectorClient client = new AnomalyDetectorClient(endpointUri, credential);
//read data
//example: string datapath = @"c:\test\request-data.csv";
string datapath = @"REPLACE_WITH_YOUR_LOCAL_SAMPLE_REQUEST_DATA_PATH";
List<TimeSeriesPoint> list = File.ReadAllLines(datapath, Encoding.UTF8)
.Where(e => e.Trim().Length != 0)
.Select(e => e.Split(','))
.Where(e => e.Length == 2)
.Select(e => new TimeSeriesPoint(float.Parse(e[1])) { Timestamp = DateTime.Parse(e[0]) }).ToList();
//create request
UnivariateDetectionOptions request = new UnivariateDetectionOptions(list)
{
Granularity = TimeGranularity.Daily
};
UnivariateEntireDetectionResult result = client.DetectUnivariateEntireSeries(request);
bool hasAnomaly = false;
for (int i = 0; i < request.Series.Count; ++i)
{
if (result.IsAnomaly[i])
{
Console.WriteLine("Anomaly detected at index: {0}.", i);
hasAnomaly = true;
}
}
if (!hasAnomaly)
{
Console.WriteLine("No anomalies detected in the series.");
}
}
}
}
Uruchom aplikację za pomocą następującego polecenia:
dotnet run program.cs
Wyjście
Anomaly detected at index: 3
Anomaly detected at index: 18
Anomaly detected at index: 21
Anomaly detected at index: 22
Anomaly detected at index: 23
Anomaly detected at index: 24
Anomaly detected at index: 25
Anomaly detected at index: 28
Anomaly detected at index: 29
Anomaly detected at index: 30
Anomaly detected at index: 31
Anomaly detected at index: 32
Anomaly detected at index: 35
Anomaly detected at index: 44
Szczegóły kodu
Zrozumienie wyników
W powyższym kodzie przykładowe dane są odczytywane i konwertowane na DetectRequest obiekt. Wywołujemy File.ReadAllLines ze ścieżką pliku, tworzymy listę obiektów TimeSeriesPoint i usuwamy znaki nowej linii. Wyodrębnij wartości i oddziel znacznik czasu od jego wartości liczbowej i dodaj je do nowego TimeSeriesPoint obiektu. Obiekt DetectRequest składa się z serii punktów danych z TimeGranularity.Daily dokładnością (lub okresowością) punktów danych.
Następnie wywołujemy metodę klienta DetectEntireSeriesAsync z obiektem DetectRequest i oczekujemy odpowiedzi w postaci obiektu EntireDetectResponse. Następnie iterujemy wartości odpowiedzi IsAnomaly i wyświetlamy wszystkie wartości, które są prawdziwe. Te wartości odpowiadają indeksowi nietypowych punktów danych, jeśli zostały znalezione.
Czyszczenie zasobów
Jeśli chcesz wyczyścić i usunąć zasób Narzędzie do wykrywania anomalii, możesz usunąć zasób lub grupę zasobów. Usunięcie grupy zasobów powoduje również usunięcie wszelkich innych skojarzonych z nią zasobów. Możesz również rozważyć usunięcie utworzonych zmiennych środowiskowych, jeśli nie zamierzasz już ich używać.
dokumentacja referencyjna biblioteki |Kod źródłowy biblioteki | Pakiet (npm) |Znajdź przykładowy kod na GitHub
Rozpoczęcie pracy z biblioteką klienta Anomaly Detector dla JavaScript. Wykonaj następujące kroki, aby zainstalować pakiet i rozpocząć korzystanie z algorytmów dostarczonych przez usługę. Usługa Narzędzie do wykrywania anomalii umożliwia automatyczne znajdowanie nieprawidłowości w danych szeregów czasowych przy użyciu najlepiej dopasowanego modelu, niezależnie od branży, scenariusza lub ilości danych.
Użyj biblioteki klienta Anomaly Detector w języku JavaScript, aby:
- Wykryj anomalie w zestawie danych szeregów czasowych w formie żądania wsadowego
- Wykrywanie stanu anomalii najnowszego punktu danych w szeregach czasowych
- Wykrywanie punktów zmian trendu w zestawie danych.
Wymagania wstępne
- Subskrypcja Azure — Utwórz ją bezpłatnie
- Bieżąca wersja Node.js
- Po utworzeniu subskrypcji Azure utwórz zasób narzędzia do wykrywania anomalii w portalu Azure, aby uzyskać klucz i punkt końcowy. Poczekaj na wdrożenie i wybierz przycisk Przejdź do zasobu . Możesz użyć warstwy cenowej bezpłatna (
F0), aby wypróbować usługę, a następnie uaktualnić ją do warstwy płatnej dla środowiska produkcyjnego.
Konfiguruj
Tworzenie nowej aplikacji Node.js
W oknie konsoli (na przykład cmd, PowerShell lub Bash) utwórz nowy katalog dla aplikacji i przejdź do niego.
mkdir myapp && cd myapp
package.json Utwórz plik z następującą zawartością:
{
"dependencies": {
"@azure/ai-anomaly-detector": "next",
"@azure-rest/ai-anomaly-detector": "next",
"@azure/core-auth": "^1.3.0",
"csv-parse": "^5.3.0"
}
}
Instalowanie biblioteki klienta
Zainstaluj wymagane pakiety npm, uruchamiając następujące polecenie z tego samego katalogu co plik package.json:
npm install
Pobierz klucz i punkt końcowy
Aby pomyślnie wykonać wywołanie do usługi Detektor anomalii, potrzebne są następujące wartości:
| Nazwa zmiennej | Wartość |
|---|---|
ANOMALY_DETECTOR_ENDPOINT |
Tę wartość można znaleźć w Klucze i punkt końcowy podczas przeglądania zasobu w portalu Azure. Przykładowy punkt końcowy: https://YOUR_RESOURCE_NAME.cognitiveservices.azure.com/ |
ANOMALY_DETECTOR_API_KEY |
Wartość klucza API można znaleźć w KEY1 lub KEY2. |
datapath |
Ten szybki przewodnik wykorzystuje plik request-data.csv, który można pobrać z naszych danych przykładowych na GitHubie. |
Przejdź do zasobu w portalu Azure. Punkt końcowy i klucze można znaleźć w sekcji Zarządzanie zasobami. Skopiuj punkt końcowy i klucz dostępu, ponieważ będziesz potrzebować obu do uwierzytelniania wywołań interfejsu API. Możesz użyć wartości KEY1 lub KEY2. Zawsze posiadanie dwóch kluczy umożliwia bezpieczne obracanie i ponowne generowanie kluczy bez powodowania zakłóceń usługi.
Tworzenie zmiennych środowiskowych
Tworzenie i przypisywanie trwałych zmiennych środowiskowych dla klucza i punktu końcowego.
Ważne
Zalecamy uwierzytelnianie Microsoft Entra ID przy użyciu zarządzanych tożsamości Azure, aby można było uniknąć przechowywania poświadczeń z aplikacjami uruchomionymi w chmurze.
Używaj kluczy interfejsu API z ostrożnością. Nie dołączaj klucza interfejsu API bezpośrednio do kodu i nigdy nie publikuj go publicznie. Jeśli używasz kluczy interfejsu API, przechowuj je bezpiecznie w Azure Key Vault, regularnie obracaj klucze i ograniczaj dostęp do Azure Key Vault przy użyciu kontroli dostępu opartej na rolach i ograniczeń dostępu do sieci. Aby uzyskać więcej informacji na temat bezpiecznego używania kluczy interfejsu API w aplikacjach, zobacz
Aby uzyskać więcej informacji na temat zabezpieczeń usług sztucznej inteligencji, zobacz Uwierzytelnianie żądań do usług Azure AI.
setx ANOMALY_DETECTOR_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx ANOMALY_DETECTOR_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"
Pobierz przykładowe dane
Ten przewodnik szybki start używa pliku request-data.csv, który można pobrać z naszych przykładowych danych GitHub.
Możesz również pobrać przykładowe dane, uruchamiając:
curl "https://raw.githubusercontent.com/Azure/azure-sdk-for-python/main/sdk/anomalydetector/azure-ai-anomalydetector/samples/sample_data/request-data.csv" --output request-data.csv
Wykrywanie anomalii
Utwórz plik o nazwie index.js i zastąp element następującym kodem:
const AnomalyDetector = require("@azure-rest/ai-anomaly-detector").default,
{ isUnexpected } = require("@azure-rest/ai-anomaly-detector");
const { AzureKeyCredential } = require("@azure/core-auth");
const { parse } = require("csv-parse/sync");
const fs = require("fs");
// Retrieve the endpoint and key from the environment variables.
const apiKey = process.env["ANOMALY_DETECTOR_API_KEY"] || "";
const endpoint = process.env["ANOMALY_DETECTOR_ENDPOINT"] || "";
const timeSeriesDataPath = "./request-data.csv";
function read_series_from_file(path) {
let result = Array();
let input = fs.readFileSync(path).toString();
let parsed = parse(input, { skip_empty_lines: true });
parsed.forEach(function (e) {
result.push({ timestamp: new Date(e[0]), value: Number(e[1]) });
});
return result;
}
async function main() {
// create client
const credential = new AzureKeyCredential(apiKey);
const client = AnomalyDetector(endpoint, credential);
// construct request
const options = {
body: {
granularity: "daily",
imputeMode: "auto",
maxAnomalyRatio: 0.25,
sensitivity: 95,
series: read_series_from_file(timeSeriesDataPath),
},
headers: { "Content-Type": "application/json" },
};
// get last detect result
const result = await client.path("/timeseries/entire/detect").post(options);
if (isUnexpected(result)) {
throw result;
}
if (result.body.isAnomaly) {
result.body.isAnomaly.forEach(function (anomaly, index) {
if (anomaly === true) {
console.log(index);
}
});
} else {
console.log("There is no anomaly detected from the series.");
}
}
main().catch((err) => {
console.error("The sample encountered an error:", err);
});
module.exports = { main };
Uruchamianie aplikacji
Uruchom aplikację, wykonując polecenie node dla pliku szybkiego startu.
node index.js
Wyjście
Anomalies were detected from the series at index:
3
18
21
22
23
24
25
28
29
30
31
32
35
44
Zrozumienie wyników
W powyższym kodzie używamy API Anomaly Detector, aby wykryć anomalie w całym szeregu czasowym w trybie wsadowym za pomocą metody client.detectEntireSeries(). Przechowujemy zwrócony obiekt AnomalyDetectorDetectEntireSeriesResponse. Następnie przechodzimy przez listę odpowiedzi isAnomaly i wyświetlamy indeks dowolnych true wartości. Te wartości odpowiadają indeksowi nietypowych punktów danych, jeśli zostały znalezione.
Czyszczenie zasobów
Jeśli chcesz wyczyścić i usunąć zasób Narzędzie do wykrywania anomalii, możesz usunąć zasób lub grupę zasobów. Usunięcie grupy zasobów powoduje również usunięcie wszelkich innych skojarzonych z nią zasobów. Możesz również rozważyć usunięcie utworzonych zmiennych środowiskowych, jeśli nie zamierzasz już ich używać.
dokumentacja referencyjna biblioteki | | |
Rozpocznij pracę z biblioteką klienta narzędzia do wykrywania anomalii dla Python. Wykonaj następujące kroki, aby zainstalować pakiet i rozpocząć korzystanie z algorytmów udostępnianych przez usługę. Usługa Narzędzie do wykrywania anomalii umożliwia automatyczne znajdowanie nieprawidłowości w danych szeregów czasowych przy użyciu najlepiej dopasowanych modeli, niezależnie od branży, scenariusza lub ilości danych.
Użyj biblioteki klienta Anomaly Detector w Pythonie, aby:
- Wykryj anomalie w zestawie danych szeregów czasowych w formie żądania wsadowego
- Wykrywanie stanu anomalii najnowszego punktu danych w szeregach czasowych
- Wykrywanie punktów zmian trendu w zestawie danych.
Wymagania wstępne
- Subskrypcja Azure — Utwórz ją bezpłatnie
- Python 3.x
- Biblioteka analizy danych Pandas
- Po utworzeniu subskrypcji Azure utwórz zasób narzędzia do wykrywania anomalii w portalu Azure, aby uzyskać klucz i punkt końcowy. Poczekaj na wdrożenie i wybierz przycisk Przejdź do zasobu . Możesz użyć warstwy cenowej bezpłatna (
F0), aby wypróbować usługę, a następnie uaktualnić ją do warstwy płatnej dla środowiska produkcyjnego.
Konfiguruj
Zainstaluj bibliotekę klienta. Bibliotekę klienta można zainstalować za pomocą następujących funkcji:
pip install --upgrade azure.ai.anomalydetector
Pobierz klucz i punkt końcowy
Aby pomyślnie wykonać wywołanie do usługi Detektor anomalii, potrzebne są następujące wartości:
| Nazwa zmiennej | Wartość |
|---|---|
ANOMALY_DETECTOR_ENDPOINT |
Tę wartość można znaleźć w Klucze i punkt końcowy podczas przeglądania zasobu w portalu Azure. Przykładowy punkt końcowy: https://YOUR_RESOURCE_NAME.cognitiveservices.azure.com/ |
ANOMALY_DETECTOR_API_KEY |
Wartość klucza API można znaleźć w KEY1 lub KEY2. |
DATA_PATH |
Ten szybki przewodnik wykorzystuje plik request-data.csv, który można pobrać z naszych danych przykładowych na GitHubie. Przykładowa ścieżka: c:\\test\\request-data.csv |
Przejdź do zasobu w portalu Azure. Punkt końcowy i klucze można znaleźć w sekcji Zarządzanie zasobami. Skopiuj punkt końcowy i klucz dostępu, ponieważ będziesz potrzebować obu do uwierzytelniania wywołań interfejsu API. Możesz użyć wartości KEY1 lub KEY2. Zawsze posiadanie dwóch kluczy umożliwia bezpieczne obracanie i ponowne generowanie kluczy bez powodowania zakłóceń usługi.
Tworzenie zmiennych środowiskowych
Tworzenie i przypisywanie trwałych zmiennych środowiskowych dla klucza i punktu końcowego.
Ważne
Zalecamy uwierzytelnianie Microsoft Entra ID przy użyciu zarządzanych tożsamości Azure, aby można było uniknąć przechowywania poświadczeń z aplikacjami uruchomionymi w chmurze.
Używaj kluczy interfejsu API z ostrożnością. Nie dołączaj klucza interfejsu API bezpośrednio do kodu i nigdy nie publikuj go publicznie. Jeśli używasz kluczy interfejsu API, przechowuj je bezpiecznie w Azure Key Vault, regularnie obracaj klucze i ograniczaj dostęp do Azure Key Vault przy użyciu kontroli dostępu opartej na rolach i ograniczeń dostępu do sieci. Aby uzyskać więcej informacji na temat bezpiecznego używania kluczy interfejsu API w aplikacjach, zobacz
Aby uzyskać więcej informacji na temat zabezpieczeń usług sztucznej inteligencji, zobacz Uwierzytelnianie żądań do usług Azure AI.
setx ANOMALY_DETECTOR_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx ANOMALY_DETECTOR_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"
Pobierz przykładowe dane
Ten przewodnik szybki start używa pliku request-data.csv, który można pobrać z naszych przykładowych danych GitHub.
Możesz również pobrać przykładowe dane, uruchamiając:
curl "https://raw.githubusercontent.com/Azure/azure-sdk-for-python/main/sdk/anomalydetector/azure-ai-anomalydetector/samples/sample_data/request-data.csv" --output request-data.csv
Wykrywanie anomalii
Utwórz nowy plik Python o nazwie quickstart.py. Następnie otwórz go w preferowanym edytorze lub środowisku IDE.
Zastąp zawartość quickstart.py następującym kodem. Zmodyfikuj kod, aby dodać nazwy zmiennych środowiskowych dla klucza, punktu końcowego i ścieżki danych szeregów czasowych:
from azure.ai.anomalydetector import AnomalyDetectorClient from azure.ai.anomalydetector.models import * from azure.core.credentials import AzureKeyCredential import pandas as pd import os API_KEY = os.environ['ANOMALY_DETECTOR_API_KEY'] ENDPOINT = os.environ['ANOMALY_DETECTOR_ENDPOINT'] DATA_PATH = "REPLACE_WITH_YOUR_LOCAL_SAMPLE_REQUEST_DATA_PATH" #example: c:\\test\\request-data.csv client = AnomalyDetectorClient(ENDPOINT, AzureKeyCredential(API_KEY)) series = [] data_file = pd.read_csv(DATA_PATH, header=None, encoding='utf-8', date_parser=[0]) for index, row in data_file.iterrows(): series.append(TimeSeriesPoint(timestamp=row[0], value=row[1])) request = UnivariateDetectionOptions(series=series, granularity=TimeGranularity.DAILY) change_point_response = client.detect_univariate_change_point(request) anomaly_response = client.detect_univariate_entire_series(request) for i in range(len(data_file.values)): if (change_point_response.is_change_point[i]): print("Change point detected at index: "+ str(i)) elif (anomaly_response.is_anomaly[i]): print("Anomaly detected at index: "+ str(i))Ważne
W środowisku produkcyjnym użyj bezpiecznego sposobu przechowywania i uzyskiwania dostępu do poświadczeń, takich jak Azure Key Vault. Aby uzyskać więcej informacji na temat zabezpieczeń poświadczeń, zobacz artykuł Azure AI services security .
Uruchom aplikację poleceniem
pythonw pliku szybki startpython quickstart.py
Wyjście
Anomaly detected at index: 3
Anomaly detected at index: 18
Change point detected at index: 20
Anomaly detected at index: 21
Anomaly detected at index: 22
Anomaly detected at index: 23
Anomaly detected at index: 24
Anomaly detected at index: 25
Change point detected at index: 27
Anomaly detected at index: 28
Anomaly detected at index: 29
Anomaly detected at index: 30
Anomaly detected at index: 31
Anomaly detected at index: 32
Anomaly detected at index: 35
Anomaly detected at index: 44
Zrozumienie wyników
W powyższym kodzie wywołujemy Anomaly Detector API dwa razy. Pierwsze wywołanie sprawdza punkty zmian trendu w naszej przykładowej serii danych za pomocą metody detect_change_point. To wywołanie zwraca ChangePointDetectResponse, które przechowaliśmy w zmiennej nazwanej change_point_request. Następnie iterujemy przez listę odpowiedzi is_change_point i wyświetlamy indeks wszystkich wartości z wartością logiczną true.
Drugie wywołanie sprawdza całą przykładową serię danych pod kątem anomaliów przy użyciu metody detect_entire_series. To wywołanie zwraca EntireDetectResponse, które przechowaliśmy w zmiennej nazwanej anomaly_response. Iterujemy przez listę odpowiedzi is_anomaly i wyświetlamy indeks wszystkich wartości z wartością logiczną true. Alternatywnie można użyć detect_last_point metody , która jest bardziej odpowiednia do wykrywania anomalii w danych w czasie rzeczywistym. Aby dowiedzieć się więcej, zapoznaj się z przewodnikiem najlepszych rozwiązań.
Wizualizowanie wyników
Aby zwizualizować anomalie i punkty zmian w odniesieniu do przykładowej serii danych, użyjemy popularnej biblioteki open source matplotlib.
Zainstaluj bibliotekę.
pip install matplotlibZmodyfikuj plik quickstart.py przy użyciu następującego kodu:
from azure.ai.anomalydetector import AnomalyDetectorClient from azure.ai.anomalydetector.models import * from azure.core.credentials import AzureKeyCredential import pandas as pd import matplotlib.pyplot as plt import matplotlib.dates as mdates import os API_KEY = os.environ['ANOMALY_DETECTOR_API_KEY'] ENDPOINT = os.environ['ANOMALY_DETECTOR_ENDPOINT'] DATA_PATH = "REPLACE_WITH_YOUR_LOCAL_SAMPLE_REQUEST_DATA_PATH" #example: c:\\test\\request-data.csv client = AnomalyDetectorClient(ENDPOINT, AzureKeyCredential(API_KEY)) series = [] data_file = pd.read_csv(DATA_PATH, header=None, encoding='utf-8', date_parser=[0]) for index, row in data_file.iterrows(): series.append(TimeSeriesPoint(timestamp=row[0], value=row[1])) request = UnivariateDetectionOptions(series=series, granularity=TimeGranularity.DAILY) change_point_response = client.detect_univariate_change_point(request) anomaly_response = client.detect_univariate_entire_series(request) for i in range(len(data_file.values)): temp_date_to_num = mdates.date2num(data_file.values[i]) date= temp_date_to_num[0] if (change_point_response.is_change_point[i]): plt.plot(date,data_file.values[i][1], 's', color ='blue') print("Change point detected at index: "+ str(i)) elif (anomaly_response.is_anomaly[i]): plt.plot(date,data_file.values[i][1], '^', color="red") print("Anomaly detected at index: "+ str(i)) else: plt.plot(date,data_file.values[i][1], 'o', color ='green') plt.show()Ważne
W środowisku produkcyjnym użyj bezpiecznego sposobu przechowywania i uzyskiwania dostępu do poświadczeń, takich jak Azure Key Vault. Aby uzyskać więcej informacji na temat zabezpieczeń poświadczeń, zobacz artykuł Azure AI services security .
Uruchom aplikację poleceniem
pythonw pliku szybki startpython quickstart.py
Wyjście
W tym przykładzie kodu dodaliśmy bibliotekę matplotlib , aby umożliwić wizualizowanie i łatwe odróżnienie normalnych punktów danych od punktów zmian i anomalii. Punkty zmian są reprezentowane przez niebieskie kwadraty, anomalie są czerwonymi trójkątami, a normalne punkty danych są zielonymi okręgami. Daty są konwertowane na liczby przy użyciu matplotlibmetody w date2num celu zapewnienia przyjaznych dla wykresów wartości osi y.
Czyszczenie zasobów
Jeśli chcesz wyczyścić i usunąć zasób Narzędzie do wykrywania anomalii, możesz usunąć zasób lub grupę zasobów. Usunięcie grupy zasobów powoduje również usunięcie wszelkich innych skojarzonych z nią zasobów. Możesz również rozważyć usunięcie utworzonych zmiennych środowiskowych, jeśli nie zamierzasz już ich używać.
W tym szybkim starcie nauczysz się, jak wykrywać anomalie w zbiorze danych szeregów czasowych przy użyciu usługi Anomaly Detector i narzędzia cURL.
Aby zapoznać się z ogólnymi pojęciami dotyczącymi Detektora Anomalii, zobacz artykuł przeglądowy.
Wymagania wstępne
- Subskrypcja Azure — Utwórz ją bezpłatnie
- Po utworzeniu subskrypcji Azure utwórz zasób narzędzia do wykrywania anomalii w portalu Azure, aby uzyskać klucz i punkt końcowy. Poczekaj na wdrożenie i wybierz przycisk Przejdź do zasobu . Możesz użyć warstwy cenowej bezpłatna (
F0), aby wypróbować usługę, a następnie uaktualnić ją do warstwy płatnej dla środowiska produkcyjnego. - Prawidłowy plik JSON danych szeregów czasowych do testowania pod kątem anomalii. Jeśli nie masz własnego pliku, możesz utworzyć plik sample.json z referencji interfejsu API REST Azure AI Foundry.
Pobierz klucz i punkt końcowy
Aby pomyślnie wykonać wywołanie do usługi Detektor anomalii, potrzebne są następujące wartości:
| Nazwa zmiennej | Wartość |
|---|---|
ANOMALY_DETECTOR_ENDPOINT |
Tę wartość można znaleźć w Klucze i punkt końcowy podczas przeglądania zasobu w portalu Azure. Przykładowy punkt końcowy: https://YOUR_RESOURCE_NAME.cognitiveservices.azure.com/ |
ANOMALY_DETECTOR_API_KEY |
Wartość klucza API można znaleźć w KEY1 lub KEY2. |
Przejdź do zasobu w portalu Azure. Punkt końcowy i klucze można znaleźć w sekcji Zarządzanie zasobami. Skopiuj punkt końcowy i klucz dostępu, ponieważ będziesz potrzebować obu do uwierzytelniania wywołań interfejsu API. Możesz użyć wartości KEY1 lub KEY2. Zawsze posiadanie dwóch kluczy umożliwia bezpieczne obracanie i ponowne generowanie kluczy bez powodowania zakłóceń usługi.
Tworzenie zmiennych środowiskowych
Tworzenie i przypisywanie trwałych zmiennych środowiskowych dla klucza i punktu końcowego.
Ważne
Zalecamy uwierzytelnianie Microsoft Entra ID przy użyciu zarządzanych tożsamości Azure, aby można było uniknąć przechowywania poświadczeń z aplikacjami uruchomionymi w chmurze.
Używaj kluczy interfejsu API z ostrożnością. Nie dołączaj klucza interfejsu API bezpośrednio do kodu i nigdy nie publikuj go publicznie. Jeśli używasz kluczy interfejsu API, przechowuj je bezpiecznie w Azure Key Vault, regularnie obracaj klucze i ograniczaj dostęp do Azure Key Vault przy użyciu kontroli dostępu opartej na rolach i ograniczeń dostępu do sieci. Aby uzyskać więcej informacji na temat bezpiecznego używania kluczy interfejsu API w aplikacjach, zobacz
Aby uzyskać więcej informacji na temat zabezpieczeń usług sztucznej inteligencji, zobacz Uwierzytelnianie żądań do usług Azure AI.
setx ANOMALY_DETECTOR_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx ANOMALY_DETECTOR_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"
Wykrywanie anomalii
W wierszu polecenia uruchom następujące polecenie. Do polecenia należy wstawić następujące wartości.
- Klucz subskrypcji usługi wykrywania anomalii.
- Adres punktu końcowego narzędzia do wykrywania anomalii.
- Prawidłowy plik JSON danych szeregów czasowych do testowania pod kątem anomalii. Jeśli nie masz własnego pliku, możesz utworzyć plik sample.json z referencji interfejsu API REST Azure AI Foundry.
curl -v POST "%ANOMALY_DETECTOR_ENDPOINT%/anomalydetector/v1.0/timeseries/entire/detect"
-H "Content-Type: application/json"
-H "Ocp-Apim-Subscription-Key: %ANOMALY_DETECTOR_API_KEY%"
-d "@path_to_sample_file.json"
Przykład pełnego polecenia jako pojedynczego wiersza:
curl -v POST "%ANOMALY_DETECTOR_ENDPOINT%/anomalydetector/v1.0/timeseries/entire/detect" -H "Content-Type: application/json" -H "Ocp-Apim-Subscription-Key: %ANOMALY_DETECTOR_API_KEY%" -d "@c:\test\rest.json"
Alternatywnie, jeśli używasz powłoki Bash do uruchomienia polecenia cURL, twoje polecenie byłoby nieco inne:
curl -v POST "$ANOMALY_DETECTOR_ENDPOINT/anomalydetector/v1.0/timeseries/entire/detect" -H "Content-Type: application/json" -H "Ocp-Apim-Subscription-Key: $ANOMALY_DETECTOR_API_KEY" -d "@c:\test\rest.json"
Jeśli użyto przykładowych danych z wymagań wstępnych, otrzymasz odpowiedź 200 z następującymi wynikami:
{
"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
}
Aby uzyskać więcej informacji, zobacz dokumentację interfejsu API REST Azure AI Foundry.
Czyszczenie zasobów
Jeśli chcesz wyczyścić i usunąć subskrypcję Azure AI services, możesz usunąć zasób lub grupę zasobów. Usunięcie grupy zasobów powoduje również usunięcie wszelkich innych zasobów skojarzonych z grupą zasobów.
Następne kroki
Pojęcia:
- Co to jest Anomaly Detector API?
- Metody wykrywania anomalii
- Najlepsze praktyki podczas korzystania z interfejsu API Anomaly Detector.
Samouczki: