Mulai cepat: Gunakan pustaka klien univariat Detektor Anomali
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 pas di dalamnya, terlepas dari industri, skenario, atau volume data.
Menggunakan pustaka klien Detektor Anomali untuk C# guna:
- Mendeteksi anomali sepanjang 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.
Dokumentasi referensi pustaka | Kode sumber pustaka | Paket (NuGet) | Temukan kode di GitHub
Prasyarat
- Langganan Azure - Membuat langganan secara gratis
- Versi .NET Core saat ini
- Setelah Anda berlangganan Azure, buat sumber daya Detektor Anomali di portal Azure untuk mendapatkan kunci dan titik akhir Anda. Tunggu hingga ia menyebar dan klik tombol Buka sumber daya.
- Anda akan memerlukan kunci dan titik akhir dari sumber daya yang Anda buat untuk menghubungkan aplikasi Anda ke API Detektor Anomali. Anda akan menempelkan kunci dan titik akhir ke dalam kode di bawah ini nanti di mulai cepat.
Anda dapat menggunakan tingkat harga gratis (
F0
) untuk mencoba layanan, dan kemudian meningkatkannya ke tingkat berbayar untuk produksi.
- Anda akan memerlukan kunci dan titik akhir dari sumber daya yang Anda buat untuk menghubungkan aplikasi Anda ke API Detektor Anomali. Anda akan menempelkan kunci dan titik akhir ke dalam kode di bawah ini nanti di mulai cepat.
Anda dapat menggunakan tingkat harga gratis (
Persiapan
Membuat 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 membuat 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 --version 3.0.0-preview.5
Mendeteksi anomali dari seluruh seri waktu
Anda perlu memperbarui kode di bawah ini dan memberikan nilai Anda sendiri untuk variabel berikut.
Nama variabel | Nilai |
---|---|
your-endpoint |
Nilai ini dapat ditemukan di bagian Kunci & Titik Akhir saat memeriksa sumber daya Anda dari portal Azure. Contoh titik akhirnya adalah: https://contoso-new-001.cognitiveservices.azure.com/ |
your-apikey |
Nilai ini dapat ditemukan di bagian Kunci & Titik Akhir saat memeriksa sumber daya Anda dari portal Azure. Anda dapat menggunakan Key1 atau Key2. Selalu memiliki dua kunci yang valid memungkinkan rotasi kunci yang aman tanpa waktu henti. |
request-data.csv |
Anda perlu menyediakan jalur ke data sampel Anda sendiri yang disimpan dalam format csv untuk mendeteksi anomali. Jika Anda ingin menggunakan data sampel kami, Anda dapat mengunduh data sampel di sini |
Dari direktori proyek, buka file program.cs dan ganti dengan kode berikut:
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using Azure.AI.AnomalyDetector;
using Azure.AI.AnomalyDetector.Models;
using Azure.Core.TestFramework;
using NUnit.Framework;
namespace Azure.AI.AnomalyDetector.Tests.Samples
{
public partial class AnomalyDetectorSamples : SamplesBase<AnomalyDetectorTestEnvironment>
{
[Test]
public async Task DetectEntireSeriesAnomaly()
{
//read endpoint and apiKey
string endpoint = "your-endpoint";
string apiKey = "your-apikey";
var endpointUri = new Uri(endpoint);
var credential = new AzureKeyCredential(apiKey);
//create client
AnomalyDetectorClient client = new AnomalyDetectorClient(endpointUri, credential);
//read data
string datapath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "samples", "data", "request-data.csv");
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
DetectRequest request = new DetectRequest(list)
{
Granularity = TimeGranularity.Daily
};
//detect
Console.WriteLine("Detecting anomalies in the entire time series.");
try
{
EntireDetectResponse result = await client.DetectEntireSeriesAsync(request).ConfigureAwait(false);
bool hasAnomaly = false;
for (int i = 0; i < request.Series.Count; ++i)
{
if (result.IsAnomaly[i])
{
Console.WriteLine("An anomaly was detected at index: {0}.", i);
hasAnomaly = true;
}
}
if (!hasAnomaly)
{
Console.WriteLine("No anomalies detected in the series.");
}
}
catch (RequestFailedException ex)
{
Console.WriteLine(String.Format("Entire detection failed: {0}", ex.Message));
throw;
}
catch (Exception ex)
{
Console.WriteLine(String.Format("Detection error. {0}", ex.Message));
throw;
}
}
}
}
Detail kode
Memuat seri waktu dan membuat DetectRequest
Anda dapat mengunduh data sampel kami, membaca data seri waktu dan menambahkannya ke objek DetectRequest
.
Hubungi File.ReadAllLines
jalur file dan buat daftar objek TimeSeriesPoint
dan strip karakter baris baru. Ekstrak nilai dan pisahkan stempel waktu dari nilai numeriknya, dan tambahkan ke objek TimeSeriesPoint
baru.
Membuat objek DetectRequest
dengan seri poin, dan TimeGranularity.Daily
untuk granularitas (atau periodisitas) poin data.
//read data
string datapath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "samples", "data", "request-data.csv");
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
DetectRequest request = new DetectRequest(list)
{
Granularity = TimeGranularity.Daily
};
Mendeteksi anomali dari seluruh seri
Memanggil metode DetectEntireSeriesAsync
klien dengan objek DetectRequest
dan menunggu respons sebagai objek EntireDetectResponse
. Lakukan iterasi melalui nilai IsAnomaly
respons dan cetak apa pun yang true. Nilai-nilai ini sesuai dengan indeks poin data anomali, jika ada yang ditemukan.
//detect
Console.WriteLine("Detecting anomalies in the entire time series.");
try
{
EntireDetectResponse result = await client.DetectEntireSeriesAsync(request).ConfigureAwait(false);
bool hasAnomaly = false;
for (int i = 0; i < request.Series.Count; ++i)
{
if (result.IsAnomaly[i])
{
Console.WriteLine("An anomaly was detected at index: {0}.", i);
hasAnomaly = true;
}
}
if (!hasAnomaly)
{
Console.WriteLine("No anomalies detected in the series.");
}
}
catch (RequestFailedException ex)
{
Console.WriteLine(String.Format("Entire detection failed: {0}", ex.Message));
throw;
}
catch (Exception ex)
{
Console.WriteLine(String.Format("Detection error. {0}", ex.Message));
throw;
}
Membersihkan sumber daya
Jika ingin membersihkan dan menghapus langganan Cognitive Services, 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:
Mulai menggunakan pustaka klien Detektor Anomali untuk JavaScript. Ikuti 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.
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.
Dokumentasi referensi pustaka | Kode sumber pustaka | Paket (npm) | Temukan kode di GitHub
Prasyarat
- Langganan Azure - Membuat langganan gratis
- Versi terbaru Node.js
- Setelah Anda berlangganan Azure, buat sumber daya Detektor Anomali di portal Azure untuk mendapatkan kunci dan titik akhir Anda. Tunggu hingga ia menyebar dan klik tombol Buka sumber daya.
- Anda akan memerlukan kunci dan titik akhir dari sumber daya yang Anda buat untuk menghubungkan aplikasi Anda ke API Detektor Anomali. Anda akan menempelkan kunci dan titik akhir ke dalam kode di bawah ini nanti di mulai cepat.
Anda dapat menggunakan tingkat harga gratis (
F0
) untuk mencoba layanan, dan kemudian meningkatkannya ke tingkat berbayar untuk produksi.
- Anda akan memerlukan kunci dan titik akhir dari sumber daya yang Anda buat untuk menghubungkan aplikasi Anda ke API Detektor Anomali. Anda akan menempelkan kunci dan titik akhir ke dalam kode di bawah ini nanti di mulai cepat.
Anda dapat menggunakan tingkat harga gratis (
Persiapan
Membuat variabel lingkungan
Catatan
Titik akhir untuk sumber daya non-uji coba yang dibuat setelah 1 Juli 2019 menggunakan format subdomain kustom yang diperlihatkan di bawah ini. Untuk informasi selengkapnya dan daftar lengkap titik akhir wilayah, lihat Nama subdomain kustom untuk Cognitive Services.
Dengan kunci dan titik akhir dari sumber daya yang Anda buat, buat dua variabel lingkungan untuk autentikasi:
ANOMALY_DETECTOR_KEY
- Kunci sumber daya untuk mengautentikasi permintaan Anda.ANOMALY_DETECTOR_ENDPOINT
- Titik akhir sumber daya untuk mengirim permintaan API. Lalu akan terlihat seperti ini:https://<your-custom-subdomain>.api.cognitive.microsoft.com
Gunakan instruksi untuk sistem operasi Anda.
setx ANOMALY_DETECTOR_KEY <replace-with-your-anomaly-detector-key>
setx ANOMALY_DETECTOR_ENDPOINT <replace-with-your-anomaly-detector-endpoint>
Setelah Anda menambahkan variabel lingkungan, hidupkan ulang jendela konsol.
Buat aplikasi Node.js baru
Di jendela konsol (seperti cmd, PowerShell, atau Bash), buat direktori baru untuk aplikasi Anda, dan arahkan ke sana.
mkdir myapp && cd myapp
Jalankan perintah npm init
untuk membuat aplikasi node dengan file package.json
.
npm init
Buat file bernama index.js
dan impor pustaka berikut ini:
'use strict'
const fs = require('fs');
const parse = require("csv-parse/lib/sync");
const { AnomalyDetectorClient } = require('@azure/ai-anomaly-detector');
const { AzureKeyCredential } = require('@azure/core-auth');
Buat variabel kunci dan titik akhir Azure sumber daya Anda. Jika Anda membuat variabel lingkungan setelah meluncurkan aplikasi, Anda harus menutup dan membuka kembali editor, IDE, atau shell yang menjalankannya untuk mengakses variabel. Buat variabel lain untuk contoh file data yang akan Anda unduh di langkah selanjutnya, dan daftar kosong untuk poin data. Lalu buat objek ApiKeyCredentials
untuk memuat kunci.
// Spreadsheet with 2 columns and n rows.
let CSV_FILE = './request-data.csv';
// Authentication variables
let key = 'PASTE_YOUR_ANOMALY_DETECTOR_SUBSCRIPTION_KEY_HERE';
let endpoint = 'PASTE_YOUR_ANOMALY_DETECTOR_ENDPOINT_HERE';
// Points array for the request body
let points = [];
Memasang pustaka klien
Pasang paket NPM ms-rest-azure
dan azure-cognitiveservices-anomalydetector
. Pustaka csv-parse juga digunakan dalam mulai cepat ini:
npm install @azure/ai-anomaly-detector @azure/ms-rest-js csv-parse
File package.json
aplikasi Anda akan diperbarui dengan dependensi.
Model objek
Klien Detektor Anomali adalah objek AnomalyDetectorClient yang mengautentikasi ke Azure menggunakan kunci Anda. Klien dapat melakukan deteksi anomali pada seluruh himpunan data menggunakan entireDetect(), atau pada poin data terbaru menggunakan LastDetect(). Metode ChangePointDetectAsync mendeteksi titik-titik yang menandai perubahan dalam tren.
Data rangkaian waktu dikirim sebagai rangkaian Titik dalam objek Permintaan. Objek Request
berisi properti untuk menggambarkan data (Granularitas misalnya), dan parameter untuk deteksi anomali.
Respons Detektor Anomali adalah objek LastDetectResponse, EntireDetectResponse, atau ChangePointDetectResponse tergantung pada metode yang digunakan.
Contoh kode
Cuplikan kode ini memperlihatkan kepada Anda cara melakukan tugas berikut dengan pustaka klien Detektor Anomali untuk Node.js:
- Autentikasi klien
- Memuat himpunan data rangkaian waktu dari file
- Mendeteksi anomali di seluruh himpunan data
- Mendeteksi status anomali poin data terbaru
- Mendeteksi titik perubahan dalam himpunan data
Mengautentikasi klien
Instansiasikan objek AnomalyDetectorClient dengan titik akhir dan info masuk Anda.
let anomalyDetectorClient = new AnomalyDetectorClient(endpoint, new AzureKeyCredential(key));
Memuat data rangkaian waktu dari file
Unduh contoh data untuk mulai cepat ini dari GitHub:
- Di browser Anda, klik kanan Raw.
- Klik Simpan tautan sebagai.
- Simpan file ke direktori aplikasi Anda, sebagai file .csv.
Data rangkaian waktu ini diformat sebagai file .csv, dan akan dikirim ke API Detektor Anomali.
Baca file data Anda dengan metode readFileSync()
pustaka csv-parse, dan uraikan file dengan parse()
. Untuk setiap baris, dorong objek Point yang berisi tanda waktu, dan nilai numerik.
function readFile() {
let input = fs.readFileSync(CSV_FILE).toString();
let parsed = parse(input, { skip_empty_lines: true });
parsed.forEach(function (e) {
points.push({ timestamp: new Date(e[0]), value: parseFloat(e[1]) });
});
}
readFile()
Mendeteksi anomali di seluruh himpunan data
Hubungi API untuk mendeteksi anomali di seluruh rangkaian waktu sebagai batch dengan metode entireDetect() klien. Simpan objek EntireDetectResponse yang dikembalikan. Iterasi melalui daftar isAnomaly
respons, dan cetak indeks nilai true
apa pun. Nilai-nilai ini sesuai dengan indeks poin data anomali, jika ada yang ditemukan.
async function batchCall() {
// Create request body for API call
let body = { series: points, granularity: 'daily' }
// Make the call to detect anomalies in whole series of points
await anomalyDetectorClient.detectEntireSeries(body)
.then((response) => {
console.log("Batch (entire) anomaly detection):")
for (let item = 0; item < response.isAnomaly.length; item++) {
if (response.isAnomaly[item]) {
console.log("An anomaly was detected from the series, at row " + item)
}
}
}).catch((error) => {
console.log(error)
})
}
batchCall()
Mendeteksi status anomali poin data terbaru
Hubungi API Detektor Anomali untuk menentukan apakah poin data terbaru Anda adalah anomali menggunakan metode lastDetect() klien, dan simpan objek LastDetectResponse yang dikembalikan. Nilai isAnomaly
respons adalah boolean yang menentukan status anomali titik tersebut.
async function lastDetection() {
let body = { series: points, granularity: 'daily' }
// Make the call to detect anomalies in the latest point of a series
await anomalyDetectorClient.detectLastPoint(body)
.then((response) => {
console.log("Latest point anomaly detection:")
if (response.isAnomaly) {
console.log("The latest point, in row " + points.length + ", is detected as an anomaly.")
} else {
console.log("The latest point, in row " + points.length + ", is not detected as an anomaly.")
}
}).catch((error) => {
console.log(error)
})
}
lastDetection()
Mendeteksi titik perubahan dalam himpunan data
Hubungi API untuk mendeteksi titik perubahan dalam rangkaian waktu dengan metode detectChangePoint() klien. Simpan objek ChangePointDetectResponse yang dikembalikan. Iterasi melalui daftar isChangePoint
respons, dan cetak indeks nilai true
apa pun. Nilai-nilai ini sesuai dengan indeks titik perubahan tren, jika ada yang ditemukan.
async function changePointDetection() {
let body = { series: points, granularity: 'daily' }
// get change point detect results
await anomalyDetectorClient.detectChangePoint(body)
.then((response) => {
if (
response.isChangePoint.some(function (changePoint) {
return changePoint === true;
})
) {
console.log("Change points were detected from the series at index:");
response.isChangePoint.forEach(function (changePoint, index) {
if (changePoint === true) {
console.log(index);
}
});
} else {
console.log("There is no change point detected from the series.");
}
}).catch((error) => {
console.log(error)
})
}
Menjalankan aplikasi
Jalankan aplikasi dengan perintah node
pada file mulai cepat Anda.
node index.js
Membersihkan sumber daya
Jika ingin membersihkan dan menghapus langganan Cognitive Services, 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:
Mulai menggunakan pustaka klien Detektor Anomali untuk Python. Ikuti 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.
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.
Dokumentasi referensi pustaka | Kode sumber pustaka | Paket (PyPi) | Temukan kode sampel di GitHub
Prasyarat
- Python 3.x
- Pustaka analisis data Pandas
- Langganan Azure - Buat langganan secara gratis
- Setelah Anda berlangganan Azure, buat sumber daya Detektor Anomali di portal Azure untuk mendapatkan kunci dan titik akhir Anda. Tunggu hingga ia menyebar dan klik tombol Buka sumber daya.
- Anda akan memerlukan kunci dan titik akhir dari sumber daya yang Anda buat untuk menghubungkan aplikasi Anda ke API Detektor Anomali. Anda akan menempelkan kunci dan titik akhir ke dalam kode di bawah ini nanti di mulai cepat.
Anda dapat menggunakan tingkat harga gratis (
F0
) untuk mencoba layanan, dan kemudian meningkatkannya ke tingkat berbayar untuk produksi.
- Anda akan memerlukan kunci dan titik akhir dari sumber daya yang Anda buat untuk menghubungkan aplikasi Anda ke API Detektor Anomali. Anda akan menempelkan kunci dan titik akhir ke dalam kode di bawah ini nanti di mulai cepat.
Anda dapat menggunakan tingkat harga gratis (
Persiapan
Membuat variabel lingkungan
Catatan
Titik akhir untuk sumber daya non-uji coba yang dibuat setelah 1 Juli 2019 menggunakan format subdomain kustom yang diperlihatkan di bawah ini. Untuk informasi selengkapnya dan daftar lengkap titik akhir wilayah, lihat Nama subdomain kustom untuk Cognitive Services.
Dengan kunci dan titik akhir dari sumber daya yang Anda buat, buat dua variabel lingkungan untuk autentikasi:
ANOMALY_DETECTOR_KEY
- Kunci sumber daya untuk mengautentikasi permintaan Anda.ANOMALY_DETECTOR_ENDPOINT
- Titik akhir sumber daya untuk mengirim permintaan API. Lalu akan terlihat seperti ini:https://<your-custom-subdomain>.api.cognitive.microsoft.com
Gunakan instruksi untuk sistem operasi Anda.
setx ANOMALY_DETECTOR_KEY <replace-with-your-anomaly-detector-key>
setx ANOMALY_DETECTOR_ENDPOINT <replace-with-your-anomaly-detector-endpoint>
Setelah Anda menambahkan variabel lingkungan, hidupkan ulang jendela konsol.
Membuat aplikasi Python baru
Membuat file Python baru dan mengimpor pustaka berikut.
import os
from azure.ai.anomalydetector import AnomalyDetectorClient
from azure.ai.anomalydetector.models import DetectRequest, TimeSeriesPoint, TimeGranularity, \
AnomalyDetectorError
from azure.core.credentials import AzureKeyCredential
import pandas as pd
Membuat variabel untuk kunci Anda sebagai variabel lingkungan, jalur ke file data rangkaian waktu, dan lokasi Azure langganan Anda. Contohnya,westus2
.
SUBSCRIPTION_KEY = os.environ["ANOMALY_DETECTOR_KEY"]
ANOMALY_DETECTOR_ENDPOINT = os.environ["ANOMALY_DETECTOR_ENDPOINT"]
TIME_SERIES_DATA_PATH = os.path.join("./sample_data", "request-data.csv")
Memasang pustaka klien
Setelah memasang Python, Anda dapat memasang pustaka klien dengan:
pip install --upgrade azure-ai-anomalydetector
Model objek
Klien Detektor Anomali adalah objek AnomalyDetectorClient yang mengautentikasi ke Azure menggunakan kunci Anda. Klien dapat melakukan deteksi anomali seluruh himpunan data menggunakan detect_entire_series, atau pada poin data terbaru menggunakan detect_last_point. Fungsi detect_change_point mendeteksi titik-titik yang menandai perubahan dalam tren.
Data rangkaian waktu dikirim sebagai rangkaian objek TimeSeriesPoints. Objek DetectRequest
berisi properti untuk menjelaskan data TimeGranularity
misalnya, dan parameter untuk deteksi anomali.
Respons Detektor Anomali adalah objek LastDetectResponse, EntireDetectResponse, atau ChangePointDetectResponse tergantung pada metode yang digunakan.
Contoh kode
Cuplikan kode ini memperlihatkan kepada Anda cara melakukan tugas berikut dengan pustaka klien Detektor Anomali untuk Python:
- Autentikasi klien
- Memuat himpunan data rangkaian waktu dari file
- Mendeteksi anomali di seluruh himpunan data
- Mendeteksi status anomali poin data terbaru
- Mendeteksi titik perubahan dalam himpunan data
Mengautentikasi klien
Tambahkan variabel lokasi Azure Anda ke titik akhir, dan autentikasi klien dengan kunci Anda.
client = AnomalyDetectorClient(AzureKeyCredential(SUBSCRIPTION_KEY), ANOMALY_DETECTOR_ENDPOINT)
Memuat data rangkaian waktu dari file
Unduh contoh data untuk mulai cepat ini dari GitHub:
- Di browser Anda, klik kanan Raw.
- Klik Simpan tautan sebagai.
- Simpan file ke direktori aplikasi Anda, sebagai file .csv.
Data rangkaian waktu ini diformat sebagai file .csv, dan akan dikirim ke API Detektor Anomali.
Muat file data Anda dengan metode read_csv()
pustaka Pandas, dan buat variabel daftar kosong untuk menyimpan seri data Anda. Iterasi melalui file, dan tambahkan data sebagai objek TimeSeriesPoint
. Objek ini akan berisi tanda waktu dan nilai numerik dari baris file data .csv Anda.
series = []
data_file = pd.read_csv(TIME_SERIES_DATA_PATH, header=None, encoding='utf-8', parse_dates=[0])
for index, row in data_file.iterrows():
series.append(TimeSeriesPoint(timestamp=row[0], value=row[1]))
Buat objek DetectRequest
dengan rangkaian waktu Anda, dan TimeGranularity
(atau periodisitas) poin datanya. Contohnya,TimeGranularity.daily
.
request = DetectRequest(series=series, granularity=TimeGranularity.daily)
Masukan deskripsi argumen: 'seri': diperlukan dalam permintaan. harus jenis array/list, dan memiliki lebih dari 12 poin serta tidak lebih dari 8640 poin. harus diurutkan berdasarkan timestamp dalam urutan naik dan tidak dapat menduplikasi timestamp. 'granularity': diperlukan dalam permintaan. hanya bisa menjadi salah satu dari yang berikut: ['harian', 'menit', 'per jam', 'mingguan', 'bulanan', 'tahunan', 'kedua']. 'customInterval': harus berupa integer > 0. 'period': harus berupa integer >= 0. 'maxAnomalyRatio': harus kurang dari 50% poin seri (0 < maxAnomalyRatio < 0.5). 'sensitivitas': harus bilangan bulat antara 0 dan 99.
Mendeteksi anomali di seluruh himpunan data
Hubungi API untuk mendeteksi anomali di seluruh data rangkaian waktu menggunakan metode detect_entire_series
klien. Simpan objek EntireDetectResponse yang dikembalikan. Iterasi melalui daftar is_anomaly
respons, dan cetak indeks nilai true
apa pun. Nilai-nilai ini sesuai dengan indeks poin data anomali, jika ada yang ditemukan.
print('Detecting anomalies in the entire time series.')
try:
response = client.detect_entire_series(request)
except AnomalyDetectorError as e:
print('Error code: {}'.format(e.error.code), 'Error message: {}'.format(e.error.message))
except Exception as e:
print(e)
if any(response.is_anomaly):
print('An anomaly was detected at index:')
for i, value in enumerate(response.is_anomaly):
if value:
print(i)
else:
print('No anomalies were detected in the time series.')
Mendeteksi status anomali poin data terbaru
Hubungi API Detektor Anomali untuk menentukan apakah poin data terbaru Anda adalah anomali menggunakan metode detect_last_point
klien, dan simpan objek LastDetectResponse
yang dikembalikan. Nilai is_anomaly
respons adalah boolean yang menentukan status anomali titik tersebut.
print('Detecting the anomaly status of the latest data point.')
try:
response = client.detect_last_point(request)
except AnomalyDetectorError as e:
print('Error code: {}'.format(e.error.code), 'Error message: {}'.format(e.error.message))
except Exception as e:
print(e)
if response.is_anomaly:
print('The latest point is detected as anomaly.')
else:
print('The latest point is not detected as anomaly.')
Mendeteksi titik perubahan dalam himpunan data
Hubungi API untuk mendeteksi titik perubahan dalam data rangkaian waktu menggunakan metode detect_change_point
klien. Simpan objek ChangePointDetectResponse
yang dikembalikan. Iterasi melalui daftar is_change_point
respons, dan cetak indeks nilai true
apa pun. Nilai-nilai ini sesuai dengan indeks titik perubahan tren, jika ada yang ditemukan.
print('Detecting change points in the entire time series.')
try:
response = client.detect_change_point(request)
except AnomalyDetectorError as e:
print('Error code: {}'.format(e.error.code), 'Error message: {}'.format(e.error.message))
except Exception as e:
print(e)
if any(response.is_change_point):
print('An change point was detected at index:')
for i, value in enumerate(response.is_change_point):
if value:
print(i)
else:
print('No change point were detected in the time series.')
Menjalankan aplikasi
Jalankan aplikasi dengan perintah python
dan nama file Anda.
Membersihkan sumber daya
Jika ingin membersihkan dan menghapus langganan Cognitive Services, 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:
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 - Membuat langganan gratis
- Setelah Anda berlangganan 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 akan memerlukan alamat kunci dan titik akhir dari sumber daya yang Anda buat untuk menggunakan REST API.
Anda bisa menggunakan tingkat harga gratis (
F0
) untuk mencoba layanan, lalu meningkatkan ke tingkat berbayar untuk produksi.
- Anda akan memerlukan alamat kunci dan titik akhir dari sumber daya yang Anda buat untuk menggunakan REST API.
Anda bisa menggunakan tingkat harga gratis (
Deteksi anomali seluruh seri
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 -X POST "https://{endpointresourcename.cognitive.microsoft.com}/anomalydetector/v1.0/timeseries/entire/detect"
-H "Content-Type: application/json"
-H "Ocp-Apim-Subscription-Key: {subscription key}"
-d "@{path_to_file.json}"
Misalnya dengan semua nilai yang diisi:
curl -v -X POST "https://my-resource-name.cognitiveservices.azure.com/anomalydetector/v1.0/timeseries/entire/detect" -H "Content-Type: application/json" -H "Ocp-Apim-Subscription-Key:1111112222222ed333333ab333333333" -d "@test.json"
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 ingin membersihkan dan menghapus langganan Cognitive Services, 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: