Szybki start: używanie biblioteki klienta univariate Narzędzie do wykrywania anomalii
Ważne
Od 20 września 2023 r. nie będzie można tworzyć nowych zasobów Narzędzie do wykrywania anomalii. Usługa Narzędzie do wykrywania anomalii jest wycofywana 1 października 2026 r.
Dokumentacja biblioteki referencyjnej |— pakiet kodu | źródłowego biblioteki (NuGet) |Znajdowanie przykładowego kodu w witrynie 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 Narzędzie do wykrywania anomalii dla języka C#, aby:
- Wykrywanie anomalii w zestawie danych szeregów czasowych jako żądanie wsadowe
- Wykrywanie stanu anomalii najnowszego punktu danych w szeregach czasowych
- Wykrywanie punktów zmian trendu w zestawie danych.
Wymagania wstępne
- Subskrypcja platformy Azure — utwórz bezpłatnie
- Bieżąca wersja platformy .NET Core
- Po utworzeniu subskrypcji platformy Azure utwórz zasób Narzędzie do wykrywania anomalii w witrynie Azure Portal, 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ędzie do wykrywania anomalii dla platformy .NET za pomocą następującego polecenia:
dotnet add package Azure.AI.AnomalyDetector --prerelease
Pobieranie klucza i punktu końcowego
Aby pomyślnie wykonać wywołanie usługi Narzędzie do wykrywania anomalii, potrzebne są następujące wartości:
Nazwa zmiennej | Wartość |
---|---|
ANOMALY_DETECTOR_ENDPOINT |
Tę wartość można znaleźć w sekcji Klucze i punkt końcowy podczas badania zasobu z poziomu witryny Azure Portal. Przykładowy punkt końcowy: https://YOUR_RESOURCE_NAME.cognitiveservices.azure.com/ |
ANOMALY_DETECTOR_API_KEY |
Wartość klucza interfejsu API można znaleźć w sekcji Klucze i punkt końcowy podczas badania zasobu w witrynie Azure Portal. Możesz użyć wartości KEY1 lub KEY2 . |
DATA_PATH |
W tym przewodniku request-data.csv Szybki start jest używany plik, który można pobrać z przykładowych danych usługi GitHub. Przykładowa ścieżka: c:\\test\\request-data.csv |
Przejdź do zasobu w witrynie Azure Portal. Punkt końcowy i klucze można znaleźć w sekcji Zarządzanie zasobami. Skopiuj punkt końcowy i klucz dostępu, ponieważ będzie potrzebny zarówno 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
Jeśli używasz klucza interfejsu API, zapisz go bezpiecznie w innym miejscu, na przykład w usłudze Azure Key Vault. Nie dołączaj klucza interfejsu API bezpośrednio do kodu i nigdy nie publikuj go publicznie.
Aby uzyskać więcej informacji na temat zabezpieczeń usług sztucznej inteligencji, zobacz Uwierzytelnianie żądań w usługach 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
W tym przewodniku request-data.csv
Szybki start jest używany plik, który można pobrać z przykładowych danych usługi GitHub
Możesz również pobrać przykładowe dane, uruchamiając polecenie:
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
Informacje o wynikach
W powyższym kodzie przykładowe dane są odczytywane i konwertowane na DetectRequest
obiekt. Wywołujemy File.ReadAllLines
ścieżkę pliku i tworzymy listę TimeSeriesPoint
obiektów i usuwamy wszystkie nowe znaki wiersza. 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 czekamy na odpowiedź jako EntireDetectResponse
obiekt. 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 biblioteki dokumentacja |pakietu kodu | źródłowego biblioteki (npm) |Znajdowanie przykładowego kodu w usłudze GitHub
Wprowadzenie do biblioteki klienta Narzędzie do wykrywania anomalii dla języka 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 Narzędzie do wykrywania anomalii dla języka JavaScript, aby:
- Wykrywanie anomalii w zestawie danych szeregów czasowych jako żądanie wsadowe
- Wykrywanie stanu anomalii najnowszego punktu danych w szeregach czasowych
- Wykrywanie punktów zmian trendu w zestawie danych.
Wymagania wstępne
- Subskrypcja platformy Azure — utwórz bezpłatnie
- Bieżąca wersja Node.js
- Po utworzeniu subskrypcji platformy Azure utwórz zasób Narzędzie do wykrywania anomalii w witrynie Azure Portal, 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
Pobieranie klucza i punktu końcowego
Aby pomyślnie wykonać wywołanie usługi Narzędzie do wykrywania anomalii, potrzebne są następujące wartości:
Nazwa zmiennej | Wartość |
---|---|
ANOMALY_DETECTOR_ENDPOINT |
Tę wartość można znaleźć w sekcji Klucze i punkt końcowy podczas badania zasobu z poziomu witryny Azure Portal. Przykładowy punkt końcowy: https://YOUR_RESOURCE_NAME.cognitiveservices.azure.com/ |
ANOMALY_DETECTOR_API_KEY |
Wartość klucza interfejsu API można znaleźć w sekcji Klucze i punkt końcowy podczas badania zasobu w witrynie Azure Portal. Możesz użyć wartości KEY1 lub KEY2 . |
datapath |
W tym przewodniku request-data.csv Szybki start jest używany plik, który można pobrać z przykładowych danych usługi GitHub. |
Przejdź do zasobu w witrynie Azure Portal. Punkt końcowy i klucze można znaleźć w sekcji Zarządzanie zasobami. Skopiuj punkt końcowy i klucz dostępu, ponieważ będzie potrzebny zarówno 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
Jeśli używasz klucza interfejsu API, zapisz go bezpiecznie w innym miejscu, na przykład w usłudze Azure Key Vault. Nie dołączaj klucza interfejsu API bezpośrednio do kodu i nigdy nie publikuj go publicznie.
Aby uzyskać więcej informacji na temat zabezpieczeń usług sztucznej inteligencji, zobacz Uwierzytelnianie żądań w usługach 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
W tym przewodniku request-data.csv
Szybki start jest używany plik, który można pobrać z przykładowych danych usługi GitHub
Możesz również pobrać przykładowe dane, uruchamiając polecenie:
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
Informacje o wynikach
W powyższym kodzie wywołujemy interfejs API Narzędzie do wykrywania anomalii w celu wykrywania anomalii w całej serii czasowej jako partii za pomocą metody detectEntireSeries() klienta. Przechowujemy zwrócony obiekt AnomalyDetectorDetectEntireSeriesResponse . Następnie iterujemy listę odpowiedzi isAnomaly
i wyświetlamy indeks wszystkich 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 biblioteki dokumentacji |Pakietu kodu | źródłowego biblioteki (PyPi) |Znajdowanie przykładowego kodu w usłudze GitHub
Rozpocznij pracę z biblioteką klienta Narzędzie do wykrywania anomalii dla języka 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 Narzędzie do wykrywania anomalii dla języka Python, aby:
- Wykrywanie anomalii w zestawie danych szeregów czasowych jako żądanie wsadowe
- Wykrywanie stanu anomalii najnowszego punktu danych w szeregach czasowych
- Wykrywanie punktów zmian trendu w zestawie danych.
Wymagania wstępne
- Subskrypcja platformy Azure — utwórz bezpłatnie
- Python 3.x
- Biblioteka analizy danych biblioteki Pandas
- Po utworzeniu subskrypcji platformy Azure utwórz zasób Narzędzie do wykrywania anomalii w witrynie Azure Portal, 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
Pobieranie klucza i punktu końcowego
Aby pomyślnie wykonać wywołanie usługi Narzędzie do wykrywania anomalii, potrzebne są następujące wartości:
Nazwa zmiennej | Wartość |
---|---|
ANOMALY_DETECTOR_ENDPOINT |
Tę wartość można znaleźć w sekcji Klucze i punkt końcowy podczas badania zasobu z poziomu witryny Azure Portal. Przykładowy punkt końcowy: https://YOUR_RESOURCE_NAME.cognitiveservices.azure.com/ |
ANOMALY_DETECTOR_API_KEY |
Wartość klucza interfejsu API można znaleźć w sekcji Klucze i punkt końcowy podczas badania zasobu w witrynie Azure Portal. Możesz użyć wartości KEY1 lub KEY2 . |
DATA_PATH |
W tym przewodniku request-data.csv Szybki start jest używany plik, który można pobrać z przykładowych danych usługi GitHub. Przykładowa ścieżka: c:\\test\\request-data.csv |
Przejdź do zasobu w witrynie Azure Portal. Punkt końcowy i klucze można znaleźć w sekcji Zarządzanie zasobami. Skopiuj punkt końcowy i klucz dostępu, ponieważ będzie potrzebny zarówno 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
Jeśli używasz klucza interfejsu API, zapisz go bezpiecznie w innym miejscu, na przykład w usłudze Azure Key Vault. Nie dołączaj klucza interfejsu API bezpośrednio do kodu i nigdy nie publikuj go publicznie.
Aby uzyskać więcej informacji na temat zabezpieczeń usług sztucznej inteligencji, zobacz Uwierzytelnianie żądań w usługach 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
W tym przewodniku request-data.csv
Szybki start jest używany plik, który można pobrać z przykładowych danych usługi GitHub
Możesz również pobrać przykładowe dane, uruchamiając polecenie:
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 w języku 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 przypadku środowiska produkcyjnego użyj bezpiecznego sposobu przechowywania i uzyskiwania dostępu do poświadczeń, takich jak usługa Azure Key Vault. Aby uzyskać więcej informacji na temat zabezpieczeń poświadczeń, zobacz artykuł Zabezpieczenia usług Azure AI.
Uruchamianie aplikacji za
python
pomocą polecenia w 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
Informacje o wynikach
W powyższym kodzie wywołujemy interfejs API Narzędzie do wykrywania anomalii dwa razy. Pierwsze wywołanie sprawdza punkty zmian trendu w naszej przykładowej serii danych za pomocą detect_change_point
metody . To wywołanie zwraca ChangePointDetectResponse
wartość przechowywaną w zmiennej o nazwie change_point_request
. Następnie wykonujemy iterację po liście 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 detect_entire_series
anomalii przy użyciu metody . To wywołanie zwraca EntireDetectResponse
wartość przechowywaną w zmiennej o nazwie anomaly_response
. Iterujemy 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 matplotlib
Zmodyfikuj 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 przypadku środowiska produkcyjnego użyj bezpiecznego sposobu przechowywania i uzyskiwania dostępu do poświadczeń, takich jak usługa Azure Key Vault. Aby uzyskać więcej informacji na temat zabezpieczeń poświadczeń, zobacz artykuł Zabezpieczenia usług Azure AI.
Uruchamianie aplikacji za
python
pomocą polecenia w 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 matplotlib
metody 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ć.
Z tego przewodnika Szybki start dowiesz się, jak wykrywać anomalie w partii danych szeregów czasowych przy użyciu usługi Narzędzie do wykrywania anomalii i biblioteki cURL.
Aby zapoznać się z ogólnymi pojęciami dotyczącymi Narzędzie do wykrywania anomalii, zobacz artykuł z omówieniem.
Wymagania wstępne
- Subskrypcja platformy Azure — utwórz bezpłatnie
- Po utworzeniu subskrypcji platformy Azure utwórz zasób Narzędzie do wykrywania anomalii w witrynie Azure Portal, 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 przykładu treść żądania
Pobieranie klucza i punktu końcowego
Aby pomyślnie wykonać wywołanie usługi Narzędzie do wykrywania anomalii, potrzebne są następujące wartości:
Nazwa zmiennej | Wartość |
---|---|
ANOMALY_DETECTOR_ENDPOINT |
Tę wartość można znaleźć w sekcji Klucze i punkt końcowy podczas badania zasobu z poziomu witryny Azure Portal. Przykładowy punkt końcowy: https://YOUR_RESOURCE_NAME.cognitiveservices.azure.com/ |
ANOMALY_DETECTOR_API_KEY |
Wartość klucza interfejsu API można znaleźć w sekcji Klucze i punkt końcowy podczas badania zasobu w witrynie Azure Portal. Możesz użyć wartości KEY1 lub KEY2 . |
Przejdź do zasobu w witrynie Azure Portal. Punkt końcowy i klucze można znaleźć w sekcji Zarządzanie zasobami. Skopiuj punkt końcowy i klucz dostępu, ponieważ będzie potrzebny zarówno 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
Jeśli używasz klucza interfejsu API, zapisz go bezpiecznie w innym miejscu, na przykład w usłudze Azure Key Vault. Nie dołączaj klucza interfejsu API bezpośrednio do kodu i nigdy nie publikuj go publicznie.
Aby uzyskać więcej informacji na temat zabezpieczeń usług sztucznej inteligencji, zobacz Uwierzytelnianie żądań w usługach 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 przykładu treść żądania.
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 polecenia cURL z powłoki Bash, 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ę REST wykrywania anomalii.
Czyszczenie zasobów
Jeśli chcesz wyczyścić i usunąć subskrypcję usług Azure AI, 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 interfejs API Narzędzie do wykrywania anomalii?
- Metody wykrywania anomalii
- Najlepsze rozwiązania dotyczące korzystania z interfejsu API Narzędzie do wykrywania anomalii.
Samouczki: