Compartir vía


Inicio rápido: Uso de la biblioteca cliente univariante de Anomaly Detector

Importante

A partir del 20 de septiembre de 2023, no podrá crear nuevos recursos de Anomaly Detector. El servicio Anomaly Detector se va a retirar el 1 de octubre de 2026.

Documentación de referencia de la biblioteca |Código fuente de la biblioteca | Paquete (NuGet) |Búsqueda del código en GitHub

Comience a usar la biblioteca cliente de Anomaly Detector para C#. Siga estos pasos para instalar el inicio del paquete con los algoritmos que proporciona el servicio. El servicio de Anomaly Detector le permite detectar anomalías en los datos de serie temporal mediante el uso automático de los mejores modelos, independientemente del sector, el escenario o el volumen de datos.

Use la biblioteca cliente de Anomaly Detector para C# para realizar las siguientes acciones:

  • Detectar anomalías en el conjunto de datos de serie temporal como una solicitud por lotes
  • Detectar el estado de anomalía del punto de datos más reciente en la serie temporal
  • Detectar puntos de cambio de tendencia en el conjunto de datos.

Requisitos previos

  • Una suscripción a Azure: cree una cuenta gratuita.
  • La versión actual de .NET Core
  • Cuando tenga la suscripción de Azure, cree un recurso de Anomaly Detector en Azure Portal para obtener la clave y el punto de conexión. Espere a que se implemente y seleccione el botón Ir al recurso. Puede usar el plan de tarifa gratis (F0) para probar el servicio y actualizarlo más adelante a un plan de pago para producción.

Configuración

Creación de una aplicación de .NET Core

En una ventana de consola (por ejemplo, cmd, PowerShell o Bash), use el comando dotnet new para crear una nueva aplicación de consola con el nombre anomaly-detector-quickstart. Este comando crea un sencillo proyecto "Hola mundo" con un solo archivo de origen de C#: Program.cs.

dotnet new console -n anomaly-detector-quickstart

Cambie el directorio a la carpeta de aplicaciones recién creada. Para compilar la aplicación:

dotnet build

La salida de la compilación no debe contener advertencias ni errores.

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

Instalación de la biblioteca cliente

Dentro del directorio de aplicaciones, instale la biblioteca cliente de Anomaly Detector para .NET con el siguiente comando:

dotnet add package Azure.AI.AnomalyDetector --prerelease

Recuperación de la clave y el punto de conexión

Para realizar correctamente una llamada en el servicio Anomaly Detector, necesitará los siguientes valores:

Nombre de la variable Valor
ANOMALY_DETECTOR_ENDPOINT Este valor se puede encontrar en la sección Claves y punto de conexión al examinar el recurso en Azure Portal. Punto de conexión de ejemplo: https://YOUR_RESOURCE_NAME.cognitiveservices.azure.com/
ANOMALY_DETECTOR_API_KEY El valor de la clave de API se puede encontrar en la sección Claves y punto de conexión al examinar su recurso en Azure Portal. Puede usar KEY1 o KEY2.
DATA_PATH En este inicio rápido se usa el archivo request-data.csv que se puede descargar de los datos de ejemplo de GitHub. Ruta de acceso de ejemplo: c:\\test\\request-data.csv

Vaya al recurso en Azure Portal. El punto de conexión y las claves se pueden encontrar en la sección Administración de recursos. Copie el punto de conexión y la clave de acceso, ya que los necesitará para autenticar las llamadas API. Puede usar KEY1 o KEY2. Tener siempre dos claves permite rotar y regenerar las claves de forma segura sin provocar una interrupción del servicio.

Creación de variables de entorno

Cree y asigne variables de entorno persistentes para la clave y el punto de conexión.

Importante

Si usa una clave de API, almacénela de forma segura en otro lugar, como en Azure Key Vault. No incluya la clave de API directamente en el código ni la exponga nunca públicamente.

Para más información sobre la seguridad de los servicios de AI, consulte Autenticación de solicitudes a los servicios de Azure AI.

setx ANOMALY_DETECTOR_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx ANOMALY_DETECTOR_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"

Descarga de datos de ejemplo

En este inicio rápido se usa el archivo request-data.csv que se puede descargar de los datos de ejemplo de GitHub

También puede descargar los datos de ejemplo mediante la ejecución de:

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

Detección de anomalías

En el directorio del proyecto, abra el archivo program.cs y reemplácelo con el código siguiente:

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


Ejecute la aplicación con el comando siguiente:

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

Detalles del código

Descripción de los resultados

En el código anterior, los datos de ejemplo se leen y convierten en un objeto DetectRequest. Llame a File.ReadAllLines con la ruta de acceso del archivo, cree una lista de objetos TimeSeriesPoint y quite los caracteres de nuevas líneas. Extraiga los valores y separe la marca de tiempo de su valor numérico y agréguelos a un nuevo objeto TimeSeriesPoint. El objeto DetectRequest consta de una serie de puntos de datos, con TimeGranularity.Daily para la granularidad (o periodicidad) de los puntos de datos. A continuación, llame al método DetectEntireSeriesAsync del cliente con el objeto DetectRequest y espere la respuesta como un objeto EntireDetectResponse. Después, itere los valores IsAnomaly de la respuesta e imprima los que sean verdaderos. Estos valores se corresponden con el índice de los puntos de datos anómalos, si se detecta alguno.

Limpieza de recursos

Si quiere limpiar y quitar un recurso de Anomaly Detector, puede eliminar el recurso o el grupo de recursos. Al eliminar el grupo de recursos, también se elimina cualquier otro recurso que esté asociado a él. También puede considerar la posibilidad de eliminar las variables de entorno que creó si ya no tiene intención de usarlas.

Documentación de referencia de la biblioteca |Código fuente de la biblioteca | Paquete (npm) |Búsqueda del código de ejemplo en GitHub

Comience a usar la biblioteca cliente de Anomaly Detector para JavaScript. Siga estos pasos para instalar el paquete y empezar a usar los algoritmos proporcionados por el servicio. El servicio de Anomaly Detector permite detectar anomalías en los datos de serie temporal mediante el uso automático del modelo que mejor se ajusta, independientemente del sector, el escenario o el volumen de datos.

Use la biblioteca cliente de Anomaly Detector para JavaScript para hacer lo siguiente:

  • Detectar anomalías en el conjunto de datos de serie temporal como una solicitud por lotes
  • Detectar el estado de anomalía del punto de datos más reciente en la serie temporal
  • Detectar puntos de cambio de tendencia en el conjunto de datos.

Requisitos previos

  • Una suscripción a Azure: cree una cuenta gratuita.
  • La versión actual de Node.js
  • Cuando tenga la suscripción de Azure, cree un recurso de Anomaly Detector en Azure Portal para obtener la clave y el punto de conexión. Espere a que se implemente y seleccione el botón Ir al recurso. Puede usar el plan de tarifa gratis (F0) para probar el servicio y actualizarlo más adelante a un plan de pago para producción.

Configurar

Creación de una aplicación Node.js

En una ventana de la consola (como cmd, PowerShell o Bash), cree un directorio para la aplicación y vaya a él.

mkdir myapp && cd myapp

Cree un archivo package.json con el siguiente contenido:

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

Instalación de la biblioteca cliente

Instale los paquetes npm necesarios mediante la ejecución de lo siguiente desde el mismo directorio que el archivo package.json:

npm install

Recuperación de la clave y el punto de conexión

Para realizar correctamente una llamada en el servicio Anomaly Detector, necesitará los siguientes valores:

Nombre de la variable Valor
ANOMALY_DETECTOR_ENDPOINT Este valor se puede encontrar en la sección Claves y punto de conexión al examinar el recurso en Azure Portal. Punto de conexión de ejemplo: https://YOUR_RESOURCE_NAME.cognitiveservices.azure.com/
ANOMALY_DETECTOR_API_KEY El valor de la clave de API se puede encontrar en la sección Claves y punto de conexión al examinar su recurso en Azure Portal. Puede usar KEY1 o KEY2.
datapath En este inicio rápido se usa el archivo request-data.csv que se puede descargar de los datos de ejemplo de GitHub.

Vaya al recurso en Azure Portal. El punto de conexión y las claves se pueden encontrar en la sección Administración de recursos. Copie el punto de conexión y la clave de acceso, ya que los necesitará para autenticar las llamadas API. Puede usar KEY1 o KEY2. Tener siempre dos claves permite rotar y regenerar las claves de forma segura sin provocar una interrupción del servicio.

Creación de variables de entorno

Cree y asigne variables de entorno persistentes para la clave y el punto de conexión.

Importante

Si usa una clave de API, almacénela de forma segura en otro lugar, como en Azure Key Vault. No incluya la clave de API directamente en el código ni la exponga nunca públicamente.

Para más información sobre la seguridad de los servicios de AI, consulte Autenticación de solicitudes a los servicios de Azure AI.

setx ANOMALY_DETECTOR_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx ANOMALY_DETECTOR_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"

Descarga de datos de ejemplo

En este inicio rápido se usa el archivo request-data.csv que se puede descargar de los datos de ejemplo de GitHub

También puede descargar los datos de ejemplo mediante la ejecución de:

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

Detección de anomalías

Cree un archivo denominado index.js y reemplace por el código siguiente:

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

Ejecución de la aplicación

Ejecute la aplicación con el comando node en el archivo de inicio rápido.

node index.js

Output

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

Descripción de los resultados

En el código anterior, llame a la API Anomaly Detector para detectar anomalías en toda la serie temporal como un lote con el método detectEntireSeries() del cliente. Almacene el objeto AnomalyDetectorDetectEntireSeriesResponse devuelto. Itere la lista isAnomaly de la respuesta e imprima el índice de los valores true. Estos valores se corresponden con el índice de los puntos de datos anómalos, si se detecta alguno.

Limpieza de recursos

Si quiere limpiar y quitar un recurso de Anomaly Detector, puede eliminar el recurso o el grupo de recursos. Al eliminar el grupo de recursos, también se elimina cualquier otro recurso que esté asociado a él. También puede considerar la posibilidad de eliminar las variables de entorno que creó si ya no tiene intención de usarlas.

Documentación de referencia de la biblioteca |Código fuente de la biblioteca | Paquete (PyPi) |Buscar el ejemplo de código en GitHub

Comience a usar la biblioteca cliente de Anomaly Detector para Python. Siga estos pasos para instalar el paquete y empezar a usar los algoritmos proporcionados por el servicio. El servicio de Anomaly Detector le permite detectar anomalías en los datos de serie temporal mediante el uso automático de los mejores modelos, independientemente del sector, el escenario o el volumen de datos.

Use la biblioteca cliente de Anomaly Detector para Python para las siguientes acciones:

  • Detectar anomalías en el conjunto de datos de serie temporal como una solicitud por lotes
  • Detectar el estado de anomalía del punto de datos más reciente en la serie temporal
  • Detectar puntos de cambio de tendencia en el conjunto de datos.

Requisitos previos

Configurar

Instale la biblioteca cliente. Puede instalar la biblioteca cliente con lo siguiente:

pip install --upgrade azure.ai.anomalydetector

Recuperación de la clave y el punto de conexión

Para realizar correctamente una llamada en el servicio Anomaly Detector, necesitará los siguientes valores:

Nombre de la variable Valor
ANOMALY_DETECTOR_ENDPOINT Este valor se puede encontrar en la sección Claves y punto de conexión al examinar el recurso en Azure Portal. Punto de conexión de ejemplo: https://YOUR_RESOURCE_NAME.cognitiveservices.azure.com/
ANOMALY_DETECTOR_API_KEY El valor de la clave de API se puede encontrar en la sección Claves y punto de conexión al examinar su recurso en Azure Portal. Puede usar KEY1 o KEY2.
DATA_PATH En este inicio rápido se usa el archivo request-data.csv que se puede descargar de los datos de ejemplo de GitHub. Ruta de acceso de ejemplo: c:\\test\\request-data.csv

Vaya al recurso en Azure Portal. El punto de conexión y las claves se pueden encontrar en la sección Administración de recursos. Copie el punto de conexión y la clave de acceso, ya que los necesitará para autenticar las llamadas API. Puede usar KEY1 o KEY2. Tener siempre dos claves permite rotar y regenerar las claves de forma segura sin provocar una interrupción del servicio.

Creación de variables de entorno

Cree y asigne variables de entorno persistentes para la clave y el punto de conexión.

Importante

Si usa una clave de API, almacénela de forma segura en otro lugar, como en Azure Key Vault. No incluya la clave de API directamente en el código ni la exponga nunca públicamente.

Para más información sobre la seguridad de los servicios de AI, consulte Autenticación de solicitudes a los servicios de Azure AI.

setx ANOMALY_DETECTOR_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx ANOMALY_DETECTOR_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"

Descarga de datos de ejemplo

En este inicio rápido se usa el archivo request-data.csv que se puede descargar de los datos de ejemplo de GitHub

También puede descargar los datos de ejemplo mediante la ejecución de:

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

Detección de anomalías

  1. Cree un nuevo archivo de Python denominado quickstart.py. A continuación, ábralo en el editor o IDE preferidos.

  2. Reemplace el contenido de quickstart-file.py por el código siguiente. Modifique el código para agregar los nombres de las variables de entorno para la clave, el punto de conexión y la ruta de acceso de datos de la serie 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

    En el caso de producción, use una forma segura de almacenar sus credenciales y acceder a ellas, como Azure Key Vault. Para obtener más información sobre la seguridad de las credenciales, consulte el artículo Seguridad de servicios de Azure AI.

  3. Ejecute la aplicación con el comando python en el archivo de inicio rápido.

    python quickstart.py
    

Output

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

Descripción de los resultados

En el código anterior, se llama a la API de Anomaly Detector dos veces. La primera llamada comprueba los puntos de cambio de tendencia en la serie de datos de ejemplo con el método detect_change_point. Esta llamada devuelve un objeto ChangePointDetectResponse que se almacena en una variable denominada change_point_request. A continuación, itere la lista is_change_point de la respuesta e imprima el índice de los valores con un valor booleano de true.

La segunda llamada comprueba si existen anomalías en toda la serie de datos de ejemplo mediante el método detect_entire_series. Esta llamada devuelve un objeto EntireDetectResponse que se almacena en una variable denominada anomaly_response. A continuación, itere la lista is_anomaly de la respuesta e imprima el índice de los valores con un valor booleano de true. Como alternativa, se podría haber usado el método detect_last_point, que es más adecuado para detectar anomalías en datos en tiempo real. Para obtener más información, consulte la guía de procedimientos recomendados.

Visualización de los resultados

Para visualizar las anomalías y los puntos de cambio en relación con la serie de datos de ejemplo, se usará la popular biblioteca de código abierto matplotlib.

  1. Instale la biblioteca.

    pip install matplotlib
    
  2. Modifique el archivo quickstart.py con el código siguiente:

    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

    En el caso de producción, use una forma segura de almacenar sus credenciales y acceder a ellas, como Azure Key Vault. Para obtener más información sobre la seguridad de las credenciales, consulte el artículo Seguridad de servicios de Azure AI.

  3. Ejecute la aplicación con el comando python en el archivo de inicio rápido.

    python quickstart.py
    

Output

En este ejemplo de código, se ha agregado la biblioteca matplotlib para permitir visualizar y distinguir con facilidad los puntos de datos normales de los puntos de cambio y las anomalías. Los puntos de cambio se representan mediante cuadrados azules, las anomalías son triángulos rojos y los puntos de datos normales son círculos verdes. Las fechas se convierten en números mediante el métododate2num de matplotlib para proporcionar valores descriptivos de grafos para el eje Y de los gráficos.

Captura de pantalla de los resultados con índices de anomalías y puntos de cambio en un gráfico de dispersión. Se usan diferentes formas y colores para diferentes tipos de datos.

Limpieza de recursos

Si quiere limpiar y quitar un recurso de Anomaly Detector, puede eliminar el recurso o el grupo de recursos. Al eliminar el grupo de recursos, también se elimina cualquier otro recurso que esté asociado a él. También puede considerar la posibilidad de eliminar las variables de entorno que creó si ya no tiene intención de usarlas.

En esta guía de inicio rápido, aprenderá a detectar anomalías en un lote de datos de series temporales mediante el servicio Anomaly Detector y cURL.

Para obtener una visión general de los conceptos de Anomaly Detector, consulte el artículo de información general.

Requisitos previos

  • Una suscripción a Azure: cree una cuenta gratuita.
  • Cuando tenga la suscripción de Azure, cree un recurso de Anomaly Detector en Azure Portal para obtener la clave y el punto de conexión. Espere a que se implemente y seleccione el botón Ir al recurso. Puede usar el plan de tarifa gratis (F0) para probar el servicio y actualizarlo más adelante a un plan de pago para producción.
  • Un archivo JSON válido de datos de serie temporal para probar las anomalías. Si no tiene su propio archivo, puede crear un archivo sample.json a partir del ejemplo de cuerpo de la solicitud

Recuperación de la clave y el punto de conexión

Para realizar correctamente una llamada en el servicio Anomaly Detector, necesitará los siguientes valores:

Nombre de la variable Valor
ANOMALY_DETECTOR_ENDPOINT Este valor se puede encontrar en la sección Claves y punto de conexión al examinar el recurso en Azure Portal. Punto de conexión de ejemplo: https://YOUR_RESOURCE_NAME.cognitiveservices.azure.com/
ANOMALY_DETECTOR_API_KEY El valor de la clave de API se puede encontrar en la sección Claves y punto de conexión al examinar su recurso en Azure Portal. Puede usar KEY1 o KEY2.

Vaya al recurso en Azure Portal. El punto de conexión y las claves se pueden encontrar en la sección Administración de recursos. Copie el punto de conexión y la clave de acceso, ya que los necesitará para autenticar las llamadas API. Puede usar KEY1 o KEY2. Tener siempre dos claves permite rotar y regenerar las claves de forma segura sin provocar una interrupción del servicio.

Creación de variables de entorno

Cree y asigne variables de entorno persistentes para la clave y el punto de conexión.

Importante

Si usa una clave de API, almacénela de forma segura en otro lugar, como en Azure Key Vault. No incluya la clave de API directamente en el código ni la exponga nunca públicamente.

Para más información sobre la seguridad de los servicios de AI, consulte Autenticación de solicitudes a los servicios de Azure AI.

setx ANOMALY_DETECTOR_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx ANOMALY_DETECTOR_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

Detección de anomalías

En el símbolo del sistema, ejecute el siguiente comando. Deberá insertar los siguientes valores en el comando.

  • La clave de suscripción del servicio Anomaly Detector.
  • La dirección del punto de conexión del recurso de Anomaly Detector.
  • Un archivo JSON válido de datos de serie temporal para probar las anomalías. Si no tiene su propio archivo, puede crear un archivo sample.json a partir del ejemplo de cuerpo de la solicitud.
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" 

Un ejemplo del comando completo como una sola línea:

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, si ejecuta el comando cURL desde un shell de Bash, el comando será ligeramente 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"

Si ha utilizado los datos de ejemplo de los requisitos previos, debería recibir un código de respuesta 200 con los siguientes 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 más información, consulte Referencia de la API REST de Anomaly Detector.

Limpieza de recursos

Si quiere limpiar y eliminar una suscripción de servicios de Azure AI, puede eliminar el recurso o el grupo de recursos. Al eliminar el grupo de recursos, también se elimina cualquier otro recurso que esté asociado a dicho grupo.

Pasos siguientes

Conceptos:

Tutoriales: