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.

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:

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.

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:

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:

  1. Di browser Anda, klik kanan Raw.
  2. Klik Simpan tautan sebagai.
  3. 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:

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.

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:

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:

  1. Di browser Anda, klik kanan Raw.
  2. Klik Simpan tautan sebagai.
  3. 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:

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.

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:

Tutorial: