クイックスタート: Univariate Anomaly Detector クライアント ライブラリを使用する

重要

2023 年 9 月 20 日以降は、新しい Anomaly Detector リソースを作成できなくなります。 Anomaly Detector サービスは、2026 年 10 月 1 日に廃止されます。

ライブラリのリファレンス ドキュメント |ライブラリのソース コード | パッケージ (NuGet) |GitHub でサンプル コードを検索する

C# 用 Anomaly Detector クライアント ライブラリを使ってみます。 サービスによって提供されるアルゴリズムを使用してパッケージをインストールするには、次の手順に従います。 Anomaly Detector サービスにより、業界、シナリオ、データ量に関係なく、最適なモデルを自動的に使用することで、時系列データ内の異常を検出できます。

.C# 用 Anomaly Detector クライアント ライブラリは次の目的で使用します。

  • バッチ要求として、時系列データセット全体で異常を検出する
  • 時系列で最新のデータ ポイントの異常状態を検出する
  • データセット内の傾向変化点を検出する。

前提条件

  • Azure サブスクリプション - 無料アカウントを作成します
  • 最新バージョンの .NET Core
  • Azure サブスクリプションを入手したら、Azure portal で Anomaly Detector リソースを作成し、キーとエンドポイントを取得します。 デプロイされるまで待ち、 [リソースに移動] ボタンを選択します。 Free 価格レベル (F0) を使用してサービスを試用し、後から運用環境用の有料レベルにアップグレードすることができます。

設定

新しい .NET Core アプリを作成する

コンソール ウィンドウ (cmd、PowerShell、Bash など) で、dotnet new コマンドを使用し、anomaly-detector-quickstart という名前で新しいコンソール アプリを作成します。 このコマンドにより、次の C# ソース ファイルを 1 つ使用する単純な "Hello World" プロジェクトが作成されます: Program.cs

dotnet new console -n anomaly-detector-quickstart

新しく作成されたアプリ フォルダーにディレクトリを変更します。 次を使用してアプリケーションをビルドできます。

dotnet build

ビルドの出力に警告やエラーが含まれないようにする必要があります。

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

クライアント ライブラリをインストールする

次のコマンドを使用して、アプリケーション ディレクトリ内に .NET 用 Anomaly Detector クライアント ライブラリをインストールします。

dotnet add package Azure.AI.AnomalyDetector --prerelease

キーとエンドポイントを取得する

Anomaly Detector サービスに対する呼び出しを正しく行うには、次の値が必要です。

変数名
ANOMALY_DETECTOR_ENDPOINT この値は、Azure portal からリソースを確認する際に、 [Keys & Endpoint](キーとエンドポイント) セクションで確認することができます。 エンドポイントの例: https://YOUR_RESOURCE_NAME.cognitiveservices.azure.com/
ANOMALY_DETECTOR_API_KEY API キーの値は、Azure portal でリソースを調べるときに、[Keys & Endpoint] (キーとエンドポイント) セクションで確認できます。 KEY1 または KEY2 を使用できます。
DATA_PATH このクイックスタートでは、GitHub のサンプル データからダウンロードできる request-data.csv ファイルを使います。 例のパス: c:\\test\\request-data.csv

Azure portal でリソースに移動します。 [エンドポイントとキー][リソース管理] セクションにあります。 エンドポイントとアクセス キーをコピーします。これらは、API 呼び出しを認証するために両方とも必要です。 KEY1 または KEY2 を使用できます。 常に 2 つのキーを用意しておくと、サービスを中断させることなく、キーのローテーションと再生成を安全に行うことができます。

環境変数を作成する

キーとエンドポイントの永続的な環境変数を作成して割り当てます。

setx ANOMALY_DETECTOR_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx ANOMALY_DETECTOR_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"

サンプル データをダウンロードする

このクイックスタートでは、GitHub のサンプル データからダウンロードできる request-data.csv ファイルを使います

次を実行してサンプル データをダウンロードすることもできます。

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

異常を検出する

プロジェクト ディレクトリから program.cs ファイルを開いて、以下のコードに置き換えます。

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


重要

運用環境では、Azure Key Vault などの資格情報を格納してアクセスする安全な方法を使用します。 資格情報のセキュリティについて詳しくは、Azure AI サービスのセキュリティに関する記事をご覧ください。

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

コードの詳細

結果を理解する

上記のコードでは、サンプル データが読み取られて、DetectRequest オブジェクトに変換されます。 ファイル パスを指定して File.ReadAllLines を呼び出し、TimeSeriesPoint オブジェクトのリストを作成して、改行文字をすべて削除します。 値を抽出し、その数値からタイムスタンプを分離して、それらを新しい TimeSeriesPoint オブジェクトに追加します。 DetectRequest オブジェクトは一連のデータ ポイントで構成されており、データ ポイントの細分性 (つまり周期性) は TimeGranularity.Daily です。 次に、DetectRequest オブジェクトを使ってクライアントの DetectEntireSeriesAsync メソッドを呼び出し、EntireDetectResponse オブジェクトとしての応答を待機します。 次に、応答の IsAnomaly の値を反復処理し、true であるものをすべて出力します。 これらの値は、異常なデータ ポイントが見つかった場合、そのインデックスに対応します。

リソースをクリーンアップする

Anomaly Detector リソースをクリーンアップして削除したい場合は、リソースまたはリソース グループを削除できます。 リソース グループを削除すると、それに関連付けられている他のリソースも削除されます。 また、作成した環境変数を使用しない場合は、それらの削除を検討することもできます。

ライブラリのリファレンス ドキュメント |ライブラリのソース コード | パッケージ (npm) |GitHub でサンプル コードを検索する

JavaScript 用 Anomaly Detector クライアント ライブラリを使ってみます。 これらの手順に従ってパッケージをインストールすれば、サービスによって提供されるアルゴリズムが使用できるようになります。 Anomaly Detector サービスにより、業界、シナリオ、データ量に関係なく、最適なモデルを自動的に使用することで、時系列データ内の異常を検出できます。

JavaScript 用 Anomaly Detector クライアント ライブラリは、次の目的で使用することができます。

  • バッチ要求として、時系列データセット全体で異常を検出する
  • 時系列で最新のデータ ポイントの異常状態を検出する
  • データセット内の傾向変化点を検出する。

前提条件

  • Azure サブスクリプション - 無料アカウントを作成します
  • 最新バージョンの Node.js
  • Azure サブスクリプションを入手したら、Azure portal で Anomaly Detector リソースを作成し、キーとエンドポイントを取得します。 デプロイされるまで待ち、 [リソースに移動] ボタンを選択します。
    • 対象のアプリケーションを Anomaly Detector API に接続するには、作成したリソースのキーとエンドポイントが必要です。 キーとエンドポイントを使って環境変数を作成します。 Free 価格レベル (F0) を使用してサービスを試用し、後から運用環境用の有料レベルにアップグレードすることができます。

設定

新しい Node.js アプリケーションを作成する

コンソール ウィンドウ (cmd、PowerShell、Bash など) で、ご利用のアプリ用に新しいディレクトリを作成し、そこに移動します。

mkdir myapp && cd myapp

次の内容を持つ新しいファイル package.json を作成します。

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

クライアント ライブラリをインストールする

package.json ファイルと同じディレクトリから次のように実行して、必要な npm パッケージをインストールします。

npm install

キーとエンドポイントを取得する

Anomaly Detector サービスに対する呼び出しを正しく行うには、次の値が必要です。

変数名
ANOMALY_DETECTOR_ENDPOINT この値は、Azure portal からリソースを確認する際に、 [Keys & Endpoint](キーとエンドポイント) セクションで確認することができます。 エンドポイントの例: https://YOUR_RESOURCE_NAME.cognitiveservices.azure.com/
ANOMALY_DETECTOR_API_KEY API キーの値は、Azure portal でリソースを調べるときに、[Keys & Endpoint] (キーとエンドポイント) セクションで確認できます。 KEY1 または KEY2 を使用できます。
datapath このクイックスタートでは、GitHub のサンプル データからダウンロードできる request-data.csv ファイルを使います。

Azure portal でリソースに移動します。 [エンドポイントとキー][リソース管理] セクションにあります。 エンドポイントとアクセス キーをコピーします。これらは、API 呼び出しを認証するために両方とも必要です。 KEY1 または KEY2 を使用できます。 常に 2 つのキーを用意しておくと、サービスを中断させることなく、キーのローテーションと再生成を安全に行うことができます。

環境変数を作成する

キーとエンドポイントの永続的な環境変数を作成して割り当てます。

setx ANOMALY_DETECTOR_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx ANOMALY_DETECTOR_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"

サンプル データをダウンロードする

このクイックスタートでは、GitHub のサンプル データからダウンロードできる request-data.csv ファイルを使います

次を実行してサンプル データをダウンロードすることもできます。

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

異常を検出する

index.js という名前のファイルを作成し、次のコードに置き換えます。

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 };

アプリケーションの実行

クイック スタート ファイルで node コマンドを使用して、アプリケーションを実行します。

node index.js

出力

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

結果を理解する

上記のコードでは、Anomaly Detector API を呼び出し、クライアントの detectEntireSeries() メソッドを使って、バッチとして時系列全体で異常を検出します。 返された AnomalyDetectorDetectEntireSeriesResponse オブジェクトを格納します。 次に、応答の isAnomaly リストを反復処理して、すべての true 値のインデックスを出力します。 これらの値は、異常なデータ ポイントが見つかった場合、そのインデックスに対応します。

リソースをクリーンアップする

Anomaly Detector リソースをクリーンアップして削除したい場合は、リソースまたはリソース グループを削除できます。 リソース グループを削除すると、それに関連付けられている他のリソースも削除されます。 また、作成した環境変数を使用しない場合は、それらの削除を検討することもできます。

ライブラリのリファレンス ドキュメント |ライブラリのソース コード | パッケージ (PyPi) |GitHub でサンプル コードを検索する

Python 用 Anomaly Detector クライアント ライブラリを使ってみます。 これらの手順に従ってパッケージをインストールすれば、サービスによって提供されるアルゴリズムが使用できるようになります。 Anomaly Detector サービスにより、業界、シナリオ、データ量に関係なく、最適なモデルを自動的に使用することで、時系列データ内の異常を検出できます。

Python 用 Anomaly Detector クライアント ライブラリは、次の目的で使用することができます。

  • バッチ要求として、時系列データセット全体で異常を検出する
  • 時系列で最新のデータ ポイントの異常状態を検出する
  • データセット内の傾向変化点を検出する。

前提条件

設定

クライアント ライブラリをインストールします。 次のようにして、クライアント ライブラリをインストールできます。

pip install --upgrade azure.ai.anomalydetector

キーとエンドポイントを取得する

Anomaly Detector サービスに対する呼び出しを正しく行うには、次の値が必要です。

変数名
ANOMALY_DETECTOR_ENDPOINT この値は、Azure portal からリソースを確認する際に、 [Keys & Endpoint](キーとエンドポイント) セクションで確認することができます。 エンドポイントの例: https://YOUR_RESOURCE_NAME.cognitiveservices.azure.com/
ANOMALY_DETECTOR_API_KEY API キーの値は、Azure portal でリソースを調べるときに、[Keys & Endpoint] (キーとエンドポイント) セクションで確認できます。 KEY1 または KEY2 を使用できます。
DATA_PATH このクイックスタートでは、GitHub のサンプル データからダウンロードできる request-data.csv ファイルを使います。 例のパス: c:\\test\\request-data.csv

Azure portal でリソースに移動します。 [エンドポイントとキー][リソース管理] セクションにあります。 エンドポイントとアクセス キーをコピーします。これらは、API 呼び出しを認証するために両方とも必要です。 KEY1 または KEY2 を使用できます。 常に 2 つのキーを用意しておくと、サービスを中断させることなく、キーのローテーションと再生成を安全に行うことができます。

環境変数を作成する

キーとエンドポイントの永続的な環境変数を作成して割り当てます。

setx ANOMALY_DETECTOR_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx ANOMALY_DETECTOR_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"

サンプル データをダウンロードする

このクイックスタートでは、GitHub のサンプル データからダウンロードできる request-data.csv ファイルを使います

次を実行してサンプル データをダウンロードすることもできます。

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

異常を検出する

  1. quickstart.py という名前の新しい Python ファイルを作成します。 次に、任意のエディターまたは IDE で開きます。

  2. quickstart.py の内容を次のコードに置き換えます。 キー、エンドポイント、時系列データ パスの環境変数名を追加するようにコードを変更します。

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

    重要

    運用環境では、Azure Key Vault などの資格情報を格納してアクセスする安全な方法を使用します。 資格情報のセキュリティについて詳しくは、Azure AI サービスのセキュリティに関する記事をご覧ください。

  3. python コマンドでクイックスタート ファイルを指定してアプリケーションを実行します。

    python quickstart.py
    

出力

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

結果を理解する

上のコードでは、Anomaly Detector API を 2 回呼び出しています。 1 回目の呼び出しでは、detect_change_point メソッドを使ってサンプル データ系列全体で傾向の変化点を調べます。 この呼び出しからは、change_point_request という名前を付けた変数に格納されている ChangePointDetectResponse が返されます。 次に、応答の is_change_point リストを反復処理して、ブール値 true であるすべての値のインデックスを出力します。

2 回目の呼び出しでは、detect_entire_series メソッドを使ってサンプル データ系列全体で異常をチェックします。 この呼び出しからは、anomaly_response という名前を付けた変数に格納されている EntireDetectResponse が返されます。 応答の is_anomaly リストを反復処理して、ブール値 true であるすべての値のインデックスを出力します。 または、リアルタイム データでの異常検出にいっそう適した detect_last_point メソッドを使うこともできます。 詳しくは、ベスト プラクティス ガイドに関する記事をご覧ください。

結果を視覚化する

サンプル データ系列に関連する異常と変化点を表示するには、一般的なオープンソース ライブラリ matplotlib を使います。

  1. ライブラリをインストールする。

    pip install matplotlib
    
  2. quickstart.py ファイルを次のコードで変更します。

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

    重要

    運用環境では、Azure Key Vault などの資格情報を格納してアクセスする安全な方法を使用します。 資格情報のセキュリティについて詳しくは、Azure AI サービスのセキュリティに関する記事をご覧ください。

  3. python コマンドでクイックスタート ファイルを指定してアプリケーションを実行します。

    python quickstart.py
    

出力

このコード例では、通常のデータ ポイントと変化点や異常を視覚化し、それらを簡単に区別できるように、matplotlib ライブラリを追加しました。 変化点は青い四角形、異常は赤い三角形、通常のデータ ポイントは緑の円で表されます。 グラフの y 軸の値を見やすくするため、matplotlibdate2num メソッドを使って日付を数値に変換します。

Screenshot of results with indexes of anomalies and change points on a scatter plot. Different shapes and colors are used for different data types..

リソースをクリーンアップする

Anomaly Detector リソースをクリーンアップして削除したい場合は、リソースまたはリソース グループを削除できます。 リソース グループを削除すると、それに関連付けられている他のリソースも削除されます。 また、作成した環境変数を使用しない場合は、それらの削除を検討することもできます。

このクイックスタートでは、Anomaly Detector サービスと cURL を使用して、時系列データのバッチで異常を検出する方法について説明します。

Anomaly Detector の概念の概要については、概要に関する記事をご覧ください。

前提条件

  • Azure サブスクリプション - 無料アカウントを作成します
  • Azure サブスクリプションを入手したら、Azure portal で Anomaly Detector リソースを作成し、キーとエンドポイントを取得します。 デプロイされるまで待ち、 [リソースに移動] ボタンを選択します。 Free 価格レベル (F0) を使用してサービスを試用し、後から運用環境用の有料レベルにアップグレードすることができます。
  • 異常をテストする時系列データの有効な JSON ファイル。 独自のファイルがない場合は、要求本文のサンプルから sample.json ファイルを作成できます

キーとエンドポイントを取得する

Anomaly Detector サービスに対する呼び出しを正しく行うには、次の値が必要です。

変数名
ANOMALY_DETECTOR_ENDPOINT この値は、Azure portal からリソースを確認する際に、 [Keys & Endpoint](キーとエンドポイント) セクションで確認することができます。 エンドポイントの例: https://YOUR_RESOURCE_NAME.cognitiveservices.azure.com/
ANOMALY_DETECTOR_API_KEY API キーの値は、Azure portal でリソースを調べるときに、[Keys & Endpoint] (キーとエンドポイント) セクションで確認できます。 KEY1 または KEY2 を使用できます。

Azure portal でリソースに移動します。 [エンドポイントとキー][リソース管理] セクションにあります。 エンドポイントとアクセス キーをコピーします。これらは、API 呼び出しを認証するために両方とも必要です。 KEY1 または KEY2 を使用できます。 常に 2 つのキーを用意しておくと、サービスを中断させることなく、キーのローテーションと再生成を安全に行うことができます。

環境変数を作成する

キーとエンドポイントの永続的な環境変数を作成して割り当てます。

setx ANOMALY_DETECTOR_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx ANOMALY_DETECTOR_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

異常を検出する

コマンド プロンプトで、次のコマンドを実行します。 次の値をコマンドに挿入する必要があります。

  • Anomaly Detector サービスのサブスクリプション キー。
  • Anomaly Detector のエンドポイント アドレス。
  • 異常をテストする時系列データの有効な JSON ファイル。 独自のファイルがない場合は、要求本文のサンプルから sample.json ファイルを作成できます。
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" 

完全なコマンドを 1 行で示した例:

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"

または、Bash シェルから cURL コマンドを実行している場合は、コマンドが少し異なります。

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"

前提条件に示すサンプル データを使用した場合は、次の結果を含む応答 200 が返されます。

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

詳細については、Anomaly Detection REST リファレンスをご覧ください。

リソースをクリーンアップする

Azure AI サービス サブスクリプションをクリーンアップして削除したい場合は、リソースまたはリソース グループを削除することができます。 リソース グループを削除すると、そのリソース グループに関連付けられている他のリソースも削除されます。

次のステップ

概念:

チュートリアル: