Guia de início rápido: usar a biblioteca de cliente do Univariate Anomaly Detetor

Importante

A partir de 20 de setembro de 2023, não poderá criar novos recursos do Detetor de Anomalias. O serviço de Detetores de Anomalias será retirado a 1 de outubro de 2026. Recomendamos migrar para Microsoft Fabric, que integra o projeto open-source microsoft/anomaly-detector, ou diretamente para o projeto open-source anomaly-detector.

Documentação de referência da bibliotecaCódigo-fonte da bibliotecaPackage (NuGet)Encontre o código de exemplo no GitHub

Introdução à biblioteca de cliente do Detetor de Anomalias para C#. Siga estas etapas para instalar o pacote e começar a usar os algoritmos fornecidos pelo serviço. O serviço Detetor de anomalias permite que você encontre anormalidades em seus dados de séries cronológicas usando automaticamente os modelos mais adequados neles, independentemente do setor, cenário ou volume de dados.

Use a biblioteca de cliente do Detetor de Anomalias para C# para:

  • Detete anomalias em todo o conjunto de dados de séries temporais, como uma solicitação em lote
  • Detetar o status de anomalia do ponto de dados mais recente em sua série temporal
  • Detete pontos de mudança de tendência em seu conjunto de dados.

Pré-requisitos

  • Uma subscrição Azure - Crie uma gratuitamente
  • A versão atual de .NET Core
  • Depois de teres a tua subscrição de Azure, criar um recurso de Detetor de Anomalias no portal de Azure para obter a tua chave e endpoint. Aguarde até que ele seja implantado e selecione o botão Ir para recurso. Você pode usar o nível de preço gratuito (F0) para experimentar o serviço e atualizar posteriormente para um nível pago para produção.

Configurar

Criar uma nova aplicação .NET Core

Em uma janela de console (como cmd, PowerShell ou Bash), use o dotnet new comando para criar um novo aplicativo de console com o nome anomaly-detector-quickstart. Este comando cria um simples projeto "Hello World" com um único ficheiro fonte em C#: Program.cs.

dotnet new console -n anomaly-detector-quickstart

Altere seu diretório para a pasta do aplicativo recém-criada. Você pode criar o aplicativo com:

dotnet build

A saída da compilação não deve conter avisos ou erros.

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

Instalar a biblioteca de cliente

No diretório da aplicação, instale a biblioteca cliente Anomaly Detector para .NET com o seguinte comando:

dotnet add package Azure.AI.AnomalyDetector --prerelease

Recuperar chave e ponto de extremidade

Para fazer uma chamada com sucesso no serviço Detetor de Anomalias, você precisará dos seguintes valores:

Nome da variável Valor
ANOMALY_DETECTOR_ENDPOINT Este valor pode ser encontrado na secção Keys & Endpoint ao examinar o seu recurso no portal do Azure. Exemplo de endpoint: https://YOUR_RESOURCE_NAME.cognitiveservices.azure.com/
ANOMALY_DETECTOR_API_KEY O valor da chave API pode ser encontrado na secção Keys & Endpoint ao examinar o seu recurso no portal do Azure. Pode utilizar KEY1 ou KEY2.
DATA_PATH Este início rápido utiliza o ficheiro request-data.csv que pode ser descarregado a partir dos dados de exemplo do GitHub. Exemplo de caminho: c:\\test\\request-data.csv

Aceda ao seu recurso no portal Azure. Os Pontes de Extremidade e Chaves podem ser encontrados na seção Gerenciamento de Recursos. Copie seu endpoint e sua chave de acesso, pois você precisará de ambos para autenticar suas chamadas de API. Pode utilizar KEY1 ou KEY2. Ter sempre duas chaves permite-lhe alternar e regenerar chaves de forma segura, sem causar uma interrupção do serviço.

Criar variáveis de ambiente

Crie e atribua variáveis de ambiente persistentes para sua chave e endpoint.

Importante

Recomendamos autenticação Microsoft Entra ID com identidades geridas para os recursos Azure para evitar armazenar credenciais com as suas aplicações que executam na nuvem.

Use chaves de API com cuidado. Não inclua a chave da API diretamente no seu código e nunca a publique publicamente. Se usar chaves API, guarde-as de forma segura no Azure Key Vault, rode as chaves regularmente e restrinja o acesso ao Azure Key Vault usando controlo de acesso baseado em funções e restrições de acesso à rede. Para mais informações sobre o uso seguro das chaves API nas suas aplicações, consulte chaves API com Azure Key Vault.

Para mais informações sobre a segurança dos serviços de IA, consulte Autenticar pedidos para Serviços de IA do Azure.

setx ANOMALY_DETECTOR_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx ANOMALY_DETECTOR_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"

Transferir dados de exemplo

Este início rápido utiliza o ficheiro request-data.csv que pode ser descarregado dos dados de amostra de GitHub

Você também pode baixar os dados de exemplo executando:

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

Detetar anomalias

No diretório do projeto, abra o arquivo program.cs e substitua pelo seguinte código:

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


Execute o aplicativo com o seguinte comando:

dotnet run program.cs

Saída

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

Detalhes do código

Compreender os seus resultados

No código acima, os dados de exemplo são lidos e convertidos em um DetectRequest objeto. Chamamos File.ReadAllLines com o caminho do arquivo, criamos uma lista de objetos TimeSeriesPoint e removemos quaisquer caracteres de nova linha. Extraia os valores e separe o carimbo de data/hora de seu valor numérico e adicione-os a um novo TimeSeriesPoint objeto. O DetectRequest objeto consiste em uma série de pontos de dados, com TimeGranularity.Daily para a granularidade (ou periodicidade) dos pontos de dados. Em seguida, chamamos o método do cliente DetectEntireSeriesAsync com o objeto DetectRequest e aguardamos a resposta como um objeto EntireDetectResponse. Em seguida, iteramos os valores da IsAnomaly resposta e imprimimos qualquer um que seja verdadeiro. Estes valores correspondem ao índice de pontos de dados anómalos, caso tenham sido encontrados.

Limpar recursos

Se quiser limpar e remover um recurso do Detetor de Anomalias, você pode excluir o recurso ou grupo de recursos. A exclusão do grupo de recursos também exclui quaisquer outros recursos associados a ele. Você também pode considerar a exclusão das variáveis de ambiente criadas se não pretende mais usá-las.

Documentação de referência da biblioteca |código-fonte da biblioteca | Package (npm) |Encontre o código de exemplo em GitHub

Introdução à biblioteca de cliente do Detetor de Anomalias para JavaScript. Siga estas etapas para instalar o pacote e começar a usar os algoritmos fornecidos pelo serviço. O serviço Detetor de anomalias permite que você encontre anormalidades em seus dados de séries cronológicas usando automaticamente o modelo mais adequado nele, independentemente do setor, cenário ou volume de dados.

Utilize a biblioteca cliente do Detetor de Anomalias para JavaScript para:

  • Detete anomalias em todo o conjunto de dados de séries temporais, como uma solicitação em lote
  • Detetar o status de anomalia do ponto de dados mais recente em sua série temporal
  • Detete pontos de mudança de tendência em seu conjunto de dados.

Pré-requisitos

  • Uma subscrição Azure - Crie uma gratuitamente
  • A versão atual do Node.js
  • Depois de teres a tua subscrição de Azure, criar um recurso de Detetor de Anomalias no portal de Azure para obter a tua chave e endpoint. Aguarde até que ele seja implantado e selecione o botão Ir para recurso. Você pode usar o nível de preço gratuito (F0) para experimentar o serviço e atualizar posteriormente para um nível pago para produção.

Configurar

Criar uma nova aplicação Node.js

Numa janela de consola (como cmd, PowerShell ou Bash), crie um novo diretório para a sua aplicação e navegue para a mesma.

mkdir myapp && cd myapp

Crie um package.json arquivo com o seguinte conteúdo:

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

Instalar a biblioteca de cliente

Instale os pacotes npm necessários executando o seguinte a partir do mesmo diretório que o arquivo package.json:

npm install

Recuperar chave e ponto de extremidade

Para fazer uma chamada com sucesso no serviço Detetor de Anomalias, você precisará dos seguintes valores:

Nome da variável Valor
ANOMALY_DETECTOR_ENDPOINT Este valor pode ser encontrado na secção Keys & Endpoint ao examinar o seu recurso no portal do Azure. Exemplo de endpoint: https://YOUR_RESOURCE_NAME.cognitiveservices.azure.com/
ANOMALY_DETECTOR_API_KEY O valor da chave API pode ser encontrado na secção Keys & Endpoint ao examinar o seu recurso no portal do Azure. Pode utilizar KEY1 ou KEY2.
datapath Este início rápido utiliza o ficheiro request-data.csv que pode ser descarregado a partir dos dados de exemplo do GitHub.

Aceda ao seu recurso no portal Azure. Os Pontes de Extremidade e Chaves podem ser encontrados na seção Gerenciamento de Recursos. Copie seu endpoint e sua chave de acesso, pois você precisará de ambos para autenticar suas chamadas de API. Pode utilizar KEY1 ou KEY2. Ter sempre duas chaves permite-lhe alternar e regenerar chaves de forma segura, sem causar uma interrupção do serviço.

Criar variáveis de ambiente

Crie e atribua variáveis de ambiente persistentes para sua chave e endpoint.

Importante

Recomendamos autenticação Microsoft Entra ID com identidades geridas para os recursos Azure para evitar armazenar credenciais com as suas aplicações que executam na nuvem.

Use chaves de API com cuidado. Não inclua a chave da API diretamente no seu código e nunca a publique publicamente. Se usar chaves API, guarde-as de forma segura no Azure Key Vault, rode as chaves regularmente e restrinja o acesso ao Azure Key Vault usando controlo de acesso baseado em funções e restrições de acesso à rede. Para mais informações sobre o uso seguro das chaves API nas suas aplicações, consulte chaves API com Azure Key Vault.

Para mais informações sobre a segurança dos serviços de IA, consulte Autenticar pedidos para Serviços de IA do Azure.

setx ANOMALY_DETECTOR_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx ANOMALY_DETECTOR_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"

Transferir dados de exemplo

Este início rápido utiliza o ficheiro request-data.csv que pode ser descarregado dos dados de amostra de GitHub

Você também pode baixar os dados de exemplo executando:

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

Detetar anomalias

Crie um arquivo chamado index.js e substitua pelo seguinte código:

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

Executar a aplicação

Execute a aplicação com o comando node no seu ficheiro de início rápido.

node index.js

Saída

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

Compreender os seus resultados

No código acima, chamamos o API do Detetor de Anomalias para detetar anomalias ao longo de toda a série temporal como um lote com o método detectEntireSeries() do cliente. Armazenamos o objeto AnomalyDetectorDetectEntireSeriesResponse retornado. Em seguida, percorremos a lista de isAnomaly da resposta e imprimimos o índice de quaisquer valores de true. Estes valores correspondem ao índice de pontos de dados anómalos, caso tenham sido encontrados.

Limpar recursos

Se quiser limpar e remover um recurso do Detetor de Anomalias, você pode excluir o recurso ou grupo de recursos. A exclusão do grupo de recursos também exclui quaisquer outros recursos associados a ele. Você também pode considerar a exclusão das variáveis de ambiente criadas se não pretende mais usá-las.

Documentação de referência da biblioteca |Código-fonte da biblioteca | Package (PyPi) |Encontre o código de exemplo em GitHub

Comece a usar a biblioteca cliente Anomaly Detector para Python. Siga estas etapas para instalar o pacote e começar a usar os algoritmos fornecidos pelo serviço. O serviço Detetor de anomalias permite que você encontre anormalidades em seus dados de séries cronológicas usando automaticamente os modelos mais adequados neles, independentemente do setor, cenário ou volume de dados.

Utilize a biblioteca cliente Anomaly Detector em Python para:

  • Detete anomalias em todo o conjunto de dados de séries temporais, como uma solicitação em lote
  • Detetar o status de anomalia do ponto de dados mais recente em sua série temporal
  • Detete pontos de mudança de tendência em seu conjunto de dados.

Pré-requisitos

Configurar

Instale a biblioteca do cliente. Você pode instalar a biblioteca de cliente com:

pip install --upgrade azure.ai.anomalydetector

Recuperar chave e ponto de extremidade

Para fazer uma chamada com sucesso no serviço Detetor de Anomalias, você precisará dos seguintes valores:

Nome da variável Valor
ANOMALY_DETECTOR_ENDPOINT Este valor pode ser encontrado na secção Keys & Endpoint ao examinar o seu recurso no portal do Azure. Exemplo de endpoint: https://YOUR_RESOURCE_NAME.cognitiveservices.azure.com/
ANOMALY_DETECTOR_API_KEY O valor da chave API pode ser encontrado na secção Keys & Endpoint ao examinar o seu recurso no portal do Azure. Pode utilizar KEY1 ou KEY2.
DATA_PATH Este início rápido utiliza o ficheiro request-data.csv que pode ser descarregado a partir dos dados de exemplo do GitHub. Exemplo de caminho: c:\\test\\request-data.csv

Aceda ao seu recurso no portal Azure. Os Pontes de Extremidade e Chaves podem ser encontrados na seção Gerenciamento de Recursos. Copie seu endpoint e sua chave de acesso, pois você precisará de ambos para autenticar suas chamadas de API. Pode utilizar KEY1 ou KEY2. Ter sempre duas chaves permite-lhe alternar e regenerar chaves de forma segura, sem causar uma interrupção do serviço.

Criar variáveis de ambiente

Crie e atribua variáveis de ambiente persistentes para sua chave e endpoint.

Importante

Recomendamos autenticação Microsoft Entra ID com identidades geridas para os recursos Azure para evitar armazenar credenciais com as suas aplicações que executam na nuvem.

Use chaves de API com cuidado. Não inclua a chave da API diretamente no seu código e nunca a publique publicamente. Se usar chaves API, guarde-as de forma segura no Azure Key Vault, rode as chaves regularmente e restrinja o acesso ao Azure Key Vault usando controlo de acesso baseado em funções e restrições de acesso à rede. Para mais informações sobre o uso seguro das chaves API nas suas aplicações, consulte chaves API com Azure Key Vault.

Para mais informações sobre a segurança dos serviços de IA, consulte Autenticar pedidos para Serviços de IA do Azure.

setx ANOMALY_DETECTOR_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx ANOMALY_DETECTOR_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"

Transferir dados de exemplo

Este início rápido utiliza o ficheiro request-data.csv que pode ser descarregado dos dados de amostra de GitHub

Você também pode baixar os dados de exemplo executando:

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

Detetar anomalias

  1. Crie um novo ficheiro Python chamado quickstart.py. Em seguida, abra-o no seu editor ou IDE preferido.

  2. Substitua o conteúdo do quickstart.py pelo código a seguir. Modifique o código para adicionar os nomes das variáveis de ambiente para sua chave, ponto de extremidade e caminho de dados de série temporal:

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

    Importante

    Para produção, usa uma forma segura de armazenar e aceder às tuas credenciais, como Azure Key Vault. Para mais informações sobre segurança de credenciais, consulte o artigo Serviços de IA do Azure security.

  3. Execute o aplicativo com o python comando em seu arquivo de início rápido

    python quickstart.py
    

Saída

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

Compreender os seus resultados

No nosso código acima, chamamos a API do Detetor de Anomalias duas vezes. A primeira chamada verifica pontos de mudança de tendência na nossa série de dados de exemplo com o método detect_change_point. Esta chamada retorna um ChangePointDetectResponse que armazenamos em uma variável que nomeamos change_point_request. Em seguida, iteramos através da lista de respostas de is_change_point e imprimimos o índice de quaisquer valores com um valor booleano de true.

A segunda chamada verifica toda a série de dados de amostra em busca de anomalias usando o detect_entire_series método. Esta chamada retorna um EntireDetectResponse que armazenamos em uma variável que nomeamos anomaly_response. Percorremos a lista de is_anomaly respostas e imprimimos o índice de quaisquer valores com um valor booleano de true. Alternativamente, poderíamos ter usado o detect_last_point método, que é mais apropriado para detetar anomalias em dados em tempo real. Para saber mais, consulte o guia de práticas recomendadas.

Visualizar resultados

Para visualizar as anomalias e os pontos de alteração em relação à série de dados de exemplo, usaremos a popular biblioteca de código aberto matplotlib.

  1. Instale a biblioteca.

    pip install matplotlib
    
  2. Modifique seu arquivo quickstart.py com o seguinte código:

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

    Importante

    Para produção, usa uma forma segura de armazenar e aceder às tuas credenciais, como Azure Key Vault. Para mais informações sobre segurança de credenciais, consulte o artigo sobre "segurança" dos serviços Azure AI.

  3. Execute o aplicativo com o python comando em seu arquivo de início rápido

    python quickstart.py
    

Saída

Neste exemplo de código, adicionamos a matplotlib biblioteca para nos permitir visualizar e distinguir facilmente pontos de dados normais de pontos de alteração e anomalias. Os pontos de alteração são representados por quadrados azuis, as anomalias são triângulos vermelhos e os pontos de dados normais são círculos verdes. As datas são convertidas em números usando o método matplotlibdate2num para fornecer valores adequados para gráficos no eixo y dos gráficos.

Captura de tela dos resultados com índices de anomalias e pontos de alteração em um gráfico de dispersão. Diferentes formas e cores são usadas para diferentes tipos de dados.

Limpar recursos

Se quiser limpar e remover um recurso do Detetor de Anomalias, você pode excluir o recurso ou grupo de recursos. A exclusão do grupo de recursos também exclui quaisquer outros recursos associados a ele. Você também pode considerar a exclusão das variáveis de ambiente criadas se não pretende mais usá-las.

Neste guia de início rápido, você aprenderá a detetar anomalias em um lote de dados de séries cronológicas usando o serviço Detetor de Anomalias e o cURL.

Para uma visão de alto nível dos conceitos do Detetor de Anomalias, consulte o artigo de visão geral .

Pré-requisitos

  • Uma subscrição Azure - Crie uma gratuitamente
  • Depois de teres a tua subscrição de Azure, criar um recurso de Detetor de Anomalias no portal de Azure para obter a tua chave e endpoint. Aguarde até que ele seja implantado e selecione o botão Ir para recurso. Você pode usar o nível de preço gratuito (F0) para experimentar o serviço e atualizar posteriormente para um nível pago para produção.
  • Um arquivo JSON válido de dados de séries temporais para testar anomalias. Se não tiveres o teu próprio ficheiro, podes criar um ficheiro sample.json a partir da referência da API Azure AI Foundry REST.

Recuperar chave e ponto de extremidade

Para fazer uma chamada com sucesso no serviço Detetor de Anomalias, você precisará dos seguintes valores:

Nome da variável Valor
ANOMALY_DETECTOR_ENDPOINT Este valor pode ser encontrado na secção Keys & Endpoint ao examinar o seu recurso no portal do Azure. Exemplo de endpoint: https://YOUR_RESOURCE_NAME.cognitiveservices.azure.com/
ANOMALY_DETECTOR_API_KEY O valor da chave API pode ser encontrado na secção Keys & Endpoint ao examinar o seu recurso no portal do Azure. Pode utilizar KEY1 ou KEY2.

Aceda ao seu recurso no portal Azure. Os Pontes de Extremidade e Chaves podem ser encontrados na seção Gerenciamento de Recursos. Copie seu endpoint e sua chave de acesso, pois você precisará de ambos para autenticar suas chamadas de API. Pode utilizar KEY1 ou KEY2. Ter sempre duas chaves permite-lhe alternar e regenerar chaves de forma segura, sem causar uma interrupção do serviço.

Criar variáveis de ambiente

Crie e atribua variáveis de ambiente persistentes para sua chave e endpoint.

Importante

Recomendamos autenticação Microsoft Entra ID com identidades geridas para os recursos Azure para evitar armazenar credenciais com as suas aplicações que executam na nuvem.

Use chaves de API com cuidado. Não inclua a chave da API diretamente no seu código e nunca a publique publicamente. Se usar chaves API, guarde-as de forma segura no Azure Key Vault, rode as chaves regularmente e restrinja o acesso ao Azure Key Vault usando controlo de acesso baseado em funções e restrições de acesso à rede. Para mais informações sobre o uso seguro das chaves API nas suas aplicações, consulte chaves API com Azure Key Vault.

Para mais informações sobre a segurança dos serviços de IA, consulte Autenticar pedidos para Serviços de IA do Azure.

setx ANOMALY_DETECTOR_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx ANOMALY_DETECTOR_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

Detetar anomalias

Em um prompt de comando, execute o seguinte comando. Você precisará inserir os seguintes valores no comando.

  • A sua chave de subscrição do serviço Detetor de anomalias.
  • Seu endereço de ponto final do detetor de anomalias.
  • Um arquivo JSON válido de dados de séries temporais para testar anomalias. Se não tiveres o teu próprio ficheiro, podes criar um ficheiro sample.json a partir da referência da API Azure AI Foundry REST.
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" 

Um exemplo do comando completo como uma única linha:

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"

Como alternativa, se você estiver executando o comando cURL a partir de um shell Bash, seu comando será ligeiramente diferente:

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"

Se você usou os dados de exemplo dos pré-requisitos, você deve receber uma resposta 200 com os seguintes resultados:

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

Para mais informações, consulte a referência da API REST Azure AI Foundry.

Limpar recursos

Se quiseres limpar e remover uma subscrição de Serviços de IA do Azure, podes eliminar o recurso ou grupo de recursos. A exclusão do grupo de recursos também exclui quaisquer outros recursos associados ao grupo de recursos.

Próximos passos

Conceitos:

Tutoriais: