Guida introduttiva: Usare la libreria client univariate Rilevamento anomalie

Importante

A partire dal 20 settembre 2023 non sarà possibile creare nuove risorse Rilevamento anomalie. Il servizio Rilevamento anomalie viene ritirato il 1° ottobre 2026.

Documentazione di riferimento della libreria |Pacchetto del codice | sorgente della libreria (NuGet) |Trovare il codice di esempio in GitHub

Introduzione alla libreria client Rilevamento anomalie per C#. Seguire questi passaggi per installare il pacchetto e iniziare a usare gli algoritmi forniti dal servizio. Il servizio Rilevamento anomalie consente di trovare le anomalie nei dati delle serie temporali applicando automaticamente i modelli di mapping più appropriati, indipendentemente dal settore, dallo scenario o dal volume di dati.

Usare la libreria client Rilevamento anomalie per C# per:

  • Rilevare anomalie nell'intero set di dati della serie temporale come richiesta batch
  • Rilevare lo stato di anomalia del punto dati più recente nella serie temporale
  • Rilevare i punti di modifica di una tendenza nel set di dati.

Prerequisiti

  • Una sottoscrizione di Azure: creare un account gratuitamente
  • Versione corrente di .NET Core
  • Dopo aver creato la sottoscrizione di Azure, creare una risorsa Rilevamento anomalie nel portale di Azure per ottenere la chiave e l'endpoint. Attendere che venga distribuita, quindi selezionare pulsante Vai alla risorsa. È possibile usare il piano tariffario gratuito (F0) per provare il servizio ed eseguire in un secondo momento l'aggiornamento a un livello a pagamento per la produzione.

Impostazione

Creare una nuova applicazione .NET Core

In una finestra di una console, ad esempio cmd, PowerShell o Bash, usare il comando dotnet new per creare una nuova app console con il nome anomaly-detector-quickstart. Questo comando crea un semplice progetto "Hello World" con un singolo file di origine C#: Program.cs.

dotnet new console -n anomaly-detector-quickstart

Spostarsi nella cartella dell'app appena creata. È possibile compilare l'applicazione con il comando seguente:

dotnet build

L'output di compilazione non deve contenere alcun avviso o errore.

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

Installare la libreria client

All'interno della directory dell'applicazione, installare la libreria client di Rilevamento anomalie per .NET con il comando seguente:

dotnet add package Azure.AI.AnomalyDetector --prerelease

Recuperare la chiave e l'endpoint

Per effettuare correttamente una chiamata al servizio Rilevamento anomalie, sono necessari i valori seguenti:

Nome variabile Valore
ANOMALY_DETECTOR_ENDPOINT Questo valore è disponibile nella sezione Chiavi &ed endpoint durante l'esame della risorsa dalla portale di Azure. Endpoint di esempio: https://YOUR_RESOURCE_NAME.cognitiveservices.azure.com/
ANOMALY_DETECTOR_API_KEY Il valore della chiave API è disponibile nella sezione Chiavi ed endpoint quando si esamina la risorsa dal portale di Azure. Puoi usare entrambi KEY1 o KEY2.
DATA_PATH Questo argomento di avvio rapido usa il request-data.csv file che può essere scaricato dai dati di esempio di GitHub. Percorso di esempio: c:\\test\\request-data.csv

Passare alla risorsa nel portale di Azure. L'endpoint e le chiavi sono disponibili nella sezione Gestione risorse. Copiare l'endpoint e la chiave di accesso perché saranno necessari entrambi per l'autenticazione delle chiamate API. Puoi usare entrambi KEY1 o KEY2. Avere sempre due chiavi consente di ruotare e rigenerare le chiavi in modo sicuro senza causare un'interruzione del servizio.

Creare variabili di ambiente

Creare e assegnare variabili di ambiente persistenti per la chiave e l'endpoint.

setx ANOMALY_DETECTOR_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx ANOMALY_DETECTOR_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"

Scaricare i dati di esempio

Questa guida introduttiva usa il request-data.csv file che può essere scaricato dai dati di esempio di GitHub

È anche possibile scaricare i dati di esempio eseguendo:

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

Rileva anomalie

Dalla directory del progetto aprire il file program.cs e sostituire con il codice seguente:

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


Importante

Per l'ambiente di produzione, usare un modo sicuro per archiviare e accedere alle credenziali, ad esempio Azure Key Vault. Per altre informazioni sulla sicurezza delle credenziali, vedere l'articolo sicurezza dei servizi di intelligenza artificiale di Azure.

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

Dettagli del codice

Informazioni sui risultati

Nel codice precedente i dati di esempio vengono letti e convertiti in un DetectRequest oggetto . Viene chiamato File.ReadAllLines con il percorso del file e viene creato un elenco di TimeSeriesPoint oggetti ed è possibile rimuovere tutti i nuovi caratteri di riga. Estrarre i valori e separare il timestamp dal relativo valore numerico e aggiungerli a un nuovo TimeSeriesPoint oggetto. L'oggetto DetectRequest è costituito da una serie di punti dati, con TimeGranularity.Daily per la granularità (o periodicità) dei punti dati. Chiamare quindi il metodo del DetectEntireSeriesAsync client con l'oggetto DetectRequest e attendere la risposta come EntireDetectResponse oggetto . I valori della risposta vengono quindi scorrere i valori della IsAnomaly risposta e stampare qualsiasi valore true. Questi valori corrispondono all'indice dei punti dati anomali, se presenti.

Pulire le risorse

Se si vuole pulire e rimuovere una risorsa Rilevamento anomalie, è possibile eliminare la risorsa o il gruppo di risorse. L'eliminazione del gruppo di risorse comporta anche l'eliminazione di tutte le altre risorse associate. È anche possibile prendere in considerazione l'eliminazione delle variabili di ambiente create se non si intende più usarle.

Documentazione di riferimento della libreria |Pacchetto del codice | sorgente della libreria (npm) |Trovare il codice di esempio in GitHub

Questo argomento costituisce un'introduzione alla libreria client di Rilevamento anomalie per JavaScript. Seguire questa procedura per installare il pacchetto e iniziare a usare gli algoritmi forniti dal servizio. Il servizio Rilevamento anomalie consente di trovare anomalie nei dati delle serie temporali usando automaticamente il modello più appropriato, indipendentemente dal settore, dallo scenario o dal volume di dati.

Usare la libreria client di Rilevamento anomalie per JavaScript per:

  • Rilevare anomalie nell'intero set di dati della serie temporale come richiesta batch
  • Rilevare lo stato di anomalia del punto dati più recente nella serie temporale
  • Rilevare i punti di modifica di una tendenza nel set di dati.

Prerequisiti

  • Una sottoscrizione di Azure: creare un account gratuitamente
  • Versione corrente di Node.js
  • Dopo aver creato la sottoscrizione di Azure, creare una risorsa Rilevamento anomalie nel portale di Azure per ottenere la chiave e l'endpoint. Attendere che venga distribuita, quindi selezionare pulsante Vai alla risorsa.
    • Sarà necessaria la chiave e l'endpoint della risorsa creata per connettere l'applicazione all'API Rilevamento anomalie. Si useranno la chiave e l'endpoint per creare variabili di ambiente. È possibile usare il piano tariffario gratuito (F0) per provare il servizio ed eseguire in un secondo momento l'aggiornamento a un livello a pagamento per la produzione.

Impostazione

Creare una nuova applicazione Node.js

In una finestra della console, ad esempio cmd, PowerShell o Bash, creare e passare a una nuova directory per l'app.

mkdir myapp && cd myapp

Creare un package.json file con il contenuto seguente:

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

Installare la libreria client

Installare i pacchetti npm necessari eseguendo quanto segue dalla stessa directory del file package.json:

npm install

Recuperare la chiave e l'endpoint

Per effettuare correttamente una chiamata al servizio Rilevamento anomalie, sono necessari i valori seguenti:

Nome variabile Valore
ANOMALY_DETECTOR_ENDPOINT Questo valore è disponibile nella sezione Chiavi &ed endpoint durante l'esame della risorsa dalla portale di Azure. Endpoint di esempio: https://YOUR_RESOURCE_NAME.cognitiveservices.azure.com/
ANOMALY_DETECTOR_API_KEY Il valore della chiave API è disponibile nella sezione Chiavi ed endpoint quando si esamina la risorsa dal portale di Azure. Puoi usare entrambi KEY1 o KEY2.
datapath Questo argomento di avvio rapido usa il request-data.csv file che può essere scaricato dai dati di esempio di GitHub.

Passare alla risorsa nel portale di Azure. L'endpoint e le chiavi sono disponibili nella sezione Gestione risorse. Copiare l'endpoint e la chiave di accesso perché saranno necessari entrambi per l'autenticazione delle chiamate API. Puoi usare entrambi KEY1 o KEY2. Avere sempre due chiavi consente di ruotare e rigenerare le chiavi in modo sicuro senza causare un'interruzione del servizio.

Creare variabili di ambiente

Creare e assegnare variabili di ambiente persistenti per la chiave e l'endpoint.

setx ANOMALY_DETECTOR_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx ANOMALY_DETECTOR_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"

Scaricare i dati di esempio

Questa guida introduttiva usa il request-data.csv file che può essere scaricato dai dati di esempio di GitHub

È anche possibile scaricare i dati di esempio eseguendo:

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

Rileva anomalie

Creare un file denominato index.js e sostituire con il codice seguente:

const AnomalyDetector = require("@azure-rest/ai-anomaly-detector").default,
  { isUnexpected } = require("@azure-rest/ai-anomaly-detector");
const { AzureKeyCredential } = require("@azure/core-auth");

const { parse } = require("csv-parse/sync");
const fs = require("fs");

// You will need to set this environment variables or edit the following values
const apiKey = process.env["ANOMALY_DETECTOR_API_KEY"] || "";
const endpoint = process.env["ANOMALY_DETECTOR_ENDPOINT"] || "";
const timeSeriesDataPath = "./request-data.csv";

function read_series_from_file(path) {
  let result = Array();
  let input = fs.readFileSync(path).toString();
  let parsed = parse(input, { skip_empty_lines: true });
  parsed.forEach(function (e) {
    result.push({ timestamp: new Date(e[0]), value: Number(e[1]) });
  });
  return result;
}

async function main() {
  // create client
  const credential = new AzureKeyCredential(apiKey);
  const client = AnomalyDetector(endpoint, credential);

  // construct request
  const options = {
    body: {
      granularity: "daily",
      imputeMode: "auto",
      maxAnomalyRatio: 0.25,
      sensitivity: 95,
      series: read_series_from_file(timeSeriesDataPath),
    },
    headers: { "Content-Type": "application/json" },
  };

  // get last detect result
  const result = await client.path("/timeseries/entire/detect").post(options);
  if (isUnexpected(result)) {
    throw result;
  }

  if (result.body.isAnomaly) {
    result.body.isAnomaly.forEach(function (anomaly, index) {
      if (anomaly === true) {
        console.log(index);
      }
    });
  } else {
    console.log("There is no anomaly detected from the series.");
  }

}

main().catch((err) => {
  console.error("The sample encountered an error:", err);
});

module.exports = { main };

Eseguire l'applicazione

Eseguire l'applicazione con il comando node nel file quickstart.

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

Informazioni sui risultati

Nel codice precedente viene chiamata l'API Rilevamento anomalie per rilevare le anomalie nell'intera serie temporale come batch con il metodo detectEntireSeries() del client. Archiviamo l'oggetto AnomalyDetectorDetectEntireSeriesResponse restituito. Si scorre quindi l'elenco della isAnomaly risposta e si stampa l'indice di tutti i true valori. Questi valori corrispondono all'indice dei punti dati anomali, se presenti.

Pulire le risorse

Se si vuole pulire e rimuovere una risorsa Rilevamento anomalie, è possibile eliminare la risorsa o il gruppo di risorse. L'eliminazione del gruppo di risorse comporta anche l'eliminazione di tutte le altre risorse associate. È anche possibile prendere in considerazione l'eliminazione delle variabili di ambiente create se non si intende più usarle.

Documentazione di riferimento della libreria |Codice sorgente della libreria | Pacchetto (PyPi) |Trovare il codice di esempio in GitHub

Questo argomento costituisce un'introduzione alla libreria client di Rilevamento anomalie per Python. Seguire questa procedura per installare il pacchetto e iniziare a usare gli algoritmi forniti dal servizio. Il servizio Rilevamento anomalie consente di trovare le anomalie nei dati delle serie temporali applicando automaticamente i modelli di mapping più appropriati, indipendentemente dal settore, dallo scenario o dal volume di dati.

Usare la libreria client di Rilevamento anomalie per Python per:

  • Rilevare anomalie nell'intero set di dati della serie temporale come richiesta batch
  • Rilevare lo stato di anomalia del punto dati più recente nella serie temporale
  • Rilevare i punti di modifica di una tendenza nel set di dati.

Prerequisiti

  • Una sottoscrizione di Azure: creare un account gratuitamente
  • Python 3.x
  • Libreria di analisi dei dati Pandas
  • Dopo aver creato la sottoscrizione di Azure, creare una risorsa Rilevamento anomalie nel portale di Azure per ottenere la chiave e l'endpoint. Attendere che venga distribuita, quindi selezionare pulsante Vai alla risorsa. È possibile usare il piano tariffario gratuito (F0) per provare il servizio ed eseguire in un secondo momento l'aggiornamento a un livello a pagamento per la produzione.

Impostazione

Installare la libreria client. È possibile installare la libreria client con:

pip install --upgrade azure.ai.anomalydetector

Recuperare la chiave e l'endpoint

Per effettuare correttamente una chiamata al servizio Rilevamento anomalie, sono necessari i valori seguenti:

Nome variabile Valore
ANOMALY_DETECTOR_ENDPOINT Questo valore è disponibile nella sezione Chiavi &ed endpoint durante l'esame della risorsa dalla portale di Azure. Endpoint di esempio: https://YOUR_RESOURCE_NAME.cognitiveservices.azure.com/
ANOMALY_DETECTOR_API_KEY Il valore della chiave API è disponibile nella sezione Chiavi ed endpoint quando si esamina la risorsa dal portale di Azure. Puoi usare entrambi KEY1 o KEY2.
DATA_PATH Questo argomento di avvio rapido usa il request-data.csv file che può essere scaricato dai dati di esempio di GitHub. Percorso di esempio: c:\\test\\request-data.csv

Passare alla risorsa nel portale di Azure. L'endpoint e le chiavi sono disponibili nella sezione Gestione risorse. Copiare l'endpoint e la chiave di accesso perché saranno necessari entrambi per l'autenticazione delle chiamate API. Puoi usare entrambi KEY1 o KEY2. Avere sempre due chiavi consente di ruotare e rigenerare le chiavi in modo sicuro senza causare un'interruzione del servizio.

Creare variabili di ambiente

Creare e assegnare variabili di ambiente persistenti per la chiave e l'endpoint.

setx ANOMALY_DETECTOR_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx ANOMALY_DETECTOR_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"

Scaricare i dati di esempio

Questa guida introduttiva usa il request-data.csv file che può essere scaricato dai dati di esempio di GitHub

È anche possibile scaricare i dati di esempio eseguendo:

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

Rileva anomalie

  1. Creare un nuovo file Python denominato quickstart.py. Aprirlo quindi nell'editor o nell'IDE preferito.

  2. Sostituire il contenuto di quickstart.py con il codice seguente. Modificare il codice per aggiungere i nomi delle variabili di ambiente per la chiave, l'endpoint e il percorso dei dati delle serie temporali:

    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

    Per l'ambiente di produzione, usare un modo sicuro per archiviare e accedere alle credenziali, ad esempio Azure Key Vault. Per altre informazioni sulla sicurezza delle credenziali, vedere l'articolo sicurezza dei servizi di intelligenza artificiale di Azure.

  3. Eseguire l'applicazione con il comando nel python file di avvio rapido

    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

Informazioni sui risultati

Nel codice precedente si chiama l'API Rilevamento anomalie due volte. La prima chiamata verifica la presenza di punti di modifica della tendenza nella serie di dati di esempio con il detect_change_point metodo . Questa chiamata restituisce un oggetto ChangePointDetectResponse archiviato in una variabile denominata change_point_request. Si scorre quindi l'elenco della is_change_point risposta e si stampa l'indice di tutti i valori con un valore booleano di true.

La seconda chiamata controlla l'intera serie di dati di esempio per rilevare anomalie usando il detect_entire_series metodo . Questa chiamata restituisce un oggetto EntireDetectResponse archiviato in una variabile denominata anomaly_response. Viene eseguita l'iterazione dell'elenco della is_anomaly risposta e viene stampato l'indice di tutti i valori con un valore booleano di true. In alternativa, è possibile usare il detect_last_point metodo , più appropriato per rilevare anomalie nei dati in tempo reale. Per altre informazioni, vedere la guida alle procedure consigliate.

Visualizzare i risultati

Per visualizzare le anomalie e i punti di modifica in relazione alla serie di dati di esempio, si userà la popolare libreria open source matplotlib.

  1. Installare la libreria .

    pip install matplotlib
    
  2. Modificare il file quickstart.py con il codice seguente:

    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

    Per l'ambiente di produzione, usare un modo sicuro per archiviare e accedere alle credenziali, ad esempio Azure Key Vault. Per altre informazioni sulla sicurezza delle credenziali, vedere l'articolo sicurezza dei servizi di intelligenza artificiale di Azure.

  3. Eseguire l'applicazione con il comando nel python file di avvio rapido

    python quickstart.py
    

Output

In questo esempio di codice è stata aggiunta la matplotlib libreria per consentire di visualizzare e distinguere facilmente i normali punti dati dai punti di modifica e dalle anomalie. I punti di modifica sono rappresentati da quadrati blu, le anomalie sono triangoli rossi e i normali punti dati sono cerchi verdi. Le date vengono convertite in numeri usando matplotlibil metodo s date2num per fornire valori descrittivi per i grafici per l'asse y dei grafici.

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

Pulire le risorse

Se si vuole pulire e rimuovere una risorsa Rilevamento anomalie, è possibile eliminare la risorsa o il gruppo di risorse. L'eliminazione del gruppo di risorse comporta anche l'eliminazione di tutte le altre risorse associate. È anche possibile prendere in considerazione l'eliminazione delle variabili di ambiente create se non si intende più usarle.

Questa guida di avvio rapido illustra come rilevare anomalie in un batch di dati di serie temporali usando il servizio Rilevamento anomalie e cURL.

Per informazioni generali sui concetti di Rilevamento anomalie, vedere l'articolo Panoramica.

Prerequisiti

  • Una sottoscrizione di Azure: creare un account gratuitamente
  • Dopo aver creato la sottoscrizione di Azure, creare una risorsa Rilevamento anomalie nel portale di Azure per ottenere la chiave e l'endpoint. Attendere che venga distribuita, quindi selezionare pulsante Vai alla risorsa. È possibile usare il piano tariffario gratuito (F0) per provare il servizio ed eseguire in un secondo momento l'aggiornamento a un livello a pagamento per la produzione.
  • Un file JSON valido di dati di serie temporali per verificare la presenza di anomalie. Se non si ha un file personalizzato, è possibile creare un file sample.json dall'esempio di corpo della richiesta

Recuperare la chiave e l'endpoint

Per effettuare correttamente una chiamata al servizio Rilevamento anomalie, sono necessari i valori seguenti:

Nome variabile Valore
ANOMALY_DETECTOR_ENDPOINT Questo valore è disponibile nella sezione Chiavi &ed endpoint durante l'esame della risorsa dalla portale di Azure. Endpoint di esempio: https://YOUR_RESOURCE_NAME.cognitiveservices.azure.com/
ANOMALY_DETECTOR_API_KEY Il valore della chiave API è disponibile nella sezione Chiavi ed endpoint quando si esamina la risorsa dal portale di Azure. Puoi usare entrambi KEY1 o KEY2.

Passare alla risorsa nel portale di Azure. L'endpoint e le chiavi sono disponibili nella sezione Gestione risorse. Copiare l'endpoint e la chiave di accesso perché saranno necessari entrambi per l'autenticazione delle chiamate API. Puoi usare entrambi KEY1 o KEY2. Avere sempre due chiavi consente di ruotare e rigenerare le chiavi in modo sicuro senza causare un'interruzione del servizio.

Creare variabili di ambiente

Creare e assegnare variabili di ambiente persistenti per la chiave e l'endpoint.

setx ANOMALY_DETECTOR_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx ANOMALY_DETECTOR_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

Rileva anomalie

Al prompt dei comandi, eseguire questo comando. È necessario inserire i valori seguenti nel comando .

  • La chiave di sottoscrizione del servizio Rilevamento anomalie.
  • L'indirizzo dell'endpoint di Rilevamento anomalie.
  • Un file JSON valido di dati di serie temporali per verificare la presenza di anomalie. Se non è disponibile un file, è possibile creare un file sample.json dall'esempio di corpo della richiesta.
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" 

Esempio del comando completo come singola riga:

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"

In alternativa, se si esegue il comando cURL da una shell Bash, il comando sarà leggermente diverso:

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 sono stati usati i dati di esempio dei prerequisiti, si dovrebbe ricevere una risposta 200 con i risultati seguenti:

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

Per altre informazioni, vedere le informazioni di riferimento sull'API REST Rilevamento anomalie.

Pulire le risorse

Se si vuole pulire e rimuovere una sottoscrizione dei servizi di intelligenza artificiale di Azure, è possibile eliminare la risorsa o il gruppo di risorse. Eliminando il gruppo di risorse vengono eliminate anche le altre risorse associate al gruppo.

Passaggi successivi

Concetti:

Esercitazioni: