Hızlı Başlangıç: Tek Değişkenli Anomali Algılayıcısı istemci kitaplığını kullanma

Kitaplık başvuru belgeleri |Kitaplık kaynak kodu | Paket (NuGet) |GitHub'da örnek kodu bulma

C# için Anomali Algılayıcısı istemci kitaplığını kullanmaya başlayın. Paketi yüklemek için bu adımları izleyin ve hizmet tarafından sağlanan algoritmaları kullanmaya başlayın. Anomali Algılayıcısı hizmeti, endüstri, senaryo veya veri hacmi ne olursa olsun zaman serisi verilerinizdeki anormallikleri otomatik olarak en uygun modelleri kullanarak bulmanızı sağlar.

C# için Anomali Algılayıcısı istemci kitaplığını kullanarak:

  • Zaman serisi veri kümenizdeki anomalileri toplu istek olarak algılama
  • Zaman serinizdeki en son veri noktasının anomali durumunu algılama
  • Veri kümenizdeki eğilim değişiklik noktalarını algılama.

Önkoşullar

  • Azure aboneliği - Ücretsiz bir abonelik oluşturun
  • .NET Core'un geçerli sürümü
  • Azure aboneliğinizi aldıktan sonra anahtarınızı ve uç noktanızı almak için Azure portal bir Anomali Algılayıcısı kaynağı oluşturun. Dağıtmasını bekleyin ve Kaynağa git düğmesini seçin. Ücretsiz fiyatlandırma katmanını (F0) kullanarak hizmeti deneyebilir ve daha sonra üretim için ücretli bir katmana yükseltebilirsiniz.

Kurulum

Yeni bir .NET Core uygulaması oluşturma

Konsol penceresinde (cmd, PowerShell veya Bash gibi) komutunu kullanarak dotnet new adlı anomaly-detector-quickstartyeni bir konsol uygulaması oluşturun. Bu komut, tek bir C# kaynak dosyasıyla basit bir "Merhaba Dünya" projesi oluşturur: Program.cs.

dotnet new console -n anomaly-detector-quickstart

Dizininizi yeni oluşturulan uygulama klasörüyle değiştirin. Uygulamayı şu şekilde oluşturabilirsiniz:

dotnet build

Derleme çıkışı hiçbir uyarı veya hata içermemelidir.

...
Build succeeded.
 0 Warning(s)
 0 Error(s)
...

İstemci kitaplığını yükleme

Uygulama dizininde aşağıdaki komutu kullanarak .NET için Anomali Algılayıcısı istemci kitaplığını yükleyin:

dotnet add package Azure.AI.AnomalyDetector --prerelease

Anahtar ve uç noktayı alma

Anomali Algılayıcısı hizmetine karşı başarılı bir şekilde çağrı yapmak için aşağıdaki değerlere ihtiyacınız olacaktır:

Değişken adı Değer
ANOMALY_DETECTOR_ENDPOINT Bu değer, Azure portal kaynağınızı incelerken Anahtarlar & Uç Noktası bölümünde bulunabilir. Örnek uç nokta: https://YOUR_RESOURCE_NAME.cognitiveservices.azure.com/
ANOMALY_DETECTOR_API_KEY API anahtar değeri, Azure portal kaynağınızı incelerken AnahtarLar & Uç Noktası bölümünde bulunabilir. KEY1 veya KEY2 kullanabilirsiniz.
DATA_PATH Bu hızlı başlangıçta request-data.csvGitHub örnek verilerimizden indirilebilen dosya kullanılmaktadır. Örnek yol: c:\\test\\request-data.csv

Azure portal kaynağınıza gidin. Uç Nokta ve AnahtarlarKaynak Yönetimi bölümünde bulunabilir. Hem API çağrılarınızın kimliğini doğrulamak için ihtiyaç duyacağınız için uç noktanızı ve erişim anahtarınızı kopyalayın. KEY1 veya KEY2 kullanabilirsiniz. Her zaman iki anahtara sahip olmak, hizmet kesintisine neden olmadan anahtarları güvenli bir şekilde döndürmenize ve yeniden oluşturmanıza olanak tanır.

Ortam değişkenlerini oluşturma

Anahtarınız ve uç noktanız için kalıcı ortam değişkenleri oluşturun ve atayın.

setx ANOMALY_DETECTOR_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx ANOMALY_DETECTOR_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"

Örnek verileri indirme

Bu hızlı başlangıçta request-data.csvGitHub örnek verilerimizden indirilebilen dosya kullanılmaktadır

Aşağıdakini çalıştırarak örnek verileri de indirebilirsiniz:

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

Anomalileri algılama

Proje dizininden program.cs dosyasını açın ve değerini aşağıdaki kodla değiştirin:

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.");
            }
        }
    }
}


Önemli

Üretim için Azure Key Vault gibi kimlik bilgilerinizi depolamanın ve bunlara erişmenin güvenli bir yolunu kullanın. Kimlik bilgisi güvenliği hakkında daha fazla bilgi için Azure AI hizmetleri güvenlik makalesine bakın.

dotnet run program.cs

Çıktı

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

Kod ayrıntıları

Sonuçlarınızı anlama

Yukarıdaki kodda örnek veriler okunur ve bir DetectRequest nesneye dönüştürülür. Dosya yolu ile çağrısı File.ReadAllLines yapıp nesnelerin listesini TimeSeriesPoint oluşturur ve yeni satır karakterlerini çıkarırız. Değerleri ayıklayın ve zaman damgasını sayısal değerinden ayırın ve bunları yeni TimeSeriesPoint bir nesneye ekleyin. DetectRequest nesnesi, veri noktalarının tanecikliği (veya dönemselliği) için olan TimeGranularity.Daily bir dizi veri noktasından oluşur. Daha sonra nesnesiyle DetectRequest istemcinin DetectEntireSeriesAsync yöntemini çağıracağız ve yanıtı bir EntireDetectResponse nesne olarak bekleyeceğiz. Ardından yanıtın IsAnomaly değerlerini yineler ve doğru olan değerleri yazdırırız. Bu değerler, varsa anormal veri noktalarının dizinine karşılık gelir.

Kaynakları temizleme

bir Anomali Algılayıcısı kaynağını temizlemek ve kaldırmak istiyorsanız, kaynağı veya kaynak grubunu silebilirsiniz. Kaynak grubunun silinmesi, kaynak grubuyla ilişkili diğer tüm kaynakları da siler. Artık kullanmayı düşünmüyorsanız, oluşturduğunuz ortam değişkenlerini silmeyi de düşünebilirsiniz.

Kitaplık başvuru belgeleri |Kitaplık kaynak kodu | Paket (npm) |GitHub'da örnek kodu bulma

JavaScript için Anomali Algılayıcısı istemci kitaplığını kullanmaya başlayın. Paketi yüklemek için bu adımları izleyin ve hizmet tarafından sağlanan algoritmaları kullanmaya başlayın. Anomali Algılayıcısı hizmeti, endüstri, senaryo veya veri hacmi ne olursa olsun zaman serisi verilerinizde en uygun modeli otomatik olarak kullanarak anormallikleri bulmanıza olanak tanır.

JavaScript için Anomali Algılayıcısı istemci kitaplığını kullanarak:

  • Zaman serisi veri kümenizdeki anomalileri toplu istek olarak algılama
  • Zaman serinizdeki en son veri noktasının anomali durumunu algılama
  • Veri kümenizdeki eğilim değişiklik noktalarını algılama.

Önkoşullar

  • Azure aboneliği - Ücretsiz bir abonelik oluşturun
  • Node.js'in geçerli sürümü
  • Azure aboneliğinizi aldıktan sonra anahtarınızı ve uç noktanızı almak için Azure portal bir Anomali Algılayıcısı kaynağı oluşturun. Dağıtmasını bekleyin ve Kaynağa git düğmesini seçin.
    • Uygulamanızı Anomali Algılayıcısı API'sine bağlamak için oluşturduğunuz kaynaktan anahtara ve uç noktaya ihtiyacınız olacaktır. Ortam değişkenleri oluşturmak için anahtarı ve uç noktayı kullanacaksınız. Ücretsiz fiyatlandırma katmanını (F0) kullanarak hizmeti deneyebilir ve daha sonra üretim için ücretli bir katmana yükseltebilirsiniz.

Kurulum

Yeni bir Node.js uygulaması oluşturma

Konsol penceresinde (cmd, PowerShell veya Bash gibi), uygulamanız için yeni bir dizin oluşturun ve bu dizine gidin.

mkdir myapp && cd myapp

Aşağıdaki içeriklere sahip bir package.json dosya oluşturun:

{
  "dependencies": {
    "@azure/ai-anomaly-detector": "next",
    "@azure-rest/ai-anomaly-detector": "next",
    "@azure/core-auth": "^1.3.0",
    "csv-parse": "^5.3.0"
  }
}

İstemci kitaplığını yükleme

Package.json dosyanızla aynı dizinden aşağıdakini çalıştırarak gerekli npm paketlerini yükleyin:

npm install

Anahtar ve uç noktayı alma

Anomali Algılayıcısı hizmetine karşı başarılı bir şekilde çağrı yapmak için aşağıdaki değerlere ihtiyacınız olacaktır:

Değişken adı Değer
ANOMALY_DETECTOR_ENDPOINT Bu değer, Azure portal kaynağınızı incelerken Anahtarlar & Uç Noktası bölümünde bulunabilir. Örnek uç nokta: https://YOUR_RESOURCE_NAME.cognitiveservices.azure.com/
ANOMALY_DETECTOR_API_KEY API anahtar değeri, Azure portal kaynağınızı incelerken AnahtarLar & Uç Noktası bölümünde bulunabilir. KEY1 veya KEY2 kullanabilirsiniz.
datapath Bu hızlı başlangıçta request-data.csvGitHub örnek verilerimizden indirilebilen dosya kullanılmaktadır.

Azure portal kaynağınıza gidin. Uç Nokta ve AnahtarlarKaynak Yönetimi bölümünde bulunabilir. API çağrılarınızın kimliğini doğrulamak için gerek duyacağınız uç noktanızı ve erişim anahtarınızı kopyalayın. KEY1 veya KEY2 kullanabilirsiniz. Her zaman iki anahtara sahip olmak, hizmet kesintisine neden olmadan anahtarları güvenli bir şekilde döndürmenize ve yeniden oluşturmanıza olanak tanır.

Ortam değişkenlerini oluşturma

Anahtarınız ve uç noktanız için kalıcı ortam değişkenleri oluşturun ve atayın.

setx ANOMALY_DETECTOR_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx ANOMALY_DETECTOR_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"

Örnek verileri indirme

Bu hızlı başlangıçta GitHub örnek verilerimizden indirilebilen dosya kullanılır request-data.csv

Aşağıdakini çalıştırarak örnek verileri de indirebilirsiniz:

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

Anomalileri algılama

adlı index.js bir dosya oluşturun ve öğesini aşağıdaki kodla değiştirin:

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");

// You will need to set this environment variables or edit the following values
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 };

Uygulamayı çalıştırma

Hızlı başlangıç dosyanızda komutunu kullanarak node uygulamayı çalıştırın.

node index.js

Çıktı

Anomalies were detected from the series at index:
3
18
21
22
23
24
25
28
29
30
31
32
35
44

Sonuçlarınızı anlama

Yukarıdaki kodda, istemcinin detectEntireSeries() yöntemiyle bir toplu iş olarak zaman serisinin tamamında anomalileri algılamak için Anomali Algılayıcısı API'sini çağırırız. Döndürülen AnomalyDetectorDetectEntireSeriesResponse nesnesini depolarız . Ardından yanıtın isAnomaly listesini yineler ve tüm true değerlerin dizinini yazdırırız. Bu değerler, varsa anormal veri noktalarının dizinine karşılık gelir.

Kaynakları temizleme

bir Anomali Algılayıcısı kaynağını temizlemek ve kaldırmak istiyorsanız, kaynağı veya kaynak grubunu silebilirsiniz. Kaynak grubunun silinmesi, kaynak grubuyla ilişkili diğer tüm kaynakları da siler. Artık kullanmayı düşünmüyorsanız, oluşturduğunuz ortam değişkenlerini silmeyi de düşünebilirsiniz.

Kitaplık başvuru belgeleri |Kitaplık kaynak kodu | Paket (PyPi) |GitHub'da örnek kodu bulma

Python için Anomali Algılayıcısı istemci kitaplığını kullanmaya başlayın. Paketi yüklemek ve hizmet tarafından sağlanan algoritmaları kullanmaya başlamak için bu adımları izleyin. Anomali Algılayıcısı hizmeti, endüstri, senaryo veya veri hacmi ne olursa olsun, zaman serisi verilerinizdeki anormallikleri otomatik olarak en uygun modelleri kullanarak bulmanızı sağlar.

Python için Anomali Algılayıcısı istemci kitaplığını kullanarak:

  • Toplu istek olarak zaman serisi veri kümenizdeki anomalileri algılama
  • Zaman serinizdeki en son veri noktasının anomali durumunu algılama
  • Veri kümenizdeki eğilim değişiklik noktalarını algılama.

Önkoşullar

  • Azure aboneliği - Ücretsiz bir abonelik oluşturun
  • Python 3.x
  • Pandas veri analizi kitaplığı
  • Azure aboneliğinizi aldıktan sonra anahtarınızı ve uç noktanızı almak için Azure portal bir Anomali Algılayıcısı kaynağı oluşturun. Dağıtmasını bekleyin ve Kaynağa git düğmesini seçin. Ücretsiz fiyatlandırma katmanını (F0) kullanarak hizmeti deneyebilir ve daha sonra üretim için ücretli bir katmana yükseltebilirsiniz.

Kurulum

İstemci kitaplığını yükleyin. İstemci kitaplığını şu şekilde yükleyebilirsiniz:

pip install --upgrade azure.ai.anomalydetector

Anahtar ve uç noktayı alma

Anomali Algılayıcısı hizmetinde başarılı bir şekilde çağrı yapmak için aşağıdaki değerlere ihtiyacınız olacaktır:

Değişken adı Değer
ANOMALY_DETECTOR_ENDPOINT Bu değer, Azure portal kaynağınızı incelerken Anahtarlar & Uç Noktası bölümünde bulunabilir. Örnek uç nokta: https://YOUR_RESOURCE_NAME.cognitiveservices.azure.com/
ANOMALY_DETECTOR_API_KEY API anahtarı değeri, Azure portal kaynağınızı incelerken Anahtarlar & Uç Noktası bölümünde bulunabilir. KEY1 veya KEY2 kullanabilirsiniz.
DATA_PATH Bu hızlı başlangıçta request-data.csvGitHub örnek verilerimizden indirilebilen dosya kullanılmaktadır. Örnek yol: c:\\test\\request-data.csv

Azure portal kaynağınıza gidin. Uç Nokta ve AnahtarlarKaynak Yönetimi bölümünde bulunabilir. API çağrılarınızın kimliğini doğrulamak için gerek duyacağınız uç noktanızı ve erişim anahtarınızı kopyalayın. KEY1 veya KEY2 kullanabilirsiniz. Her zaman iki anahtara sahip olmak, hizmet kesintisine neden olmadan anahtarları güvenli bir şekilde döndürmenize ve yeniden oluşturmanıza olanak tanır.

Ortam değişkenlerini oluşturma

Anahtarınız ve uç noktanız için kalıcı ortam değişkenleri oluşturun ve atayın.

setx ANOMALY_DETECTOR_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx ANOMALY_DETECTOR_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"

Örnek verileri indirme

Bu hızlı başlangıçta GitHub örnek verilerimizden indirilebilen dosya kullanılır request-data.csv

Aşağıdakini çalıştırarak örnek verileri de indirebilirsiniz:

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

Anomalileri algılama

  1. quickstart.py adlı yeni bir Python dosyası oluşturun. Ardından tercih ettiğiniz düzenleyicide veya IDE'de açın.

  2. quickstart.py içeriğini aşağıdaki kodla değiştirin. Anahtarınızın, uç noktanızın ve zaman serisi veri yolunun ortam değişkeni adlarını eklemek için kodu değiştirin:

    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))
    

    Önemli

    Üretim için Azure Key Vault gibi kimlik bilgilerinizi depolamanın ve bunlara erişmenin güvenli bir yolunu kullanın. Kimlik bilgisi güvenliği hakkında daha fazla bilgi için Azure AI hizmetleri güvenlik makalesine bakın.

  3. Hızlı başlangıç dosyanızda komutuyla python uygulamayı çalıştırma

    python quickstart.py
    

Çıktı

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

Sonuçlarınızı anlama

Yukarıdaki kodumuzda Anomali Algılayıcısı API'sini iki kez çağırırız. İlk çağrı, yöntemiyle detect_change_point örnek veri serimizdeki eğilim değişiklik noktalarını denetler. Bu çağrı, adlı change_point_requestdeğişkende ChangePointDetectResponse depoladığımız bir döndürür. Ardından yanıtın is_change_point listesinde yinelenir ve herhangi bir değerin dizinini boole değeriyle trueyazdırırız.

İkinci çağrı, yöntemini kullanarak örnek veri serisinin tamamında detect_entire_series anomalileri denetler. Bu çağrı, adlı anomaly_responsedeğişkende EntireDetectResponse depoladığımız bir döndürür. Yanıtın is_anomaly listesinde yinelemeler yapıyoruz ve herhangi bir değerin dizinini boole değeriyle trueyazdırıyoruz. Alternatif olarak, gerçek zamanlı verilerdeki anomalileri algılamak için daha uygun olan yöntemini kullanabilirdik detect_last_point . Daha fazla bilgi edinmek için en iyi yöntemler kılavuzuna başvurun.

Sonuçları görselleştirme

Anomalileri görselleştirmek ve örnek veri serisine göre noktaları değiştirmek için popüler açık kaynak kitaplık matplotlib'ini kullanacağız.

  1. Kitaplığı yükleyin.

    pip install matplotlib
    
  2. quickstart.py dosyanızı aşağıdaki kodla değiştirin:

    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
    
    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()
    

    Önemli

    Üretim için Azure Key Vault gibi kimlik bilgilerinizi depolamanın ve bunlara erişmenin güvenli bir yolunu kullanın. Kimlik bilgisi güvenliği hakkında daha fazla bilgi için Azure AI hizmetleri güvenlik makalesine bakın.

  3. Hızlı başlangıç dosyanızda komutuyla python uygulamayı çalıştırma

    python quickstart.py
    

Çıktı

Bu kod örneğinde, normal veri noktalarını görselleştirmemize ve değişiklik noktalarından matplotlib ve anomalilerden kolayca ayırt etmemize olanak sağlamak için kitaplığını ekledik. Değişiklik noktaları mavi karelerle, anomaliler kırmızı üçgenlerle ve normal veri noktaları yeşil dairelerle gösterilir. Tarihler, y eksenindeki grafikler için kolay grafik değerleri sağlamak üzere 's date2num yöntemi kullanılarak matplotlibsayılara dönüştürülür.

Dağılım grafiğinde anomali dizinleri ve değişiklik noktaları içeren sonuçların ekran görüntüsü. Farklı veri türleri için farklı şekiller ve renkler kullanılır..

Kaynakları temizleme

bir Anomali Algılayıcısı kaynağını temizlemek ve kaldırmak istiyorsanız, kaynağı veya kaynak grubunu silebilirsiniz. Kaynak grubunun silinmesi, kaynak grubuyla ilişkili diğer tüm kaynakları da siler. Artık kullanmayı düşünmüyorsanız, oluşturduğunuz ortam değişkenlerini silmeyi de düşünebilirsiniz.

Bu hızlı başlangıçta, Anomali Algılayıcısı hizmetini ve cURL'yi kullanarak bir dizi zaman serisi verisindeki anomalileri algılamayı öğreneceksiniz.

Anomali Algılayıcısı kavramlarına üst düzey bir bakış için genel bakış makalesine bakın.

Önkoşullar

  • Azure aboneliği - Ücretsiz bir abonelik oluşturun
  • Azure aboneliğinizi aldıktan sonra anahtarınızı ve uç noktanızı almak için Azure portal bir Anomali Algılayıcısı kaynağı oluşturun. Dağıtmasını bekleyin ve Kaynağa git düğmesini seçin. Ücretsiz fiyatlandırma katmanını (F0) kullanarak hizmeti deneyebilir ve daha sonra üretim için ücretli bir katmana yükseltebilirsiniz.
  • Anomalileri test etmek için geçerli bir zaman serisi veri JSON dosyası. Kendi dosyanız yoksa İstek gövdesi örneğinden bir sample.json dosyası oluşturabilirsiniz

Anahtar ve uç noktayı alma

Anomali Algılayıcısı hizmetine karşı başarılı bir şekilde çağrı yapmak için aşağıdaki değerlere ihtiyacınız olacaktır:

Değişken adı Değer
ANOMALY_DETECTOR_ENDPOINT Bu değer, Azure portal kaynağınızı incelerken Anahtarlar & Uç Noktası bölümünde bulunabilir. Örnek uç nokta: https://YOUR_RESOURCE_NAME.cognitiveservices.azure.com/
ANOMALY_DETECTOR_API_KEY API anahtar değeri, Azure portal kaynağınızı incelerken AnahtarLar & Uç Noktası bölümünde bulunabilir. KEY1 veya KEY2 kullanabilirsiniz.

Azure portal kaynağınıza gidin. Uç Nokta ve AnahtarlarKaynak Yönetimi bölümünde bulunabilir. Hem API çağrılarınızın kimliğini doğrulamak için ihtiyaç duyacağınız için uç noktanızı ve erişim anahtarınızı kopyalayın. KEY1 veya KEY2 kullanabilirsiniz. Her zaman iki anahtara sahip olmak, hizmet kesintisine neden olmadan anahtarları güvenli bir şekilde döndürmenize ve yeniden oluşturmanıza olanak tanır.

Ortam değişkenlerini oluşturma

Anahtarınız ve uç noktanız için kalıcı ortam değişkenleri oluşturun ve atayın.

setx ANOMALY_DETECTOR_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx ANOMALY_DETECTOR_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

Anomalileri algılama

Komut isteminde aşağıdaki komutu çalıştırın. Komutuna aşağıdaki değerleri eklemeniz gerekir.

  • Anomali algılayıcısı hizmet abonelik anahtarınız.
  • Anomali algılayıcısı uç nokta adresiniz.
  • Anomalileri test etmek için geçerli bir zaman serisi veri JSON dosyası. Kendi dosyanız yoksa İstek gövdesi örneğinden bir sample.json dosyası oluşturabilirsiniz.
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" 

Tek satır olarak tam komut örneği:

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"

Alternatif olarak, bash kabuğundan cURL komutunu çalıştırıyorsanız komutunuz biraz farklı olabilir:

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"

Önkoşullardan alınan örnek verileri kullandıysanız aşağıdaki sonuçları içeren bir yanıt 200 almanız gerekir:

{
  "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
}

Daha fazla bilgi için bkz. Anomali Algılama REST başvurusu.

Kaynakları temizleme

Azure AI hizmetleri aboneliğini temizlemek ve kaldırmak istiyorsanız, kaynağı veya kaynak grubunu silebilirsiniz. Kaynak grubunun silinmesi, kaynak grubuyla ilişkili diğer tüm kaynakları da siler.

Sonraki adımlar

Kavramlar:

Öğreticiler: