Inicio rápido: Uso de la biblioteca cliente univariante de Anomaly Detector
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.
Documentación de referencia de la biblioteca | Código fuente de la biblioteca | Paquete (NuGet) | Buscar el código en GitHub
Prerrequisitos
- 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 haga clic en el botón Ir al recurso.
- Necesitará la clave y el punto de conexión del recurso que cree para conectar la aplicación a Anomaly Detector API. En una sección posterior de este mismo inicio rápido pegará la clave y el punto de conexión en el código siguiente.
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.
- Necesitará la clave y el punto de conexión del recurso que cree para conectar la aplicación a Anomaly Detector API. En una sección posterior de este mismo inicio rápido pegará la clave y el punto de conexión en el código siguiente.
Puede usar el plan de tarifa gratis (
Instalación
Creación de una variable de entorno
Nota
Los puntos de conexión de los recursos creados que no son de prueba usan desde el 1 de julio de 2019 el formato de subdominio personalizado que se muestra a continuación. Para más información y para obtener una lista completa de los puntos de conexión regionales, consulte Nombres de subdominios personalizados para Cognitive Services.
Con la clave y el punto de conexión del recurso que ha creado, cree dos variables de entorno para la autenticación:
ANOMALY_DETECTOR_KEY: la clave de recurso para autenticar las solicitudes.ANOMALY_DETECTOR_ENDPOINT: el punto de conexión del recurso para enviar solicitudes de API. Tendrá el siguiente aspecto:https://<your-custom-subdomain>.api.cognitive.microsoft.com
Siga las instrucciones adecuadas para su sistema operativo.
setx ANOMALY_DETECTOR_KEY <replace-with-your-anomaly-detector-key>
setx ANOMALY_DETECTOR_ENDPOINT <replace-with-your-anomaly-detector-endpoint>
Después de agregar la variable de entorno, reinicie la ventana de la consola.
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 Microsoft.Azure.CognitiveServices.AnomalyDetector
En el directorio del proyecto, abra el archivo program.cs y agregue lo siguiente mediante directives:
using System;
using System.IO;
using System.Text;
using System.Linq;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.Azure.CognitiveServices.AnomalyDetector;
using Microsoft.Azure.CognitiveServices.AnomalyDetector.Models;
En el método main() de la aplicación, cree variables para la ubicación de Azure del recurso y la clave como una variable de entorno. Si ha creado la variable de entorno una vez iniciada la aplicación, el editor, IDE o shell que se esté ejecutando se deberá cerrar y volver a cargar para tener acceso a la variable.
static void Main(string[] args){
//This sample assumes you have created an environment variable for your key and endpoint
string endpoint = Environment.GetEnvironmentVariable("ANOMALY_DETECTOR_ENDPOINT");
string key = Environment.GetEnvironmentVariable("ANOMALY_DETECTOR_KEY");
string datapath = "request-data.csv";
IAnomalyDetectorClient client = createClient(endpoint, key); //Anomaly Detector client
Request request = GetSeriesFromFile(datapath); // The request payload with points from the data file
EntireDetectSampleAsync(client, request).Wait(); // Async method for batch anomaly detection
LastDetectSampleAsync(client, request).Wait(); // Async method for analyzing the latest data point in the set
DetectChangePoint(client, request).Wait(); // Async method for change point detection
Console.WriteLine("\nPress ENTER to exit.");
Console.ReadLine();
}
Modelo de objetos
El cliente de Anomaly Detector es un objeto AnomalyDetectorClient que se autentica en Azure mediante ApiKeyServiceClientCredentials, que contiene la clave. El cliente puede realizar detección de anomalías en un conjunto de datos completo mediante EntireDetectAsync(), o en el punto de datos más reciente mediante LastDetectAsync(). El método ChangePointDetectAsync detecta puntos que marcan los cambios en una tendencia.
Los datos de serie temporal se envían como una serie de objetos Point en un objeto Request. El objeto Request contiene propiedades para describir los datos (Granularidad, por ejemplo), así como los parámetros para la detección de anomalías.
La respuesta de Anomaly Detector es un objeto EntireDetectResponse, LastDetectResponse o changePointDetectResponse, según el método usado.
Ejemplos de código
Estos fragmentos de código muestran cómo realizar las siguientes acciones con la biblioteca cliente de Anomaly Detector para .NET:
- Autenticar el cliente
- Cargar un conjunto de datos de serie temporal desde un archivo
- Detectar anomalías en todo el conjunto de datos
- Detectar el estado de anomalía del punto de datos más reciente
- Detección de los puntos de cambio en el conjunto de datos
Autenticar el cliente
En un nuevo método, cree una instancia de un cliente con la clave y el punto de conexión. Cree un objeto ApiKeyServiceClientCredentials con la clave y úselo con el punto de conexión para crear un objeto AnomalyDetectorClient.
static IAnomalyDetectorClient createClient(string endpoint, string key)
{
IAnomalyDetectorClient client = new AnomalyDetectorClient(new ApiKeyServiceClientCredentials(key))
{
Endpoint = endpoint
};
return client;
}
Cargar datos de serie temporal desde un archivo
Descargue los datos de ejemplo de este inicio rápido desde GitHub:
- En el explorador, haga clic con el botón derecho en Raw (Sin formato).
- Haga clic en Save link as (Guardar vínculo como).
- Guarde el archivo como .csv en el directorio de aplicaciones.
Estos datos de serie temporal tienen el formato de un archivo .csv y se enviarán a Anomaly Detector API.
Cree un nuevo método para leer los datos de serie temporal y agréguelo a un objeto Request. Llame a File.ReadAllLines() con la ruta de acceso del archivo y cree una lista de objetos Point y realice el script de los nuevos caracteres de línea. Extraiga los valores y separe la marca de fecha de su valor numérico y agréguelos a un nuevo objeto Point.
Cree un objeto Request con la serie de puntos y Granularity.Daily para Granularidad (o periodicidad) de los puntos de datos.
static Request GetSeriesFromFile(string path)
{
List<Point> list = File.ReadAllLines(path, Encoding.UTF8)
.Where(e => e.Trim().Length != 0)
.Select(e => e.Split(','))
.Where(e => e.Length == 2)
.Select(e => new Point(DateTime.Parse(e[0]), Double.Parse(e[1]))).ToList();
return new Request(list, Granularity.Daily);
}
Detectar anomalías en todo el conjunto de datos
Cree un método para llamar al método EntireDetectAsync() del cliente con el objeto Request y espere la respuesta como un objeto EntireDetectResponse. Si la serie temporal contiene alguna anomalía, itere a través de los valores IsAnomaly de la respuesta e imprima cualquiera que sea true. Estos valores se corresponden con el índice de los puntos de datos anómalos, si se detecta alguno.
static async Task EntireDetectSampleAsync(IAnomalyDetectorClient client, Request request)
{
Console.WriteLine("Detecting anomalies in the entire time series.");
EntireDetectResponse result = await client.EntireDetectAsync(request).ConfigureAwait(false);
if (result.IsAnomaly.Contains(true))
{
Console.WriteLine("An anomaly was detected at index:");
for (int i = 0; i < request.Series.Count; ++i)
{
if (result.IsAnomaly[i])
{
Console.Write(i);
Console.Write(" ");
}
}
Console.WriteLine();
}
else
{
Console.WriteLine(" No anomalies detected in the series.");
}
}
Detección del estado de anomalía del punto de datos más reciente
Cree un método para llamar al método LastDetectAsync() del cliente con el objeto Request y espere la respuesta como un objeto LastDetectResponse. Compruebe el atributo IsAnomaly de la respuesta para determinar si el punto de datos más reciente enviado era una anomalía o no.
static async Task LastDetectSampleAsync(IAnomalyDetectorClient client, Request request)
{
Console.WriteLine("Detecting the anomaly status of the latest point in the series.");
LastDetectResponse result = await client.LastDetectAsync(request).ConfigureAwait(false);
if (result.IsAnomaly)
{
Console.WriteLine("The latest point was detected as an anomaly.");
}
else
{
Console.WriteLine("The latest point was not detected as an anomaly.");
}
}
Detección de los puntos de cambio en el conjunto de datos
Cree un método para llamar al método DetectChangePointAsync del cliente con el objeto Request y espere la respuesta como un objeto ChangePointDetectResponse. Compruebe los valores de IsChangePoint de la respuesta e imprima todos los que sean true. Estos valores corresponden a los puntos de cambio de tendencia, si se encuentra alguno.
public async Task DetectChangePoint(IAnomalyDetectorClient client, Request request)
{
Console.WriteLine("Detecting the change points in the series.");
ChangePointDetectResponse result = await client.DetectChangePointAsync(request).ConfigureAwait(false);
if (result.IsChangePoint.Contains(true))
{
Console.WriteLine("A change point was detected at index:");
for (int i = 0; i < request.Series.Count; ++i)
{
if (result.IsChangePoint[i])
{
Console.Write(i);
Console.Write(" ");
}
}
Console.WriteLine();
}
else
{
Console.WriteLine("No change point detected in the series.");
}
}
Ejecución de la aplicación
Ejecute la aplicación con el comando dotnet run desde el directorio de la aplicación.
dotnet run
Limpieza de recursos
Si quiere limpiar y eliminar una suscripción a Cognitive Services, puede eliminar el recurso o 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:
- ¿Qué es Anomaly Detector API?
- Métodos de detección de anomalías
- Procedimientos recomendados cuando se usa Anomaly Detector API.
Tutoriales:
Comience a usar la biblioteca cliente de Anomaly Detector para JavaScript. 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 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.
Documentación de referencia de la biblioteca | Código fuente de la biblioteca | Paquete (npm) | Buscar el código en GitHub
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 haga clic en el botón Ir al recurso.
- Necesitará la clave y el punto de conexión del recurso que cree para conectar la aplicación a Anomaly Detector API. En una sección posterior de este mismo inicio rápido pegará la clave y el punto de conexión en el código siguiente.
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.
- Necesitará la clave y el punto de conexión del recurso que cree para conectar la aplicación a Anomaly Detector API. En una sección posterior de este mismo inicio rápido pegará la clave y el punto de conexión en el código siguiente.
Puede usar el plan de tarifa gratis (
Instalación
Creación de una variable de entorno
Nota
Los puntos de conexión de los recursos creados que no son de prueba usan desde el 1 de julio de 2019 el formato de subdominio personalizado que se muestra a continuación. Para más información y para obtener una lista completa de los puntos de conexión regionales, consulte Nombres de subdominios personalizados para Cognitive Services.
Con la clave y el punto de conexión del recurso que ha creado, cree dos variables de entorno para la autenticación:
ANOMALY_DETECTOR_KEY: la clave de recurso para autenticar las solicitudes.ANOMALY_DETECTOR_ENDPOINT: el punto de conexión del recurso para enviar solicitudes de API. Tendrá el siguiente aspecto:https://<your-custom-subdomain>.api.cognitive.microsoft.com
Siga las instrucciones adecuadas para su sistema operativo.
setx ANOMALY_DETECTOR_KEY <replace-with-your-anomaly-detector-key>
setx ANOMALY_DETECTOR_ENDPOINT <replace-with-your-anomaly-detector-endpoint>
Después de agregar la variable de entorno, reinicie la ventana de la consola.
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
Ejecute el comando npm init para crear una aplicación de nodo con un archivo package.json.
npm init
Cree un archivo llamado index.js e importe las bibliotecas siguientes:
'use strict'
const fs = require('fs');
const parse = require("csv-parse/lib/sync");
const { AnomalyDetectorClient } = require('@azure/ai-anomaly-detector');
const { AzureKeyCredential } = require('@azure/core-auth');
Cree variables para el punto de conexión y la clave de Azure del recurso. Si ha creado la variable de entorno después de haber iniciado la aplicación, deberá cerrar y volver a abrir el editor, el IDE o el shell que lo ejecuta para acceder a la variable. Cree otra variable para el archivo de datos de ejemplo que se descargará en un paso posterior y una lista vacía para los puntos de datos. Después, cree un objeto ApiKeyCredentials para que contenga la clave.
// Spreadsheet with 2 columns and n rows.
let CSV_FILE = './request-data.csv';
// Authentication variables
let key = 'PASTE_YOUR_ANOMALY_DETECTOR_SUBSCRIPTION_KEY_HERE';
let endpoint = 'PASTE_YOUR_ANOMALY_DETECTOR_ENDPOINT_HERE';
// Points array for the request body
let points = [];
Instalación de la biblioteca cliente
Instale los paquetes ms-rest-azure y azure-cognitiveservices-anomalydetector de NPM. La biblioteca de análisis de CSV también se usa en este inicio rápido:
npm install @azure/ai-anomaly-detector @azure/ms-rest-js csv-parse
el archivo package.json de la aplicación se actualizará con las dependencias.
Modelo de objetos
El cliente de Anomaly Detector es un objeto AnomalyDetectorClient que se autentica en Azure mediante la clave. El cliente puede realizar detección de anomalías en un conjunto de datos completo mediante entireDetect(), o en el punto de datos más reciente mediante LastDetect(). El método ChangePointDetectAsync detecta puntos que marcan los cambios en una tendencia.
Los datos de serie temporal se envían como una serie de objetos Point en un objeto Request. El objeto Request contiene propiedades para describir los datos (Granularidad, por ejemplo), así como los parámetros para la detección de anomalías.
La respuesta de Anomaly Detector es un objeto LastDetectResponse, EntireDetectResponse o ChangePointDetectResponse, según el método usado.
Ejemplos de código
Estos fragmentos de código muestran cómo realizar las siguientes acciones con la biblioteca cliente de Anomaly Detector para Node.js:
- Autenticar el cliente
- Cargar un conjunto de datos de serie temporal desde un archivo
- Detectar anomalías en todo el conjunto de datos
- Detectar el estado de anomalía del punto de datos más reciente
- Detección de los puntos de cambio en el conjunto de datos
Autenticar el cliente
Cree una instancia de un objeto AnomalyDetectorClient con el punto de conexión y las credenciales.
let anomalyDetectorClient = new AnomalyDetectorClient(endpoint, new AzureKeyCredential(key));
Cargar datos de serie temporal desde un archivo
Descargue los datos de ejemplo de este inicio rápido desde GitHub:
- En el explorador, haga clic con el botón derecho en Raw (Sin formato).
- Haga clic en Save link as (Guardar vínculo como).
- Guarde el archivo como .csv en el directorio de aplicaciones.
Estos datos de serie temporal tienen el formato de un archivo .csv y se enviarán a Anomaly Detector API.
Lea el archivo de datos con el método readFileSync() de la biblioteca de análisis de CSV y analice el archivo con parse(). Para cada línea, inserte un objeto Point que contenga la marca de tiempo y el valor numérico.
function readFile() {
let input = fs.readFileSync(CSV_FILE).toString();
let parsed = parse(input, { skip_empty_lines: true });
parsed.forEach(function (e) {
points.push({ timestamp: new Date(e[0]), value: parseFloat(e[1]) });
});
}
readFile()
Detectar anomalías en todo el conjunto de datos
Llame a la API para detectar anomalías en la serie temporal completa como un lote mediante el método entireDetect() del cliente. Almacene el objeto EntireDetectResponse 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.
async function batchCall() {
// Create request body for API call
let body = { series: points, granularity: 'daily' }
// Make the call to detect anomalies in whole series of points
await anomalyDetectorClient.detectEntireSeries(body)
.then((response) => {
console.log("Batch (entire) anomaly detection):")
for (let item = 0; item < response.isAnomaly.length; item++) {
if (response.isAnomaly[item]) {
console.log("An anomaly was detected from the series, at row " + item)
}
}
}).catch((error) => {
console.log(error)
})
}
batchCall()
Detección del estado de anomalía del punto de datos más reciente
Llame a la API Anomaly Detector para determinar si el punto de datos más reciente es una anomalía mediante el método lastDetect() del cliente y almacene el objeto LastDetectResponse devuelto. El valor isAnomaly de la respuesta es un valor booleano que especifica el estado de anomalía de ese punto.
async function lastDetection() {
let body = { series: points, granularity: 'daily' }
// Make the call to detect anomalies in the latest point of a series
await anomalyDetectorClient.detectLastPoint(body)
.then((response) => {
console.log("Latest point anomaly detection:")
if (response.isAnomaly) {
console.log("The latest point, in row " + points.length + ", is detected as an anomaly.")
} else {
console.log("The latest point, in row " + points.length + ", is not detected as an anomaly.")
}
}).catch((error) => {
console.log(error)
})
}
lastDetection()
Detección de los puntos de cambio en el conjunto de datos
Llame a la API para detectar los puntos de cambio de la serie temporal con el métododetectChangePoint() del cliente. Almacene el objeto ChangePointDetectResponse devuelto. Itere la lista isChangePoint de la respuesta e imprima el índice de los valores true. Estos valores corresponden a los índices de los puntos de cambio de tendencia, si se encuentra alguno.
async function changePointDetection() {
let body = { series: points, granularity: 'daily' }
// get change point detect results
await anomalyDetectorClient.detectChangePoint(body)
.then((response) => {
if (
response.isChangePoint.some(function (changePoint) {
return changePoint === true;
})
) {
console.log("Change points were detected from the series at index:");
response.isChangePoint.forEach(function (changePoint, index) {
if (changePoint === true) {
console.log(index);
}
});
} else {
console.log("There is no change point detected from the series.");
}
}).catch((error) => {
console.log(error)
})
}
Ejecución de la aplicación
Ejecute la aplicación con el comando node en el archivo de inicio rápido.
node index.js
Limpieza de recursos
Si quiere limpiar y eliminar una suscripción a Cognitive Services, puede eliminar el recurso o 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:
- ¿Qué es Anomaly Detector API?
- Métodos de detección de anomalías
- Procedimientos recomendados cuando se usa Anomaly Detector API.
Tutoriales:
Comience a usar la biblioteca cliente de Anomaly Detector para Python. 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 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.
Documentación de referencia de la biblioteca | Código fuente de la biblioteca | Paquete (PyPi) | Buscar el ejemplo de código en GitHub
Prerrequisitos
- Python 3.x
- La biblioteca de análisis de datos de Pandas
- 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 haga clic en el botón Ir al recurso.
- Necesitará la clave y el punto de conexión del recurso que cree para conectar la aplicación a Anomaly Detector API. En una sección posterior de este mismo inicio rápido pegará la clave y el punto de conexión en el código siguiente.
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.
- Necesitará la clave y el punto de conexión del recurso que cree para conectar la aplicación a Anomaly Detector API. En una sección posterior de este mismo inicio rápido pegará la clave y el punto de conexión en el código siguiente.
Puede usar el plan de tarifa gratis (
Instalación
Creación de una variable de entorno
Nota
Los puntos de conexión de los recursos creados que no son de prueba usan desde el 1 de julio de 2019 el formato de subdominio personalizado que se muestra a continuación. Para más información y para obtener una lista completa de los puntos de conexión regionales, consulte Nombres de subdominios personalizados para Cognitive Services.
Con la clave y el punto de conexión del recurso que ha creado, cree dos variables de entorno para la autenticación:
ANOMALY_DETECTOR_KEY: la clave de recurso para autenticar las solicitudes.ANOMALY_DETECTOR_ENDPOINT: el punto de conexión del recurso para enviar solicitudes de API. Tendrá el siguiente aspecto:https://<your-custom-subdomain>.api.cognitive.microsoft.com
Siga las instrucciones adecuadas para su sistema operativo.
setx ANOMALY_DETECTOR_KEY <replace-with-your-anomaly-detector-key>
setx ANOMALY_DETECTOR_ENDPOINT <replace-with-your-anomaly-detector-endpoint>
Después de agregar la variable de entorno, reinicie la ventana de la consola.
Creación de una nueva aplicación de Python
Cree un archivo de Python e importe las bibliotecas siguientes.
import os
from azure.ai.anomalydetector import AnomalyDetectorClient
from azure.ai.anomalydetector.models import DetectRequest, TimeSeriesPoint, TimeGranularity, \
AnomalyDetectorError
from azure.core.credentials import AzureKeyCredential
import pandas as pd
Cree variables para la clave como una variable de entorno, la ruta de acceso a un archivo de datos de serie temporal y la ubicación de Azure de su suscripción. Por ejemplo, westus2.
SUBSCRIPTION_KEY = os.environ["ANOMALY_DETECTOR_KEY"]
ANOMALY_DETECTOR_ENDPOINT = os.environ["ANOMALY_DETECTOR_ENDPOINT"]
TIME_SERIES_DATA_PATH = os.path.join("./sample_data", "request-data.csv")
Instalación de la biblioteca cliente
Después de instalar Python, puede instalar la biblioteca cliente con:
pip install --upgrade azure-ai-anomalydetector
Modelo de objetos
El cliente de Anomaly Detector es un objeto AnomalyDetectorClient que se autentica en Azure mediante la clave. El cliente puede realizar detección de anomalías en un conjunto de datos completo mediante detect_entire_series, o en el punto de datos más reciente mediante detect_last_point. La función detect_change_point detecta los puntos que marcan los cambios en una tendencia.
Los datos de series temporales se envían como una serie de objetos TimeSeriesPoints. Por ejemplo, el objeto DetectRequest contiene propiedades para describir los datos de TimeGranularity, así como los parámetros para la detección de anomalías.
La respuesta de Anomaly Detector es un objeto LastDetectResponse, EntireDetectResponse o ChangePointDetectResponse, según el método usado.
Ejemplos de código
Estos fragmentos de código muestran cómo realizar las siguientes acciones con la biblioteca cliente de Anomaly Detector para Python:
- Autenticar el cliente
- Cargar un conjunto de datos de serie temporal desde un archivo
- Detectar anomalías en todo el conjunto de datos
- Detectar el estado de anomalía del punto de datos más reciente
- Detección de los puntos de cambio en el conjunto de datos
Autenticar el cliente
Agregue la variable de ubicación de Azure al punto de conexión y autentique el cliente con la clave.
client = AnomalyDetectorClient(AzureKeyCredential(SUBSCRIPTION_KEY), ANOMALY_DETECTOR_ENDPOINT)
Cargar datos de serie temporal desde un archivo
Descargue los datos de ejemplo de este inicio rápido desde GitHub:
- En el explorador, haga clic con el botón derecho en Raw (Sin formato).
- Haga clic en Save link as (Guardar vínculo como).
- Guarde el archivo como .csv en el directorio de aplicaciones.
Estos datos de serie temporal tienen el formato de un archivo .csv y se enviarán a Anomaly Detector API.
Cargue el archivo de datos con el método read_csv() de la biblioteca de Pandas y cree una variable de lista vacía para almacenar la serie de datos. Itere el archivo y anexe los datos como un objeto TimeSeriesPoint. Este objeto contendrá la marca de tiempo y el valor numérico de las filas del archivo de datos .csv.
series = []
data_file = pd.read_csv(TIME_SERIES_DATA_PATH, header=None, encoding='utf-8', parse_dates=[0])
for index, row in data_file.iterrows():
series.append(TimeSeriesPoint(timestamp=row[0], value=row[1]))
Cree un objeto DetectRequest con la serie temporal y la TimeGranularity (o periodicidad) de sus puntos de datos. Por ejemplo, TimeGranularity.daily.
request = DetectRequest(series=series, granularity=TimeGranularity.daily)
Descripciones de argumentos de entrada: "series": necesario en la solicitud. debe ser tipo matriz o lista y tener más de 12 puntos y no más de 8640 puntos. debe ordenarse por marca de tiempo en orden ascendente y no puede tener una marca de tiempo duplicada. "granularidad": se requiere en la solicitud. solo puede ser uno de los siguientes: ['daily', 'minutely', 'hourly', 'weekly', 'monthly', 'yearly', 'secondly']. "customInterval": debe ser un entero >0. "period": debe ser un entero >0. "maxAnomalyRatio": debe ser inferior al 50 % de los puntos de la serie (0 < maxAnomalyRatio < 0,5). "sensitivity": debe ser un entero entre 0 y 99.
Detectar anomalías en todo el conjunto de datos
Llame a la API para detectar anomalías en el conjunto de datos de serie temporal mediante el método detect_entire_series del cliente. Almacene el objeto EntireDetectResponse devuelto. Itere la lista is_anomaly 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.
print('Detecting anomalies in the entire time series.')
try:
response = client.detect_entire_series(request)
except AnomalyDetectorError as e:
print('Error code: {}'.format(e.error.code), 'Error message: {}'.format(e.error.message))
except Exception as e:
print(e)
if any(response.is_anomaly):
print('An anomaly was detected at index:')
for i, value in enumerate(response.is_anomaly):
if value:
print(i)
else:
print('No anomalies were detected in the time series.')
Detección del estado de anomalía del punto de datos más reciente
Llame a la API Anomaly Detector para determinar si el punto de datos más reciente es una anomalía mediante el método detect_last_point del cliente y almacene el objeto LastDetectResponse devuelto. El valor is_anomaly de la respuesta es un valor booleano que especifica el estado de anomalía de ese punto.
print('Detecting the anomaly status of the latest data point.')
try:
response = client.detect_last_point(request)
except AnomalyDetectorError as e:
print('Error code: {}'.format(e.error.code), 'Error message: {}'.format(e.error.message))
except Exception as e:
print(e)
if response.is_anomaly:
print('The latest point is detected as anomaly.')
else:
print('The latest point is not detected as anomaly.')
Detección de los puntos de cambio en el conjunto de datos
Llame a la API para detectar los puntos de cambio de los datos de la serie temporal con el métododetect_change_point del cliente. Almacene el objeto ChangePointDetectResponse devuelto. Itere la lista is_change_point de la respuesta e imprima el índice de los valores true. Estos valores corresponden a los índices de los puntos de cambio de tendencia, si se encuentra alguno.
print('Detecting change points in the entire time series.')
try:
response = client.detect_change_point(request)
except AnomalyDetectorError as e:
print('Error code: {}'.format(e.error.code), 'Error message: {}'.format(e.error.message))
except Exception as e:
print(e)
if any(response.is_change_point):
print('An change point was detected at index:')
for i, value in enumerate(response.is_change_point):
if value:
print(i)
else:
print('No change point were detected in the time series.')
Ejecución de la aplicación
Ejecute la aplicación con el comando python en el nombre de archivo.
Limpieza de recursos
Si quiere limpiar y eliminar una suscripción a Cognitive Services, puede eliminar el recurso o 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:
- ¿Qué es Anomaly Detector API?
- Métodos de detección de anomalías
- Procedimientos recomendados cuando se usa Anomaly Detector API.
Tutoriales:
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.
- Necesitará la clave y la dirección del punto de conexión del recurso que ha creado para usar la API REST.
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.
- Necesitará la clave y la dirección del punto de conexión del recurso que ha creado para usar la API REST.
Puede usar el plan de tarifa gratis (
Detección de anomalías para una serie completa
En el símbolo del sistema, ejecute el siguiente comando. Tendrá que 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 -X POST "https://{endpointresourcename.cognitive.microsoft.com}/anomalydetector/v1.0/timeseries/entire/detect"
-H "Content-Type: application/json"
-H "Ocp-Apim-Subscription-Key: {subscription key}"
-d "@{path_to_file.json}"
Para obtener un ejemplo con todos los valores rellenados:
curl -v -X POST "https://my-resource-name.cognitiveservices.azure.com/anomalydetector/v1.0/timeseries/entire/detect" -H "Content-Type: application/json" -H "Ocp-Apim-Subscription-Key:1111112222222ed333333ab333333333" -d "@test.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 a Cognitive Services, puede eliminar el recurso o 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:
- ¿Qué es Anomaly Detector API?
- Métodos de detección de anomalías
- Procedimientos recomendados cuando se usa Anomaly Detector API.
Tutoriales: