빠른 시작: Anomaly Detector 클라이언트 라이브러리 사용Quickstart: Use the Anomaly Detector client library

.NET용 Anomaly Detector 클라이언트 라이브러리를 시작합니다.Get started with the Anomaly Detector client library for .NET. 이러한 단계에 따라 패키지를 설치하고 기본 작업을 위한 예제 코드를 사용해 봅니다.Follow these steps to install the package and try out the example code for basic tasks. Anomaly Detector 서비스를 사용하면 업계, 시나리오 또는 데이터 양에 관계없이 가장 적합한 모델을 자동으로 사용하여 시계열 데이터의 변칙을 찾을 수 있습니다.The Anomaly Detector service enables you to find abnormalities in your time series data by automatically using the best-fitting models on it, regardless of industry, scenario, or data volume.

.NET용 Anomaly Detector 클라이언트 라이브러리를 사용하여 다음을 수행할 수 있습니다.Use the Anomaly Detector client library for .NET to:

  • 일괄 요청으로 시계열 데이터 세트 전체에서 변칙 검색Detect anomalies throughout your time series dataset, as a batch request
  • 시계열에서 최신 데이터 요소의 변칙 상태 검색Detect the anomaly status of the latest data point in your time series

라이브러리 참조 설명서 | 라이브러리 소스 코드 | 패키지(NuGet) | GitHub에서 코드 찾기Library reference documentation | Library source code | Package (NuGet) | Find the code on GitHub

사전 요구 사항Prerequisites

  • Azure 구독 - 체험 구독 만들기Azure subscription - Create one for free
  • 최신 버전의 .NET CoreThe current version of .NET Core
  • Azure 구독을 보유한 후에는 Azure Portal에서 Anomaly Detector 리소스 를 만들어 키와 엔드포인트를 가져옵니다.Once you have your Azure subscription, create an Anomaly Detector resource in the Azure portal to get your key and endpoint. 배포될 때까지 기다렸다가 리소스로 이동 단추를 클릭합니다.Wait for it to deploy and click the Go to resource button.
    • 애플리케이션을 Anomaly Detector API에 연결하려면 만든 리소스의 키와 엔드포인트가 필요합니다.You will need the key and endpoint from the resource you create to connect your application to the Anomaly Detector API. 이 빠른 시작의 뒷부분에 나오는 코드에 키와 엔드포인트를 붙여넣습니다.You'll paste your key and endpoint into the code below later in the quickstart. 평가판 가격 책정 계층(F0)을 통해 서비스를 사용해보고, 나중에 프로덕션용 유료 계층으로 업그레이드할 수 있습니다.You can use the free pricing tier (F0) to try the service, and upgrade later to a paid tier for production.

설치Setting up

환경 변수 만들기Create an environment variable

참고

2019년 7월 1일 이후에 생성된 비평가판 리소스의 엔드포인트는 아래에 표시된 사용자 지정 하위 도메인 형식을 사용합니다.The endpoints for non-trial resources created after July 1, 2019 use the custom subdomain format shown below. 자세한 내용 및 지역별 엔드포인트의 전체 목록은 Cognitive Services에 대한 사용자 지정 하위 도메인 이름을 참조하세요.For more information and a complete list of regional endpoints, see Custom subdomain names for Cognitive Services.

만든 리소스의 키 및 엔드포인트를 사용하여 인증을 위한 두 가지 환경 변수를 만듭니다.Using your key and endpoint from the resource you created, create two environment variables for authentication:

  • ANOMALY_DETECTOR_KEY - 요청을 인증하기 위한 리소스 키입니다.ANOMALY_DETECTOR_KEY - The resource key for authenticating your requests.
  • ANOMALY_DETECTOR_ENDPOINT - API 요청을 보내기 위한 리소스 엔드포인트입니다.ANOMALY_DETECTOR_ENDPOINT - The resource endpoint for sending API requests. 다음과 같이 표시됩니다.It will look like this:
    • https://<your-custom-subdomain>.api.cognitive.microsoft.com

운영 체제에 대한 지침을 사용합니다.Use the instructions for your operating system.

setx ANOMALY_DETECTOR_KEY <replace-with-your-anomaly-detector-key>
setx ANOMALY_DETECTOR_ENDPOINT <replace-with-your-anomaly-detector-endpoint>

환경 변수를 추가한 후 콘솔 창을 다시 시작합니다.After you add the environment variable, restart the console window.

새 .NET Core 애플리케이션 만들기Create a new .NET Core application

콘솔 창(예: cmd, PowerShell 또는 Bash)에서 dotnet new 명령을 사용하여 anomaly-detector-quickstart라는 새 콘솔 앱을 만듭니다.In a console window (such as cmd, PowerShell, or Bash), use the dotnet new command to create a new console app with the name anomaly-detector-quickstart. 이 명령은 단일 C# 소스 파일을 사용하여 간단한 "Hello World" 프로젝트를 만듭니다. Program.cs라는 원본 파일 하나만 들어 있는 간단한 "Hello World" C# 프로젝트를 만듭니다.This command creates a simple "Hello World" project with a single C# source file: Program.cs.

dotnet new console -n anomaly-detector-quickstart

새로 만든 앱 폴더로 디렉터리를 변경합니다.Change your directory to the newly created app folder. 다음을 통해 애플리케이션을 빌드할 수 있습니다.You can build the application with:

dotnet build

빌드 출력에 경고나 오류가 포함되지 않아야 합니다.The build output should contain no warnings or errors.

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

클라이언트 라이브러리 설치Install the client library

애플리케이션 디렉터리 내에서 다음 명령을 사용하여 .NET용 Anomaly Detector 클라이언트 라이브러리를 설치합니다.Within the application directory, install the Anomaly Detector client library for .NET with the following command:

dotnet add package Microsoft.Azure.CognitiveServices.AnomalyDetector --version 0.8.0-preview

프로젝트 디렉터리에서 program.cs 파일을 열고 directives를 사용하여 다음을 추가합니다.From the project directory, open the program.cs file and add the following using 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;

애플리케이션의 main() 메서드에서 리소스의 Azure 위치에 대한 변수와 환경 변수인 키를 만듭니다.In the application's main() method, create variables for your resource's Azure location, and your key as an environment variable. 애플리케이션이 시작된 후 환경 변수를 만들었다면 애플리케이션을 실행 중인 편집기, IDE 또는 셸을 닫고 다시 로드해야 변수에 액세스할 수 있습니다.If you created the environment variable after application is launched, the editor, IDE, or shell running it will need to be closed and reloaded to access the 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

    Console.WriteLine("\nPress ENTER to exit.");
    Console.ReadLine();
}

개체 모델Object model

Anomaly Detector 클라이언트는 키가 포함된 ApiKeyServiceClientCredentials를 사용하여 Azure에 인증하는 AnomalyDetectorClient 개체입니다.The Anomaly Detector client is a AnomalyDetectorClient object that authenticates to Azure using ApiKeyServiceClientCredentials, which contains your key. 클라이언트는 다음과 같은 두 가지 변칙 검색 방법을 제공합니다. 전체 데이터 세트에 EntireDetectAsync() 사용, 최신 데이터 요소에 LastDetectAsync() 사용.The client provides two methods of anomaly detection: On an entire dataset using EntireDetectAsync(), and on the latest data point using LastDetectAsync().

시계열 데이터는 요청 개체에 일련의 포인트로 전송됩니다.Time series data is sent as a series of Points in a Request object. Request 개체에는 데이터를 설명하는 속성(예: Granularity) 및 변칙 검색용 매개 변수가 포함됩니다.The Request object contains properties to describe the data (Granularity for example), and parameters for the anomaly detection.

Anomaly Detector 응답은 사용된 메서드에 따라 EntireDetectResponse 또는 LastDetectResponse 개체입니다.The Anomaly Detector response is either an EntireDetectResponse or LastDetectResponse object, depending on the method used.

코드 예제Code examples

이 코드 조각은 .NET용 Anomaly Detector 클라이언트 라이브러리를 사용하여 다음을 수행하는 방법을 보여줍니다.These code snippets show you how to do the following with the Anomaly Detector client library for .NET:

클라이언트 인증Authenticate the client

새 메서드에서 엔드포인트 및 키를 사용하여 클라이언트를 인스턴스화합니다.In a new method, instantiate a client with your endpoint and key. 키를 사용하여 ApiKeyServiceClientCredentials 개체를 만들고, 엔드포인트에 이를 사용하여 AnomalyDetectorClient 개체를 만듭니다.Create an ApiKeyServiceClientCredentials object with your key, and use it with your endpoint to create an AnomalyDetectorClient object.

static IAnomalyDetectorClient createClient(string endpoint, string key)
{
    IAnomalyDetectorClient client = new AnomalyDetectorClient(new ApiKeyServiceClientCredentials(key))
    {
        Endpoint = endpoint
    };
    return client;
}

파일에서 시계열 데이터 로드Load time series data from a file

GitHub에서 이 빠른 시작의 예제 데이터를 다운로드합니다.Download the example data for this quickstart from GitHub:

  1. 브라우저에서 Raw를 마우스 오른쪽 단추로 클릭합니다.In your browser, right-click Raw.
  2. 다른 이름으로 링크 저장을 클릭합니다.Click Save link as.
  3. 해당 파일을 .csv 파일로 애플리케이션 디렉터리에 저장합니다.Save the file to your application directory, as a .csv file.

이 시계열 데이터는 .csv 파일로 형식이 지정되며 Anomaly Detector API로 전송됩니다.This time series data is formatted as a .csv file, and will be sent to the Anomaly Detector API.

시계열 데이터를 읽고 요청 개체에 추가하는 새 메서드를 만듭니다.Create a new method to read in the time series data and add it to a Request object. 파일 경로를 사용하여 File.ReadAllLines()를 호출하고 포인트 개체 목록을 만든 후 줄 바꿈 문자를 제거합니다.Call File.ReadAllLines() with the file path and create a list of Point objects, and strip any new line characters. 값을 추출하고 숫자 값에서 datestamp를 분리한 후 새 Point 개체에 추가합니다.Extract the values and separate the datestamp from its numerical value, and add them to a new Point object.

일련의 포인트와 데이터 요소의 세분성(또는 주기성)에 해당하는 Granularity.Daily를 사용하여 Request 개체를 만듭니다.Make a Request object with the series of points, and Granularity.Daily for the Granularity (or periodicity) of the data points.

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

전체 데이터 세트에서 변칙 검색Detect anomalies in the entire data set

Request 개체를 사용하여 클라이언트의 EntireDetectAsync() 메서드를 호출하는 메서드를 만들고 EntireDetectResponse 개체 응답을 기다립니다.Create a method to call the client's EntireDetectAsync() method with the Request object and await the response as an EntireDetectResponse object. 시계열에 변칙이 포함된 경우 응답의 IsAnomaly 값을 반복하고 true인 모든 값을 출력합니다.If the time series contains any anomalies, iterate through the response's IsAnomaly values and print any that are true. 이러한 값은 변칙 데이터 요소의 인덱스와 일치합니다(발견된 경우).These values correspond to the index of anomalous data points, if any were found.

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

최신 데이터 요소의 변칙 상태 검색Detect the anomaly status of the latest data point

Request 개체를 사용하여 클라이언트의 LastDetectAsync() 메서드를 호출하는 메서드를 만들고 LastDetectResponse 개체 응답을 기다립니다.Create a method to call the client's LastDetectAsync() method with the Request object and await the response as a LastDetectResponse object. 응답의 IsAnomaly 특성을 확인하여 전송된 최신 데이터 요소가 변칙인지 여부를 확인합니다.Check the response's IsAnomaly attribute to determine if the latest data point sent was an anomaly or not.

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

애플리케이션 실행Run the application

애플리케이션 디렉터리에서 dotnet run 명령을 사용하여 애플리케이션을 실행합니다.Run the application with the dotnet run command from your application directory.

dotnet run

리소스 정리Clean up resources

Cognitive Services 구독을 정리하고 제거하려면 리소스나 리소스 그룹을 삭제하면 됩니다.If you want to clean up and remove a Cognitive Services subscription, you can delete the resource or resource group. 리소스 그룹을 삭제하면 해당 리소스 그룹에 연결된 다른 모든 리소스가 함께 삭제됩니다.Deleting the resource group also deletes any other resources associated with the resource group.

다음 단계Next steps

개념:Concepts:

자습서:Tutorials:

JavaScript용 Anomaly Detector 클라이언트 라이브러리를 시작합니다.Get started with the Anomaly Detector client library for JavaScript. 이러한 단계에 따라 패키지를 설치하고 기본 작업을 위한 예제 코드를 사용해 봅니다.Follow these steps to install the package and try out the example code for basic tasks. Anomaly Detector 서비스를 사용하면 업계, 시나리오 또는 데이터 양에 관계없이 가장 적합한 모델을 자동으로 사용하여 시계열 데이터의 변칙을 찾을 수 있습니다.The Anomaly Detector service enables you to find abnormalities in your time series data by automatically using the best-fitting models on it, regardless of industry, scenario, or data volume.

JavaScript용 Anomaly Detector 클라이언트 라이브러리를 사용하여 다음을 수행합니다.Use the Anomaly Detector client library for JavaScript to:

  • 일괄 요청으로 시계열 데이터 세트 전체에서 변칙 검색Detect anomalies throughout your time series dataset, as a batch request
  • 시계열에서 최신 데이터 요소의 변칙 상태 검색Detect the anomaly status of the latest data point in your time series

참조 설명서 | 라이브러리 소스 코드 | 패키지(npm) | GitHub에서 코드 찾기Reference documentation | Library source code | Package (npm) | Find the code on GitHub

사전 요구 사항Prerequisites

  • Azure 구독 - 체험 구독 만들기Azure subscription - Create one for free
  • 현재 버전의 Node.jsThe current version of Node.js
  • Azure 구독을 보유한 후에는 Azure Portal에서 Anomaly Detector 리소스 를 만들어 키와 엔드포인트를 가져옵니다.Once you have your Azure subscription, create an Anomaly Detector resource in the Azure portal to get your key and endpoint. 배포될 때까지 기다렸다가 리소스로 이동 단추를 클릭합니다.Wait for it to deploy and click the Go to resource button.
    • 애플리케이션을 Anomaly Detector API에 연결하려면 만든 리소스의 키와 엔드포인트가 필요합니다.You will need the key and endpoint from the resource you create to connect your application to the Anomaly Detector API. 이 빠른 시작의 뒷부분에 나오는 코드에 키와 엔드포인트를 붙여넣습니다.You'll paste your key and endpoint into the code below later in the quickstart. 평가판 가격 책정 계층(F0)을 통해 서비스를 사용해보고, 나중에 프로덕션용 유료 계층으로 업그레이드할 수 있습니다.You can use the free pricing tier (F0) to try the service, and upgrade later to a paid tier for production.

설치Setting up

환경 변수 만들기Create an environment variable

참고

2019년 7월 1일 이후에 생성된 비평가판 리소스의 엔드포인트는 아래에 표시된 사용자 지정 하위 도메인 형식을 사용합니다.The endpoints for non-trial resources created after July 1, 2019 use the custom subdomain format shown below. 자세한 내용 및 지역별 엔드포인트의 전체 목록은 Cognitive Services에 대한 사용자 지정 하위 도메인 이름을 참조하세요.For more information and a complete list of regional endpoints, see Custom subdomain names for Cognitive Services.

만든 리소스의 키 및 엔드포인트를 사용하여 인증을 위한 두 가지 환경 변수를 만듭니다.Using your key and endpoint from the resource you created, create two environment variables for authentication:

  • ANOMALY_DETECTOR_KEY - 요청을 인증하기 위한 리소스 키입니다.ANOMALY_DETECTOR_KEY - The resource key for authenticating your requests.
  • ANOMALY_DETECTOR_ENDPOINT - API 요청을 보내기 위한 리소스 엔드포인트입니다.ANOMALY_DETECTOR_ENDPOINT - The resource endpoint for sending API requests. 다음과 같이 표시됩니다.It will look like this:
    • https://<your-custom-subdomain>.api.cognitive.microsoft.com

운영 체제에 대한 지침을 사용합니다.Use the instructions for your operating system.

setx ANOMALY_DETECTOR_KEY <replace-with-your-anomaly-detector-key>
setx ANOMALY_DETECTOR_ENDPOINT <replace-with-your-anomaly-detector-endpoint>

환경 변수를 추가한 후 콘솔 창을 다시 시작합니다.After you add the environment variable, restart the console window.

새 Node.js 애플리케이션 만들기Create a new Node.js application

콘솔 창(예: cmd, PowerShell 또는 Bash)에서 앱에 대한 새 디렉터리를 만들고 이 디렉터리로 이동합니다.In a console window (such as cmd, PowerShell, or Bash), create a new directory for your app, and navigate to it.

mkdir myapp && cd myapp

package.json 파일을 사용하여 노드 애플리케이션을 만들려면 npm init 명령을 실행합니다.Run the npm init command to create a node application with a package.json file.

npm init

파일 index.js를 만들고 다음 라이브러리를 가져옵니다.Create a file named index.js and import the following libraries:

'use strict'

const fs = require('fs')
const parse = require("csv-parse/lib/sync");
const AnomalyDetector = require('@azure/cognitiveservices-anomalydetector')
const msRest = require('@azure/ms-rest-js')

리소스의 Azure 엔드포인트 및 키에 대한 변수를 만듭니다.Create variables your resource's Azure endpoint and key. 애플리케이션을 시작한 후에 환경 변수를 만든 경우 이를 실행 중인 편집기, IDE 또는 셸을 닫고 다시 열어 해당 변수에 액세스해야 합니다.If you created the environment variable after you launched the application, you will need to close and reopen the editor, IDE, or shell running it to access the variable. 이후 단계에서 다운로드할 예제 데이터 파일에 대한 다른 변수와 데이터 지점에 대한 빈 목록을 만듭니다.Create another variable for the example data file you will download in a later step, and an empty list for the data points. 그런 다음, 키를 포함할 ApiKeyCredentials 개체를 만듭니다.Then create a ApiKeyCredentials object to contain the key.

// Spreadsheet with 2 columns and n rows.
let CSV_FILE = './request-data.csv'

// Authentication variables
// Add your Anomaly Detector subscription key and endpoint to your environment variables.
let key = process.env['ANOMALY_DETECTOR_KEY']
let endpoint = process.env['ANOMALY_DETECTOR_ENDPOINT']
let credentials = new msRest.ApiKeyCredentials({ inHeader: { 'Ocp-Apim-Subscription-Key': key } })
// Points array for the request body
let points = []

클라이언트 라이브러리 설치Install the client library

ms-rest-azureazure-cognitiveservices-anomalydetector NPM 패키지를 설치합니다.Install the ms-rest-azure and azure-cognitiveservices-anomalydetector NPM packages. csv-구문 분석 라이브러리는 이 빠른 시작에서도 사용됩니다.The csv-parse library is also used in this quickstart:

npm install  @azure/cognitiveservices-anomalydetector @azure/ms-rest-js csv-parse

종속성이 있는 앱의 package.json 파일이 업데이트됩니다.Your app's package.json file will be updated with the dependencies.

개체 모델Object model

Anomaly Detector 클라이언트는 키를 사용하여 Azure에 인증하는 AnomalyDetectorClient 개체입니다.The Anomaly Detector client is an AnomalyDetectorClient object that authenticates to Azure using your key. 클라이언트는 다음과 같은 두 가지 변칙 검색 방법을 제공합니다. 전체 데이터 세트에 entireDetect()를 사용하고, 최신 데이터 요소에 LastDetect()를 사용합니다.The client provides two methods of anomaly detection: On an entire dataset using entireDetect(), and on the latest data point using LastDetect().

시계열 데이터는 요청 개체에 일련의 포인트로 전송됩니다.Time series data is sent as series of Points in a Request object. Request 개체에는 데이터를 설명하는 속성(예: Granularity) 및 변칙 검색용 매개 변수가 포함됩니다.The Request object contains properties to describe the data (Granularity for example), and parameters for the anomaly detection.

Anomaly Detector 응답은 사용된 메서드에 따라 LastDetectResponse 또는 EntireDetectResponse 개체입니다.The Anomaly Detector response is a LastDetectResponse or EntireDetectResponse object depending on the method used.

코드 예제Code examples

이 코드 조각은 Node.js용 Anomaly Detector 클라이언트 라이브러리를 사용하여 다음을 수행하는 방법을 보여줍니다.These code snippets show you how to do the following with the Anomaly Detector client library for Node.js:

클라이언트 인증Authenticate the client

엔드포인트와 자격 증명을 사용하여 AnomalyDetectorClient 개체를 인스턴스화합니다.Instantiate a AnomalyDetectorClient object with your endpoint and credentials.

let anomalyDetectorClient = new AnomalyDetector.AnomalyDetectorClient(credentials, endpoint)

파일에서 시계열 데이터 로드Load time series data from a file

GitHub에서 이 빠른 시작의 예제 데이터를 다운로드합니다.Download the example data for this quickstart from GitHub:

  1. 브라우저에서 Raw를 마우스 오른쪽 단추로 클릭합니다.In your browser, right-click Raw.
  2. 다른 이름으로 링크 저장을 클릭합니다.Click Save link as.
  3. 해당 파일을 .csv 파일로 애플리케이션 디렉터리에 저장합니다.Save the file to your application directory, as a .csv file.

이 시계열 데이터는 .csv 파일로 형식이 지정되며 Anomaly Detector API로 전송됩니다.This time series data is formatted as a .csv file, and will be sent to the Anomaly Detector API.

csv-구문 분석 라이브러리의 readFileSync() 메서드를 사용하여 데이터 파일을 읽고 parse() 메서드를 사용하여 파일을 구문 분석합니다.Read your data file with the csv-parse library's readFileSync() method, and parse the file with parse(). 각 줄에서, 타임스탬프가 포함된 Point 개체와 숫자 값을 푸시합니다.For each line, push a Point object containing the timestamp, and the numeric value.

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

전체 데이터 세트에서 변칙 검색Detect anomalies in the entire data set

API를 호출하여 클라이언트의 entireDetect() 메서드를 통해 전체 시계열의 변칙을 일괄 처리로 검색합니다.Call the API to detect anomalies through the entire time series as a batch with the client's entireDetect() method. 반환된 EntireDetectResponse 개체를 저장합니다.Store the returned EntireDetectResponse object. 응답의 isAnomaly 목록을 반복하고 true 값의 인덱스를 출력합니다.Iterate through the response's isAnomaly list, and print the index of any true values. 이러한 값은 변칙 데이터 요소의 인덱스와 일치합니다(발견된 경우).These values correspond to the index of anomalous data points, if any were found.

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

최신 데이터 요소의 변칙 상태 검색Detect the anomaly status of the latest data point

Anomaly Detector API를 호출하여 클라이언트의 lastDetect() 메서드를 통해 최신 데이터 요소가 변칙인지 확인하고 반환된 LastDetectResponse 개체를 저장합니다.Call the Anomaly Detector API to determine if your latest data point is an anomaly using the client's lastDetect() method, and store the returned LastDetectResponse object. 응답의 isAnomaly 값은 해당 포인트의 변칙 상태를 지정하는 부울 값입니다.The response's isAnomaly value is a boolean that specifies that point's anomaly status.

async function lastDetection(){

    let body = { series: points, granularity: 'daily' }
        // Make the call to detect anomalies in the latest point of a series
        await anomalyDetectorClient.lastDetect(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()

애플리케이션 실행Run the application

quickstart 파일의 node 명령을 사용하여 애플리케이션을 실행합니다.Run the application with the node command on your quickstart file.

node index.js

리소스 정리Clean up resources

Cognitive Services 구독을 정리하고 제거하려면 리소스나 리소스 그룹을 삭제하면 됩니다.If you want to clean up and remove a Cognitive Services subscription, you can delete the resource or resource group. 리소스 그룹을 삭제하면 해당 리소스 그룹에 연결된 다른 모든 리소스가 함께 삭제됩니다.Deleting the resource group also deletes any other resources associated with the resource group.

다음 단계Next steps

개념:Concepts:

자습서:Tutorials:

Python용 Anomaly Detector 클라이언트 라이브러리를 시작합니다.Get started with the Anomaly Detector client library for Python. 이러한 단계에 따라 패키지를 설치하고 기본 작업을 위한 예제 코드를 사용해 봅니다.Follow these steps to install the package and try out the example code for basic tasks. Anomaly Detector 서비스를 사용하면 업계, 시나리오 또는 데이터 양에 관계없이 가장 적합한 모델을 자동으로 사용하여 시계열 데이터의 변칙을 찾을 수 있습니다.The Anomaly Detector service enables you to find abnormalities in your time series data by automatically using the best-fitting models on it, regardless of industry, scenario, or data volume.

Python용 Anomaly Detector 클라이언트 라이브러리를 사용하여 다음을 수행할 수 있습니다.Use the Anomaly Detector client library for Python to:

  • 일괄 요청으로 시계열 데이터 세트 전체에서 변칙 검색Detect anomalies throughout your time series dataset, as a batch request
  • 시계열에서 최신 데이터 요소의 변칙 상태 검색Detect the anomaly status of the latest data point in your time series

라이브러리 참조 설명서 | 라이브러리 소스 코드 | 패키지(PyPi) | GitHub에서 샘플 코드 찾기Library reference documentation | Library source code | Package (PyPi) | Find the sample code on GitHub

필수 구성 요소Prerequisites

  • Python 3.xPython 3.x
  • Pandas 데이터 분석 라이브러리The Pandas data analysis library
  • Azure 구독 - 체험 구독 만들기Azure subscription - Create one for free
  • Azure 구독을 보유한 후에는 Azure Portal에서 Anomaly Detector 리소스 를 만들어 키와 엔드포인트를 가져옵니다.Once you have your Azure subscription, create an Anomaly Detector resource in the Azure portal to get your key and endpoint. 배포될 때까지 기다렸다가 리소스로 이동 단추를 클릭합니다.Wait for it to deploy and click the Go to resource button.
    • 애플리케이션을 Anomaly Detector API에 연결하려면 만든 리소스의 키와 엔드포인트가 필요합니다.You will need the key and endpoint from the resource you create to connect your application to the Anomaly Detector API. 이 빠른 시작의 뒷부분에 나오는 코드에 키와 엔드포인트를 붙여넣습니다.You'll paste your key and endpoint into the code below later in the quickstart. 평가판 가격 책정 계층(F0)을 통해 서비스를 사용해보고, 나중에 프로덕션용 유료 계층으로 업그레이드할 수 있습니다.You can use the free pricing tier (F0) to try the service, and upgrade later to a paid tier for production.

설치Setting up

환경 변수 만들기Create an environment variable

참고

2019년 7월 1일 이후에 생성된 비평가판 리소스의 엔드포인트는 아래에 표시된 사용자 지정 하위 도메인 형식을 사용합니다.The endpoints for non-trial resources created after July 1, 2019 use the custom subdomain format shown below. 자세한 내용 및 지역별 엔드포인트의 전체 목록은 Cognitive Services에 대한 사용자 지정 하위 도메인 이름을 참조하세요.For more information and a complete list of regional endpoints, see Custom subdomain names for Cognitive Services.

만든 리소스의 키 및 엔드포인트를 사용하여 인증을 위한 두 가지 환경 변수를 만듭니다.Using your key and endpoint from the resource you created, create two environment variables for authentication:

  • ANOMALY_DETECTOR_KEY - 요청을 인증하기 위한 리소스 키입니다.ANOMALY_DETECTOR_KEY - The resource key for authenticating your requests.
  • ANOMALY_DETECTOR_ENDPOINT - API 요청을 보내기 위한 리소스 엔드포인트입니다.ANOMALY_DETECTOR_ENDPOINT - The resource endpoint for sending API requests. 다음과 같이 표시됩니다.It will look like this:
    • https://<your-custom-subdomain>.api.cognitive.microsoft.com

운영 체제에 대한 지침을 사용합니다.Use the instructions for your operating system.

setx ANOMALY_DETECTOR_KEY <replace-with-your-anomaly-detector-key>
setx ANOMALY_DETECTOR_ENDPOINT <replace-with-your-anomaly-detector-endpoint>

환경 변수를 추가한 후 콘솔 창을 다시 시작합니다.After you add the environment variable, restart the console window.

새 Python 애플리케이션 만들기Create a new python application

새 Python 파일을 만들고 다음 라이브러리를 가져옵니다.Create a new Python file and import the following libraries.

from azure.cognitiveservices.anomalydetector import AnomalyDetectorClient
from azure.cognitiveservices.anomalydetector.models import Request, Point, Granularity, \
    APIErrorException
from msrest.authentication import CognitiveServicesCredentials
import pandas as pd
import os

환경 변수, 시계열 데이터 파일의 경로 및 구독의 Azure 위치로 키에 대한 변수를 만듭니다.Create variables for your key as an environment variable, the path to a time series data file, and the azure location of your subscription. 예들 들어 westus2입니다.For example, westus2.

# This sample assumes you have created an environment variable for your key and endpoint
SUBSCRIPTION_KEY = os.environ["ANOMALY_DETECTOR_KEY"]
ANOMALY_DETECTOR_ENDPOINT = os.environ["ANOMALY_DETECTOR_ENDPOINT"]

TIME_SERIES_DATA_PATH = "request-data.csv"

클라이언트 라이브러리 설치Install the client library

Python을 설치한 후, 다음을 사용하여 클라이언트 라이브러리를 설치할 수 있습니다.After installing Python, you can install the client library with:

pip install --upgrade azure-cognitiveservices-anomalydetector

개체 모델Object model

Anomaly Detector 클라이언트는 키를 사용하여 Azure에 인증하는 AnomalyDetectorClient 개체입니다.The Anomaly Detector client is a AnomalyDetectorClient object that authenticates to Azure using your key. 클라이언트는 다음과 같은 두 가지 변칙 검색 방법을 제공합니다. 전체 데이터 세트에 entire_detect() 사용, 최신 데이터 요소에 Last_detect() 사용.The client provides two methods of anomaly detection: On an entire dataset using entire_detect(), and on the latest data point using Last_detect().

시계열 데이터는 요청 개체에 일련의 포인트로 전송됩니다.Time series data is sent as a series of Points in a Request object. Request 개체에는 데이터를 설명하는 속성(예: Granularity) 및 변칙 검색용 매개 변수가 포함됩니다.The Request object contains properties to describe the data (Granularity for example), and parameters for the anomaly detection.

Anomaly Detector 응답은 사용된 메서드에 따라 LastDetectResponse 또는 EntireDetectResponse 개체입니다.The Anomaly Detector response is a LastDetectResponse or EntireDetectResponse object depending on the method used.

코드 예제Code examples

이러한 코드 조각은 Python용 Anomaly Detector 클라이언트 라이브러리를 사용하여 다음을 수행하는 방법을 보여줍니다.These code snippets show you how to do the following with the Anomaly Detector client library for Python:

클라이언트 인증Authenticate the client

Azure 위치 변수를 엔드포인트에 추가하고 키를 사용하여 클라이언트를 인증합니다.Add your azure location variable to the endpoint, and authenticate the client with your key.

client = AnomalyDetectorClient(ANOMALY_DETECTOR_ENDPOINT, CognitiveServicesCredentials(SUBSCRIPTION_KEY))

파일에서 시계열 데이터 로드Load time series data from a file

GitHub에서 이 빠른 시작의 예제 데이터를 다운로드합니다.Download the example data for this quickstart from GitHub:

  1. 브라우저에서 Raw를 마우스 오른쪽 단추로 클릭합니다.In your browser, right-click Raw.
  2. 다른 이름으로 링크 저장을 클릭합니다.Click Save link as.
  3. 해당 파일을 .csv 파일로 애플리케이션 디렉터리에 저장합니다.Save the file to your application directory, as a .csv file.

이 시계열 데이터는 .csv 파일로 형식이 지정되며 Anomaly Detector API로 전송됩니다.This time series data is formatted as a .csv file, and will be sent to the Anomaly Detector API.

Pandas 라이브러리의 read_csv() 메서드를 사용하여 데이터 파일을 로드하고 데이터 시리즈를 저장할 빈 목록 변수를 만듭니다.Load your data file with the Pandas library's read_csv() method, and make an empty list variable to store your data series. 파일 전체에서 반복하고 데이터를 Point 개체로 추가합니다.Iterate through the file, and append the data as a Point object. 이 개체에는 .csv 데이터 파일의 행에 있는 타임스탬프와 숫자 값이 포함됩니다.This object will contain the timestamp and numerical value from the rows of your .csv data file.

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(Point(timestamp=row[0], value=row[1]))

시계열과 해당 데이터 포인트의 세분성(또는 주기성)을 사용하여 Request 개체를 만듭니다.Create a Request object with your time series, and the granularity (or periodicity) of its data points. 예들 들어 Granularity.daily입니다.For example, Granularity.daily.

request = Request(series=series, granularity=Granularity.daily)

전체 데이터 세트에서 변칙 검색Detect anomalies in the entire data set

API를 호출하여 클라이언트의 entire_detect() 메서드를 사용하여 전체 시계열 데이터에서 변칙을 검색합니다.Call the API to detect anomalies through the entire time series data using the client's entire_detect() method. 반환된 EntireDetectResponse 개체를 저장합니다.Store the returned EntireDetectResponse object. 응답의 is_anomaly 목록을 반복하고 true 값의 인덱스를 출력합니다.Iterate through the response's is_anomaly list, and print the index of any true values. 이러한 값은 변칙 데이터 요소의 인덱스와 일치합니다(발견된 경우).These values correspond to the index of anomalous data points, if any were found.

print('Detecting anomalies in the entire time series.')

try:
    response = client.entire_detect(request)
except Exception as e:
    if isinstance(e, APIErrorException):
        print('Error code: {}'.format(e.error.code),
            'Error message: {}'.format(e.error.message))
    else:
        print(e)

if True in response.is_anomaly:
    print('An anomaly was detected at index:')
    for i in range(len(response.is_anomaly)):
        if response.is_anomaly[i]:
            print(i)
else:
    print('No anomalies were detected in the time series.')

최신 데이터 요소의 변칙 상태 검색Detect the anomaly status of the latest data point

Anomaly Detector API를 호출하여 클라이언트의 last_detect() 메서드를 사용하여 최신 데이터 요소가 변칙인지 확인하고 반환된 LastDetectResponse 개체를 저장합니다.Call the Anomaly Detector API to determine if your latest data point is an anomaly using the client's last_detect() method, and store the returned LastDetectResponse object. 응답의 is_anomaly 값은 해당 포인트의 변칙 상태를 지정하는 부울 값입니다.The response's is_anomaly value is a boolean that specifies that point's anomaly status.

print('Detecting the anomaly status of the latest data point.')

try:
    response = client.last_detect(request)
except Exception as e:
    if isinstance(e, APIErrorException):
        print('Error code: {}'.format(e.error.code),
            'Error message: {}'.format(e.error.message))
    else:
        print(e)

if response.is_anomaly:
    print('The latest point is detected as anomaly.')
else:
    print('The latest point is not detected as anomaly.')

애플리케이션 실행Run the application

python 명령 및 파일 이름을 사용하여 애플리케이션을 실행합니다.Run the application with the python command and your file name.

리소스 정리Clean up resources

Cognitive Services 구독을 정리하고 제거하려면 리소스나 리소스 그룹을 삭제하면 됩니다.If you want to clean up and remove a Cognitive Services subscription, you can delete the resource or resource group. 리소스 그룹을 삭제하면 해당 리소스 그룹에 연결된 다른 모든 리소스가 함께 삭제됩니다.Deleting the resource group also deletes any other resources associated with the resource group.

다음 단계Next steps

개념:Concepts:

자습서:Tutorials: