Mulai Cepat: Menggunakan pustaka klien Univariate Anomaly Detector
Penting
Mulai tanggal 20 September 2023 Anda tidak akan dapat membuat sumber daya Detektor Anomali baru. Layanan Detektor Anomali dihentikan pada tanggal 1 Oktober 2026.
Dokumentasi |referensi pustaka Paket kode | sumber pustaka (NuGet) |Temukan kode sampel di GitHub
Mulai menggunakan pustaka klien Detektor Anomali untuk C#. Ikuti langkah-langkah ini untuk memasang paket mulai menggunakan algoritma yang disediakan oleh layanan. Layanan Detektor Anomali memungkinkan Anda menemukan kelainan dalam data rangkaian waktu Anda dengan secara otomatis menggunakan model yang paling sesuai di dalamnya, terlepas dari industri, skenario, atau volume data.
Menggunakan pustaka klien Detektor Anomali untuk C# guna:
- Mendeteksi anomali di seluruh himpunan data rangkaian waktu Anda, sebagai permintaan batch
- Mendeteksi status anomali poin data terbaru dalam rangkaian waktu Anda
- Mendeteksi titik perubahan tren di himpunan data Anda.
Prasyarat
- Langganan Azure - buat langganan gratis
- Versi .NET Core saat ini
- Setelah Anda memiliki langganan Azure, buat sumber daya Detektor Anomali di portal Azure untuk mendapatkan kunci dan titik akhir Anda. Tunggu hingga disebarkan dan pilih tombol Buka sumber daya. Anda dapat menggunakan tingkat harga gratis (
F0
) untuk percobaan, lalu meningkatkannya ke tingkat berbayar untuk produksi.
Penyiapan
Buat aplikasi .NET Core baru
Di jendela konsol (seperti cmd, PowerShell, atau Bash), gunakan perintah dotnet new
untuk membuat aplikasi konsol baru dengan nama anomaly-detector-quickstart
. Perintah ini membuat proyek "Halo Dunia" sederhana dengan satu file sumber C#: Program.cs.
dotnet new console -n anomaly-detector-quickstart
Ubah direktori Anda ke folder aplikasi yang baru dibuat. Anda dapat membangun aplikasi dengan:
dotnet build
Output build tidak boleh berisi peringatan atau kesalahan.
...
Build succeeded.
0 Warning(s)
0 Error(s)
...
Memasang pustaka klien
Dalam direktori aplikasi, pasang pustaka klien Anomaly Detector untuk .NET dengan perintah berikut:
dotnet add package Azure.AI.AnomalyDetector --prerelease
Mengambil kunci dan titik akhir
Agar berhasil melakukan panggilan terhadap layanan Detektor Anomali, Anda memerlukan nilai berikut:
Nama variabel | Nilai |
---|---|
ANOMALY_DETECTOR_ENDPOINT |
Nilai ini dapat ditemukan di bagian Kunci & Titik Akhir saat memeriksa sumber daya Anda dari portal Microsoft Azure. Contoh titik akhir: https://YOUR_RESOURCE_NAME.cognitiveservices.azure.com/ |
ANOMALY_DETECTOR_API_KEY |
Nilai kunci API dapat ditemukan di bagian Kunci & Titik Akhir saat memeriksa sumber daya Anda dari portal Azure. Anda dapat menggunakan KEY1 atau KEY2 . |
DATA_PATH |
Mulai cepat ini menggunakan request-data.csv file yang dapat diunduh dari data sampel GitHub kami. Jalur contoh: c:\\test\\request-data.csv |
Buka sumber daya Anda di portal Azure. Titik Akhir dan Kunci dapat ditemukan di bagian Manajemen Sumber Daya. Salin titik akhir dan kunci akses Anda karena keduanya diperlukan untuk mengautentikasi panggilan API Anda. Anda dapat menggunakan KEY1
atau KEY2
. Selalu miliki dua kunci untuk memungkinkan Anda memutar dan meregenerasi kunci dengan aman tanpa menyebabkan gangguan layanan.
Membuat variabel lingkungan
Buat dan tetapkan variabel lingkungan persisten untuk kunci dan titik akhir Anda.
Penting
Jika Anda menggunakan kunci API, simpan dengan aman di tempat lain, seperti di Azure Key Vault. Jangan sertakan kunci API langsung dalam kode Anda, dan jangan pernah mempostingnya secara publik.
Untuk informasi selengkapnya tentang keamanan layanan AI, lihat Mengautentikasi permintaan ke layanan Azure AI.
setx ANOMALY_DETECTOR_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx ANOMALY_DETECTOR_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"
Mengunduh data sampel
Mulai cepat ini menggunakan request-data.csv
file yang dapat diunduh dari data sampel GitHub kami
Anda juga dapat mengunduh data sampel dengan menjalankan:
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
Mendeteksi anomali
Dari direktori proyek, buka file program.cs dan ganti dengan kode berikut:
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.");
}
}
}
}
Jalankan aplikasi menggunakan perintah berikut:
dotnet run program.cs
Output
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
Detail kode
Memahami tataan hasil Anda
Dalam kode di atas, data sampel dibaca dan dikonversi ke DetectRequest
objek. Kami memanggil File.ReadAllLines
dengan jalur file dan membuat daftar TimeSeriesPoint
objek, dan menghapus karakter baris baru apa pun. Ekstrak nilai dan pisahkan stempel waktu dari nilai numeriknya, dan tambahkan ke objek TimeSeriesPoint
baru. Objek DetectRequest
terdiri dari serangkaian titik data, dengan TimeGranularity.Daily
untuk granularitas (atau periodisitas) titik data.
Selanjutnya kita memanggil metode klien DetectEntireSeriesAsync
dengan DetectRequest
objek dan menunggu respons sebagai EntireDetectResponse
objek. Kami kemudian, melakukan iterasi melalui nilai respons IsAnomaly
dan mencetak apa pun yang benar. Nilai-nilai ini sesuai dengan indeks poin data anomali, jika ada yang ditemukan.
Membersihkan sumber daya
Jika Anda ingin membersihkan dan menghapus sumber daya Detektor Anomali, Anda dapat menghapus sumber daya atau grup sumber daya. Menghapus grup sumber daya juga menghapus sumber daya apa pun yang terkait dengannya. Anda juga mungkin ingin mempertimbangkan untuk menghapus variabel lingkungan yang Anda buat jika Anda tidak lagi berniat menggunakannya.
Dokumentasi |referensi pustaka Paket kode | sumber pustaka (npm) |Temukan kode sampel di GitHub
Mulai menggunakan pustaka klien Detektor Anomali untuk JavaScript. Ikuti langkah-langkah ini untuk menginstal paket, dan mulai menggunakan algoritma yang disediakan oleh layanan. Layanan Detektor Anomali memungkinkan Anda menemukan kelainan dalam data rangkaian waktu Anda dengan secara otomatis menggunakan model yang paling pas di dalamnya, terlepas dari industri, skenario, atau volume data.
Gunakan pustaka klien Detektor Anomali untuk JavaScript untuk:
- Mendeteksi anomali di seluruh himpunan data rangkaian waktu Anda, sebagai permintaan batch
- Mendeteksi status anomali poin data terbaru dalam rangkaian waktu Anda
- Mendeteksi titik perubahan tren di himpunan data Anda.
Prasyarat
- Langganan Azure - buat langganan gratis
- Versi terbaru Node.js
- Setelah Anda memiliki langganan Azure, buat sumber daya Detektor Anomali di portal Azure untuk mendapatkan kunci dan titik akhir Anda. Tunggu hingga disebarkan dan pilih tombol Buka sumber daya. Anda dapat menggunakan tingkat harga gratis (
F0
) untuk percobaan, lalu meningkatkannya ke tingkat berbayar untuk produksi.
Penyiapan
Membuat aplikasi Node.js baru
Di jendela konsol (seperti cmd, PowerShell, atau Bash), buat direktori baru untuk aplikasi Anda, dan buka direktori tersebut.
mkdir myapp && cd myapp
Buat file package.json
dengan konten berikut:
{
"dependencies": {
"@azure/ai-anomaly-detector": "next",
"@azure-rest/ai-anomaly-detector": "next",
"@azure/core-auth": "^1.3.0",
"csv-parse": "^5.3.0"
}
}
Memasang pustaka klien
Instal paket npm yang diperlukan dengan menjalankan yang berikut dari direktori yang sama dengan file package.json Anda:
npm install
Mengambil kunci dan titik akhir
Agar berhasil melakukan panggilan terhadap layanan Detektor Anomali, Anda memerlukan nilai berikut:
Nama variabel | Nilai |
---|---|
ANOMALY_DETECTOR_ENDPOINT |
Nilai ini dapat ditemukan di bagian Kunci & Titik Akhir saat memeriksa sumber daya Anda dari portal Microsoft Azure. Contoh titik akhir: https://YOUR_RESOURCE_NAME.cognitiveservices.azure.com/ |
ANOMALY_DETECTOR_API_KEY |
Nilai kunci API dapat ditemukan di bagian Kunci & Titik Akhir saat memeriksa sumber daya Anda dari portal Azure. Anda dapat menggunakan KEY1 atau KEY2 . |
datapath |
Mulai cepat ini menggunakan request-data.csv file yang dapat diunduh dari data sampel GitHub kami. |
Buka sumber daya Anda di portal Azure. Titik Akhir dan Kunci dapat ditemukan di bagian Manajemen Sumber Daya. Salin titik akhir dan kunci akses Anda karena keduanya diperlukan untuk mengautentikasi panggilan API Anda. Anda dapat menggunakan KEY1
atau KEY2
. Selalu miliki dua kunci untuk memungkinkan Anda memutar dan meregenerasi kunci dengan aman tanpa menyebabkan gangguan layanan.
Membuat variabel lingkungan
Buat dan tetapkan variabel lingkungan persisten untuk kunci dan titik akhir Anda.
Penting
Jika Anda menggunakan kunci API, simpan dengan aman di tempat lain, seperti di Azure Key Vault. Jangan sertakan kunci API langsung dalam kode Anda, dan jangan pernah mempostingnya secara publik.
Untuk informasi selengkapnya tentang keamanan layanan AI, lihat Mengautentikasi permintaan ke layanan Azure AI.
setx ANOMALY_DETECTOR_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx ANOMALY_DETECTOR_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"
Mengunduh data sampel
Mulai cepat ini menggunakan request-data.csv
file yang dapat diunduh dari data sampel GitHub kami
Anda juga dapat mengunduh data sampel dengan menjalankan:
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
Mendeteksi anomali
Buat file bernama index.js
dan ganti dengan kode berikut:
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 };
Jalankan aplikasi
Jalankan aplikasi dengan perintah node
pada file mulai cepat Anda.
node index.js
Output
Anomalies were detected from the series at index:
3
18
21
22
23
24
25
28
29
30
31
32
35
44
Memahami tataan hasil Anda
Dalam kode di atas, kami memanggil API Detektor Anomali untuk mendeteksi anomali melalui seluruh rangkaian waktu sebagai batch dengan metode detectEntireSeries() klien. Kami menyimpan objek AnomalyDetectorDetectEntireSeriesResponse yang dikembalikan. Kemudian kita melakukan iterasi melalui daftar respons isAnomaly
, dan mencetak indeks nilai apa pun true
. Nilai-nilai ini sesuai dengan indeks poin data anomali, jika ada yang ditemukan.
Membersihkan sumber daya
Jika Anda ingin membersihkan dan menghapus sumber daya Detektor Anomali, Anda dapat menghapus sumber daya atau grup sumber daya. Menghapus grup sumber daya juga menghapus sumber daya apa pun yang terkait dengannya. Anda juga mungkin ingin mempertimbangkan untuk menghapus variabel lingkungan yang Anda buat jika Anda tidak lagi berniat menggunakannya.
Dokumentasi referensi pustaka |Kode sumber pustaka | Paket (PyPi) |Temukan kode sampel di GitHub
Mulai menggunakan pustaka klien Detektor Anomali untuk Python. Ikuti langkah-langkah ini untuk menginstal paket dan mulai menggunakan algoritma yang disediakan oleh layanan. Layanan Detektor Anomali memungkinkan Anda menemukan kelainan dalam data rangkaian waktu Anda dengan secara otomatis menggunakan model yang paling sesuai di dalamnya, terlepas dari industri, skenario, atau volume data.
Gunakan pustaka klien Detektor Anomali untuk Python untuk:
- Mendeteksi anomali di seluruh himpunan data rangkaian waktu Anda, sebagai permintaan batch
- Mendeteksi status anomali poin data terbaru dalam rangkaian waktu Anda
- Mendeteksi titik perubahan tren di himpunan data Anda.
Prasyarat
- Langganan Azure - buat langganan gratis
- Python 3.x
- Pustaka analisis data Pandas
- Setelah Anda memiliki langganan Azure, buat sumber daya Detektor Anomali di portal Azure untuk mendapatkan kunci dan titik akhir Anda. Tunggu hingga disebarkan dan pilih tombol Buka sumber daya. Anda dapat menggunakan tingkat harga gratis (
F0
) untuk percobaan, lalu meningkatkannya ke tingkat berbayar untuk produksi.
Penyiapan
Menginstal pustaka klien. Anda dapat memasang pustaka klien dengan:
pip install --upgrade azure.ai.anomalydetector
Mengambil kunci dan titik akhir
Agar berhasil melakukan panggilan terhadap layanan Detektor Anomali, Anda memerlukan nilai berikut:
Nama variabel | Nilai |
---|---|
ANOMALY_DETECTOR_ENDPOINT |
Nilai ini dapat ditemukan di bagian Kunci & Titik Akhir saat memeriksa sumber daya Anda dari portal Microsoft Azure. Contoh titik akhir: https://YOUR_RESOURCE_NAME.cognitiveservices.azure.com/ |
ANOMALY_DETECTOR_API_KEY |
Nilai kunci API dapat ditemukan di bagian Kunci & Titik Akhir saat memeriksa sumber daya Anda dari portal Azure. Anda dapat menggunakan KEY1 atau KEY2 . |
DATA_PATH |
Mulai cepat ini menggunakan request-data.csv file yang dapat diunduh dari data sampel GitHub kami. Jalur contoh: c:\\test\\request-data.csv |
Buka sumber daya Anda di portal Azure. Titik Akhir dan Kunci dapat ditemukan di bagian Manajemen Sumber Daya. Salin titik akhir dan kunci akses Anda karena keduanya diperlukan untuk mengautentikasi panggilan API Anda. Anda dapat menggunakan KEY1
atau KEY2
. Selalu miliki dua kunci untuk memungkinkan Anda memutar dan meregenerasi kunci dengan aman tanpa menyebabkan gangguan layanan.
Membuat variabel lingkungan
Buat dan tetapkan variabel lingkungan persisten untuk kunci dan titik akhir Anda.
Penting
Jika Anda menggunakan kunci API, simpan dengan aman di tempat lain, seperti di Azure Key Vault. Jangan sertakan kunci API langsung dalam kode Anda, dan jangan pernah mempostingnya secara publik.
Untuk informasi selengkapnya tentang keamanan layanan AI, lihat Mengautentikasi permintaan ke layanan Azure AI.
setx ANOMALY_DETECTOR_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx ANOMALY_DETECTOR_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"
Mengunduh data sampel
Mulai cepat ini menggunakan request-data.csv
file yang dapat diunduh dari data sampel GitHub kami
Anda juga dapat mengunduh data sampel dengan menjalankan:
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
Mendeteksi anomali
Buat file Python baru yang disebut quickstart.py. Lalu buka file di editor atau IDE pilihan Anda.
Ganti konten dari quickstart.py dengan kode berikut. Ubah kode untuk menambahkan nama variabel lingkungan untuk kunci, titik akhir, dan jalur data rangkaian waktu Anda:
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))
Penting
Untuk produksi, gunakan cara yang aman untuk menyimpan dan mengakses kredensial Anda seperti Azure Key Vault. Untuk informasi selengkapnya tentang keamanan kredensial, lihat artikel keamanan layanan Azure AI.
Jalankan aplikasi dengan perintah
python
dalam file mulai cepat Andapython quickstart.py
Output
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
Memahami tataan hasil Anda
Dalam kode kami di atas, kami memanggil API Detektor Anomali dua kali. Panggilan pertama memeriksa titik perubahan tren di seluruh seri data sampel kami dengan metode .detect_change_point
Panggilan ini mengembalikan ChangePointDetectResponse
yang kami simpan dalam variabel yang kami beri nama change_point_request
. Kami kemudian melakukan iterasi melalui daftar responsis_change_point
, dan mencetak indeks nilai apa pun dengan boolean .true
Panggilan kedua memeriksa seluruh rangkaian data sampel untuk anomali menggunakan metode .detect_entire_series
Panggilan ini mengembalikan EntireDetectResponse
yang kami simpan dalam variabel yang kami beri nama anomaly_response
. Kami melakukan iterasi melalui daftar responsis_anomaly
, dan mencetak indeks nilai apa pun dengan boolean .true
Atau, kita dapat menggunakan metode ini detect_last_point
, yang lebih sesuai untuk mendeteksi anomali dalam data real-time. Untuk mempelajari lebih lanjut , lihat panduan praktik terbaik.
Memvisualisasikan hasil
Untuk memvisualisasikan anomali dan titik perubahan sehubungan dengan seri data sampel, kita akan menggunakan matplotlib pustaka sumber terbuka yang populer.
Instal pustaka .
pip install matplotlib
Ubah file quickstart.py Anda dengan kode berikut:
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()
Penting
Untuk produksi, gunakan cara yang aman untuk menyimpan dan mengakses kredensial Anda seperti Azure Key Vault. untuk informasi selengkapnya tentang keamanan kredensial, lihat artikel keamanan layanan Azure AI.
Jalankan aplikasi dengan perintah
python
dalam file mulai cepat Andapython quickstart.py
Output
Dalam contoh kode ini, kami telah menambahkan matplotlib
pustaka untuk memungkinkan kami memvisualisasikan dan dengan mudah membedakan titik data normal dari titik perubahan dan anomali. Titik perubahan diwakili oleh kotak biru, anomali adalah segitiga merah, dan titik data normal adalah lingkaran hijau. Tanggal dikonversi ke angka menggunakan matplotlib
metode untuk date2num
menyediakan nilai ramah grafik untuk bagan sumbu y.
Membersihkan sumber daya
Jika Anda ingin membersihkan dan menghapus sumber daya Detektor Anomali, Anda dapat menghapus sumber daya atau grup sumber daya. Menghapus grup sumber daya juga menghapus sumber daya apa pun yang terkait dengannya. Anda juga mungkin ingin mempertimbangkan untuk menghapus variabel lingkungan yang Anda buat jika Anda tidak lagi berniat menggunakannya.
Dalam mulai cepat ini, Anda belajar cara mendeteksi anomali dalam batch data time series menggunakan layanan Anomaly Detector dan cURL.
Untuk melihat konsep Detektor Anomali tingkat tinggi, lihat artikel ringkasan.
Prasyarat
- Langganan Azure - buat langganan gratis
- Setelah Anda memiliki langganan Azure, buat sumber daya Detektor Anomali di portal Azure untuk mendapatkan kunci dan titik akhir Anda. Tunggu hingga disebarkan dan pilih tombol Buka sumber daya. Anda dapat menggunakan tingkat harga gratis (
F0
) untuk percobaan, lalu meningkatkannya ke tingkat berbayar untuk produksi. - File JSON data time series yang valid untuk menguji anomali. Jika Anda tidak memiliki file Anda sendiri, Anda dapat membuat file sample.json dari sampel Isi permintaan
Mengambil kunci dan titik akhir
Agar berhasil melakukan panggilan terhadap layanan Detektor Anomali, Anda memerlukan nilai berikut:
Nama variabel | Nilai |
---|---|
ANOMALY_DETECTOR_ENDPOINT |
Nilai ini dapat ditemukan di bagian Kunci & Titik Akhir saat memeriksa sumber daya Anda dari portal Microsoft Azure. Contoh titik akhir: https://YOUR_RESOURCE_NAME.cognitiveservices.azure.com/ |
ANOMALY_DETECTOR_API_KEY |
Nilai kunci API dapat ditemukan di bagian Kunci & Titik Akhir saat memeriksa sumber daya Anda dari portal Azure. Anda dapat menggunakan KEY1 atau KEY2 . |
Buka sumber daya Anda di portal Azure. Titik Akhir dan Kunci dapat ditemukan di bagian Manajemen Sumber Daya. Salin titik akhir dan kunci akses Anda karena keduanya diperlukan untuk mengautentikasi panggilan API Anda. Anda dapat menggunakan KEY1
atau KEY2
. Selalu miliki dua kunci untuk memungkinkan Anda memutar dan meregenerasi kunci dengan aman tanpa menyebabkan gangguan layanan.
Membuat variabel lingkungan
Buat dan tetapkan variabel lingkungan persisten untuk kunci dan titik akhir Anda.
Penting
Jika Anda menggunakan kunci API, simpan dengan aman di tempat lain, seperti di Azure Key Vault. Jangan sertakan kunci API langsung dalam kode Anda, dan jangan pernah mempostingnya secara publik.
Untuk informasi selengkapnya tentang keamanan layanan AI, lihat Mengautentikasi permintaan ke layanan Azure AI.
setx ANOMALY_DETECTOR_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx ANOMALY_DETECTOR_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"
Mendeteksi anomali
Pada perintah, jalankan perintah berikut ini. Anda harus menyisipkan nilai berikut ke dalam perintah.
- Kunci langganan layanan detektor Anomali Anda.
- Alamat titik akhir detektor Anomali Anda.
- File JSON data time series yang valid untuk menguji anomali. Jika tidak memiliki file sendiri, Anda dapat membuat sample.json file dari Sampel badan permintaan.
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"
Contoh perintah lengkap sebagai satu baris:
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"
Atau jika Anda menjalankan perintah cURL dari shell Bash, perintah Anda akan sedikit berbeda:
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"
Jika Anda menggunakan data sampel dari prasyarat, Anda harus menerima respons 200 dengan hasil berikut:
{
"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
}
Untuk informasi selengkapnya, lihat referensi Deteksi Anomali REST.
Membersihkan sumber daya
Jika Anda ingin membersihkan dan menghapus langganan layanan Azure AI, Anda dapat menghapus sumber daya atau grup sumber daya. Menghapus grup sumber daya juga menghapus sumber daya lain yang terkait dengan grup sumber daya.
Langkah berikutnya
Konsep:
- Apa itu API Detektor Anomali?
- Metode deteksi anomali
- Praktik terbaik saat menggunakan API Detektor Anomali.
Tutorial: