Bagikan melalui


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

  1. Buat file Python baru yang disebut quickstart.py. Lalu buka file di editor atau IDE pilihan Anda.

  2. 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.

  3. Jalankan aplikasi dengan perintah python dalam file mulai cepat Anda

    python 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.

  1. Instal pustaka .

    pip install matplotlib
    
  2. 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.

  3. Jalankan aplikasi dengan perintah python dalam file mulai cepat Anda

    python 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 matplotlibmetode untuk date2num menyediakan nilai ramah grafik untuk bagan sumbu y.

Cuplikan layar hasil dengan indeks anomali dan titik perubahan pada plot sebar. Bentuk dan warna yang berbeda digunakan untuk jenis data yang berbeda..

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:

Tutorial: