Поделиться через


Краткое руководство. Использование клиентской библиотеки univariate Детектор аномалий

Внимание

Начиная с 20 сентября 2023 г. вы не сможете создавать новые Детектор аномалий ресурсы. Служба Детектор аномалий отменяется 1 октября 2026 года.

Справочная документация по библиотеке исходного кода библиотеки |(NuGet) |Найти пример кода | на GitHub

Приступите к работе с клиентской библиотекой Детектора аномалий для C#. Выполните следующие действия, чтобы установить пакет и приступить к использованию алгоритмов, предоставляемых службой. Служба Детектора аномалий позволяет находить аномалии в данных временных рядов, автоматически применяя для них наиболее подходящие модели, независимо от отрасли, сценария или объема данных.

Клиентскую библиотеку Детектора аномалий для C# можно использовать для следующих задач.

  • обнаружение аномалий в наборе данных временных рядов с использованием пакетного запроса;
  • Обнаружение состояния аномалии последней точки данных во временном ряду.
  • обнаружение точек изменения тенденций в наборе данных.

Необходимые компоненты

  • подписка Azure — создайте бесплатную учетную запись.
  • Текущая версия .NET Core.
  • После получения подписки Azure создайте ресурс Детектор аномалий в портал Azure, чтобы получить ключ и конечную точку. Дождитесь, пока закончится развертывание, и нажмите кнопку Перейти к ресурсу. Используйте бесплатную ценовую категорию (F0), чтобы опробовать службу, а затем выполните обновление до платного уровня для рабочей среды.

Настройка

Создание приложения .NET Core

В окне консоли (cmd, PowerShell или Bash) выполните команду dotnet new, чтобы создать консольное приложение с именем anomaly-detector-quickstart. Эта команда создает простой проект Hello World с одним исходным файлом C#: Program.cs.

dotnet new console -n anomaly-detector-quickstart

Измените каталог на созданную папку приложения. Чтобы создать приложение, выполните следующую команду:

dotnet build

Выходные данные сборки не должны содержать предупреждений или ошибок.

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

Установка клиентской библиотеки

В каталоге приложения установите клиентскую библиотеку Детектора аномалий для .NET с помощью следующей команды:

dotnet add package Azure.AI.AnomalyDetector --prerelease

Получение ключа и конечной точки

Чтобы успешно вызвать службу Детектор аномалий, вам потребуется следующее:

Имя переменной Значение
ANOMALY_DETECTOR_ENDPOINT Это значение можно найти в разделе Ключи и конечная точка при просмотре ресурса на портале Azure. Пример конечной точки: https://YOUR_RESOURCE_NAME.cognitiveservices.azure.com/
ANOMALY_DETECTOR_API_KEY Значение ключа API можно найти в разделе "Ключи и конечная точка" при изучении ресурса из портал Azure. Вы можете использовать KEY1 или KEY2.
DATA_PATH В этом кратком руководстве используется request-data.csv файл, который можно скачать из примера данных GitHub. Пример пути: c:\\test\\request-data.csv

Перейдите к своему ресурсу на портале Azure. Конечную точку и ключи можно найти в разделе Управление ресурсами. Скопируйте конечную точку и ключ доступа, так как они потребуются для проверки подлинности вызовов API. Вы можете использовать KEY1 или KEY2. Наличие двух ключей позволяет безопасно менять и повторно создавать ключи без прерывания работы службы.

Создание переменной среды

Создайте и назначьте переменные постоянной среды для ключа и конечной точки.

Внимание

Если вы используете ключ API, сохраните его в другом месте, например в Azure Key Vault. Не включайте ключ API непосредственно в код и никогда не публикуйте его.

Дополнительные сведения о безопасности служб ИИ см. в статье "Проверка подлинности запросов к службам ИИ Azure".

setx ANOMALY_DETECTOR_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx ANOMALY_DETECTOR_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"

Загрузка примера данных

В этом кратком руководстве используется request-data.csv файл, который можно скачать из примера данных GitHub

Вы также можете скачать примеры данных, выполнив следующие действия:

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


Запустите приложение, выполнив следующую команду:

dotnet run program.cs

Выходные данные

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 детализацией (или периодичностью) точек данных. Затем мы вызываем метод клиента DetectEntireSeriesAsync с DetectRequest объектом и ожидаем ответа в качестве EntireDetectResponse объекта. Затем мы выполните итерацию по значениям ответа IsAnomaly и распечатаем все, которые являются истинными. Эти значения соответствуют индексу аномальных точек данных, если они были найдены.

Очистка ресурсов

Если вы хотите очистить и удалить ресурс Детектор аномалий, можно удалить ресурс или группу ресурсов. При удалении группы ресурсов также удаляются все связанные с ней ресурсы. Вы также можете рассмотреть возможность удаления созданных переменных среды, если вы больше не планируете их использовать.

Пакет исходного кода библиотеки библиотеки справочника по библиотеке |(npm) |Найти пример кода | на GitHub

Приступите к работе с клиентской библиотекой Детектора аномалий для JavaScript. Выполните следующие действия, чтобы установить пакет и начать использовать алгоритмы, предоставляемые службой. Служба Детектор аномалий позволяет находить аномалии в данных временных рядов, автоматически используя оптимальную модель в ней независимо от отрасли, сценария или объема данных.

Клиентскую библиотеку Детектора аномалий для JavaScript можно использовать для таких задач:

  • обнаружение аномалий в наборе данных временных рядов с использованием пакетного запроса;
  • Обнаружение состояния аномалии последней точки данных во временном ряду.
  • обнаружение точек изменения тенденций в наборе данных.

Необходимые компоненты

  • подписка Azure — создайте бесплатную учетную запись.
  • Текущая версия Node.js
  • После получения подписки Azure создайте ресурс Детектор аномалий в портал Azure, чтобы получить ключ и конечную точку. Дождитесь, пока закончится развертывание, и нажмите кнопку Перейти к ресурсу. Используйте бесплатную ценовую категорию (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"
  }
}

Установка клиентской библиотеки

Установите необходимые пакеты npm, выполнив следующую команду из того же каталога, что и файл package.json:

npm install

Получение ключа и конечной точки

Чтобы успешно вызвать службу Детектор аномалий, вам потребуется следующее:

Имя переменной Значение
ANOMALY_DETECTOR_ENDPOINT Это значение можно найти в разделе Ключи и конечная точка при просмотре ресурса на портале Azure. Пример конечной точки: https://YOUR_RESOURCE_NAME.cognitiveservices.azure.com/
ANOMALY_DETECTOR_API_KEY Значение ключа API можно найти в разделе "Ключи и конечная точка" при изучении ресурса из портал Azure. Вы можете использовать KEY1 или KEY2.
datapath В этом кратком руководстве используется request-data.csv файл, который можно скачать из примера данных GitHub.

Перейдите к своему ресурсу на портале Azure. Конечную точку и ключи можно найти в разделе Управление ресурсами. Скопируйте конечную точку и ключ доступа, так как они потребуются для проверки подлинности вызовов API. Вы можете использовать KEY1 или KEY2. Наличие двух ключей позволяет безопасно менять и повторно создавать ключи без прерывания работы службы.

Создание переменной среды

Создайте и назначьте переменные постоянной среды для ключа и конечной точки.

Внимание

Если вы используете ключ API, сохраните его в другом месте, например в Azure Key Vault. Не включайте ключ API непосредственно в код и никогда не публикуйте его.

Дополнительные сведения о безопасности служб ИИ см. в статье "Проверка подлинности запросов к службам ИИ Azure".

setx ANOMALY_DETECTOR_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx ANOMALY_DETECTOR_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"

Загрузка примера данных

В этом кратком руководстве используется request-data.csv файл, который можно скачать из примера данных GitHub

Вы также можете скачать примеры данных, выполнив следующие действия:

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

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

Выполнение приложения

Запустите приложение, выполнив команду node для файла quickstart.

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

Расшифровка результатов

В приведенном выше коде мы вызываем API Детектор аномалий для обнаружения аномалий через весь временный ряд в виде пакета с помощью метода detectEntireSeries() клиента. Мы храним возвращенный объект AnomalyDetectorDetectEntireSeriesResponse . Затем мы перебираем список ответов isAnomaly и печатаем индекс любых true значений. Эти значения соответствуют индексу аномальных точек данных, если они были найдены.

Очистка ресурсов

Если вы хотите очистить и удалить ресурс Детектор аномалий, можно удалить ресурс или группу ресурсов. При удалении группы ресурсов также удаляются все связанные с ней ресурсы. Вы также можете рассмотреть возможность удаления созданных переменных среды, если вы больше не планируете их использовать.

Справочная документация по библиотеке |Исходный код библиотеки | Пакет (PyPi) |Поиск примера кода на GitHub

Приступите к работе с клиентской библиотекой Детектора аномалий для Python. Выполните следующие действия, чтобы установить пакет и приступить к использованию алгоритмов, предоставляемых службой. Служба Детектора аномалий позволяет находить аномалии в данных временных рядов, автоматически применяя для них наиболее подходящие модели, независимо от отрасли, сценария или объема данных.

Клиентскую библиотеку Детектора аномалий для Python можно использовать для таких задач:

  • обнаружение аномалий в наборе данных временных рядов с использованием пакетного запроса;
  • Обнаружение состояния аномалии последней точки данных во временном ряду.
  • обнаружение точек изменения тенденций в наборе данных.

Необходимые компоненты

Настройка

Установите клиентскую библиотеку. Клиентскую библиотеку можно установить с помощью следующей команды:

pip install --upgrade azure.ai.anomalydetector

Получение ключа и конечной точки

Чтобы успешно вызвать службу Детектор аномалий, вам потребуется следующее:

Имя переменной Значение
ANOMALY_DETECTOR_ENDPOINT Это значение можно найти в разделе Ключи и конечная точка при просмотре ресурса на портале Azure. Пример конечной точки: https://YOUR_RESOURCE_NAME.cognitiveservices.azure.com/
ANOMALY_DETECTOR_API_KEY Значение ключа API можно найти в разделе "Ключи и конечная точка" при изучении ресурса из портал Azure. Вы можете использовать KEY1 или KEY2.
DATA_PATH В этом кратком руководстве используется request-data.csv файл, который можно скачать из примера данных GitHub. Пример пути: c:\\test\\request-data.csv

Перейдите к своему ресурсу на портале Azure. Конечную точку и ключи можно найти в разделе Управление ресурсами. Скопируйте конечную точку и ключ доступа, так как они потребуются для проверки подлинности вызовов API. Вы можете использовать KEY1 или KEY2. Наличие двух ключей позволяет безопасно менять и повторно создавать ключи без прерывания работы службы.

Создание переменной среды

Создайте и назначьте переменные постоянной среды для ключа и конечной точки.

Внимание

Если вы используете ключ API, сохраните его в другом месте, например в Azure Key Vault. Не включайте ключ API непосредственно в код и никогда не публикуйте его.

Дополнительные сведения о безопасности служб ИИ см. в статье "Проверка подлинности запросов к службам ИИ Azure".

setx ANOMALY_DETECTOR_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx ANOMALY_DETECTOR_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"

Загрузка примера данных

В этом кратком руководстве используется request-data.csv файл, который можно скачать из примера данных GitHub

Вы также можете скачать примеры данных, выполнив следующие действия:

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. Создайте файл Python с именем quickstart.py. Затем откройте его в предпочитаемом редакторе или интегрированной среде разработки.

  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.

  3. Запустите приложение, выполнив команду python для файла quickstart.

    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

Расшифровка результатов

В приведенном выше коде мы дважды вызываем API Детектор аномалий. Первый вызов проверяет точки изменения тренда в нашем примере ряда данных с detect_change_point помощью метода. Этот вызов возвращает ChangePointDetectResponse то, что мы храним в переменной, которую мы назвали change_point_request. Затем мы выполните итерацию по списку ответов is_change_point и распечатаем индекс любых значений с логическим trueзначением.

Второй вызов проверяет весь пример ряда данных для аномалий с помощью detect_entire_series метода. Этот вызов возвращает EntireDetectResponse то, что мы храним в переменной, которую мы назвали anomaly_response. Мы выполните итерацию по списку ответа 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.

  3. Запустите приложение, выполнив команду python для файла quickstart.

    python quickstart.py
    

Выходные данные

В этом примере кода мы добавили библиотеку matplotlib , чтобы позволить нам визуализировать и легко различать обычные точки данных от точек изменений и аномалий. Точки изменения представлены голубыми квадратами, аномалии являются красными треугольниками, а обычные точки данных — зелеными кругами. Даты преобразуются в числа с помощью matplotlibметода 's date2num ' для предоставления понятных для диаграмм ось y диаграмм.

Снимок экрана: результаты с индексами аномалий и точек изменения на точечной диаграмме. Различные фигуры и цвета используются для различных типов данных.

Очистка ресурсов

Если вы хотите очистить и удалить ресурс Детектор аномалий, можно удалить ресурс или группу ресурсов. При удалении группы ресурсов также удаляются все связанные с ней ресурсы. Вы также можете рассмотреть возможность удаления созданных переменных среды, если вы больше не планируете их использовать.

В этом кратком руководстве вы узнаете, как обнаруживать аномалии в пакете данных временных рядов, используя службу Детектора аномалий и cURL.

Общие сведения о концепциях Детектора аномалий см. в этом обзоре.

Необходимые компоненты

  • подписка Azure — создайте бесплатную учетную запись.
  • После получения подписки Azure создайте ресурс Детектор аномалий в портал Azure, чтобы получить ключ и конечную точку. Дождитесь, пока закончится развертывание, и нажмите кнопку Перейти к ресурсу. Используйте бесплатную ценовую категорию (F0), чтобы опробовать службу, а затем выполните обновление до платного уровня для рабочей среды.
  • Допустимый JSON-файл данных временных рядов для проверки аномалий. Если у вас нет собственного файла, можно создать файл sample.json из примера текста запроса.

Получение ключа и конечной точки

Чтобы успешно вызвать службу Детектор аномалий, вам потребуется следующее:

Имя переменной Значение
ANOMALY_DETECTOR_ENDPOINT Это значение можно найти в разделе Ключи и конечная точка при просмотре ресурса на портале Azure. Пример конечной точки: https://YOUR_RESOURCE_NAME.cognitiveservices.azure.com/
ANOMALY_DETECTOR_API_KEY Значение ключа API можно найти в разделе "Ключи и конечная точка" при изучении ресурса из портал Azure. Вы можете использовать KEY1 или KEY2.

Перейдите к своему ресурсу на портале Azure. Конечную точку и ключи можно найти в разделе Управление ресурсами. Скопируйте конечную точку и ключ доступа, так как они потребуются для проверки подлинности вызовов API. Вы можете использовать KEY1 или KEY2. Наличие двух ключей позволяет безопасно менять и повторно создавать ключи без прерывания работы службы.

Создание переменной среды

Создайте и назначьте переменные постоянной среды для ключа и конечной точки.

Внимание

Если вы используете ключ API, сохраните его в другом месте, например в Azure Key Vault. Не включайте ключ API непосредственно в код и никогда не публикуйте его.

Дополнительные сведения о безопасности служб ИИ см. в статье "Проверка подлинности запросов к службам ИИ Azure".

setx ANOMALY_DETECTOR_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx ANOMALY_DETECTOR_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

Обнаружение аномалий

В командной строке выполните приведенную ниже команду. Вам потребуется вставить следующие значения в команду.

  • Ключ подписки на службу Детектора аномалий.
  • Адрес конечной точки Детектора аномалий.
  • Допустимый 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" 

Пример полной команды в виде одной строки:

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"

Кроме того, если вы выполняете команду cURL из оболочки Bash, команда будет немного отличаться:

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
}

Дополнительные сведения см. в справочнике по REST API обнаружения аномалий.

Очистка ресурсов

Если вы хотите очистить и удалить подписку на службы искусственного интеллекта Azure, можно удалить ресурс или группу ресурсов. При этом удаляются все ресурсы, связанные с этой группой ресурсов.

Следующие шаги

Основные понятия:

Руководства.