Hızlı Başlangıç: Tek Değişkenli Anomali Algılayıcısı istemci kitaplığını kullanma
Kitaplık başvuru belgeleri |Kitaplık kaynak kodu | Paket (NuGet) |GitHub'da örnek kodu bulma
C# için Anomali Algılayıcısı istemci kitaplığını kullanmaya başlayın. Paketi yüklemek için bu adımları izleyin ve hizmet tarafından sağlanan algoritmaları kullanmaya başlayın. Anomali Algılayıcısı hizmeti, endüstri, senaryo veya veri hacmi ne olursa olsun zaman serisi verilerinizdeki anormallikleri otomatik olarak en uygun modelleri kullanarak bulmanızı sağlar.
C# için Anomali Algılayıcısı istemci kitaplığını kullanarak:
- Zaman serisi veri kümenizdeki anomalileri toplu istek olarak algılama
- Zaman serinizdeki en son veri noktasının anomali durumunu algılama
- Veri kümenizdeki eğilim değişiklik noktalarını algılama.
Önkoşullar
- Azure aboneliği - Ücretsiz bir abonelik oluşturun
- .NET Core'un geçerli sürümü
- Azure aboneliğinizi aldıktan sonra anahtarınızı ve uç noktanızı almak için Azure portal bir Anomali Algılayıcısı kaynağı oluşturun. Dağıtmasını bekleyin ve Kaynağa git düğmesini seçin. Ücretsiz fiyatlandırma katmanını (
F0
) kullanarak hizmeti deneyebilir ve daha sonra üretim için ücretli bir katmana yükseltebilirsiniz.
Kurulum
Yeni bir .NET Core uygulaması oluşturma
Konsol penceresinde (cmd, PowerShell veya Bash gibi) komutunu kullanarak dotnet new
adlı anomaly-detector-quickstart
yeni bir konsol uygulaması oluşturun. Bu komut, tek bir C# kaynak dosyasıyla basit bir "Merhaba Dünya" projesi oluşturur: Program.cs.
dotnet new console -n anomaly-detector-quickstart
Dizininizi yeni oluşturulan uygulama klasörüyle değiştirin. Uygulamayı şu şekilde oluşturabilirsiniz:
dotnet build
Derleme çıkışı hiçbir uyarı veya hata içermemelidir.
...
Build succeeded.
0 Warning(s)
0 Error(s)
...
İstemci kitaplığını yükleme
Uygulama dizininde aşağıdaki komutu kullanarak .NET için Anomali Algılayıcısı istemci kitaplığını yükleyin:
dotnet add package Azure.AI.AnomalyDetector --prerelease
Anahtar ve uç noktayı alma
Anomali Algılayıcısı hizmetine karşı başarılı bir şekilde çağrı yapmak için aşağıdaki değerlere ihtiyacınız olacaktır:
Değişken adı | Değer |
---|---|
ANOMALY_DETECTOR_ENDPOINT |
Bu değer, Azure portal kaynağınızı incelerken Anahtarlar & Uç Noktası bölümünde bulunabilir. Örnek uç nokta: https://YOUR_RESOURCE_NAME.cognitiveservices.azure.com/ |
ANOMALY_DETECTOR_API_KEY |
API anahtar değeri, Azure portal kaynağınızı incelerken AnahtarLar & Uç Noktası bölümünde bulunabilir. KEY1 veya KEY2 kullanabilirsiniz. |
DATA_PATH |
Bu hızlı başlangıçta request-data.csv GitHub örnek verilerimizden indirilebilen dosya kullanılmaktadır. Örnek yol: c:\\test\\request-data.csv |
Azure portal kaynağınıza gidin. Uç Nokta ve AnahtarlarKaynak Yönetimi bölümünde bulunabilir. Hem API çağrılarınızın kimliğini doğrulamak için ihtiyaç duyacağınız için uç noktanızı ve erişim anahtarınızı kopyalayın. KEY1
veya KEY2
kullanabilirsiniz. Her zaman iki anahtara sahip olmak, hizmet kesintisine neden olmadan anahtarları güvenli bir şekilde döndürmenize ve yeniden oluşturmanıza olanak tanır.
Ortam değişkenlerini oluşturma
Anahtarınız ve uç noktanız için kalıcı ortam değişkenleri oluşturun ve atayın.
setx ANOMALY_DETECTOR_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx ANOMALY_DETECTOR_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"
Örnek verileri indirme
Bu hızlı başlangıçta request-data.csv
GitHub örnek verilerimizden indirilebilen dosya kullanılmaktadır
Aşağıdakini çalıştırarak örnek verileri de indirebilirsiniz:
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
Anomalileri algılama
Proje dizininden program.cs dosyasını açın ve değerini aşağıdaki kodla değiştirin:
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.");
}
}
}
}
Önemli
Üretim için Azure Key Vault gibi kimlik bilgilerinizi depolamanın ve bunlara erişmenin güvenli bir yolunu kullanın. Kimlik bilgisi güvenliği hakkında daha fazla bilgi için Azure AI hizmetleri güvenlik makalesine bakın.
dotnet run program.cs
Çıktı
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
Kod ayrıntıları
Sonuçlarınızı anlama
Yukarıdaki kodda örnek veriler okunur ve bir DetectRequest
nesneye dönüştürülür. Dosya yolu ile çağrısı File.ReadAllLines
yapıp nesnelerin listesini TimeSeriesPoint
oluşturur ve yeni satır karakterlerini çıkarırız. Değerleri ayıklayın ve zaman damgasını sayısal değerinden ayırın ve bunları yeni TimeSeriesPoint
bir nesneye ekleyin. DetectRequest
nesnesi, veri noktalarının tanecikliği (veya dönemselliği) için olan TimeGranularity.Daily
bir dizi veri noktasından oluşur.
Daha sonra nesnesiyle DetectRequest
istemcinin DetectEntireSeriesAsync
yöntemini çağıracağız ve yanıtı bir EntireDetectResponse
nesne olarak bekleyeceğiz. Ardından yanıtın IsAnomaly
değerlerini yineler ve doğru olan değerleri yazdırırız. Bu değerler, varsa anormal veri noktalarının dizinine karşılık gelir.
Kaynakları temizleme
bir Anomali Algılayıcısı kaynağını temizlemek ve kaldırmak istiyorsanız, kaynağı veya kaynak grubunu silebilirsiniz. Kaynak grubunun silinmesi, kaynak grubuyla ilişkili diğer tüm kaynakları da siler. Artık kullanmayı düşünmüyorsanız, oluşturduğunuz ortam değişkenlerini silmeyi de düşünebilirsiniz.
Kitaplık başvuru belgeleri |Kitaplık kaynak kodu | Paket (npm) |GitHub'da örnek kodu bulma
JavaScript için Anomali Algılayıcısı istemci kitaplığını kullanmaya başlayın. Paketi yüklemek için bu adımları izleyin ve hizmet tarafından sağlanan algoritmaları kullanmaya başlayın. Anomali Algılayıcısı hizmeti, endüstri, senaryo veya veri hacmi ne olursa olsun zaman serisi verilerinizde en uygun modeli otomatik olarak kullanarak anormallikleri bulmanıza olanak tanır.
JavaScript için Anomali Algılayıcısı istemci kitaplığını kullanarak:
- Zaman serisi veri kümenizdeki anomalileri toplu istek olarak algılama
- Zaman serinizdeki en son veri noktasının anomali durumunu algılama
- Veri kümenizdeki eğilim değişiklik noktalarını algılama.
Önkoşullar
- Azure aboneliği - Ücretsiz bir abonelik oluşturun
- Node.js'in geçerli sürümü
- Azure aboneliğinizi aldıktan sonra anahtarınızı ve uç noktanızı almak için Azure portal bir Anomali Algılayıcısı kaynağı oluşturun. Dağıtmasını bekleyin ve Kaynağa git düğmesini seçin.
- Uygulamanızı Anomali Algılayıcısı API'sine bağlamak için oluşturduğunuz kaynaktan anahtara ve uç noktaya ihtiyacınız olacaktır. Ortam değişkenleri oluşturmak için anahtarı ve uç noktayı kullanacaksınız.
Ücretsiz fiyatlandırma katmanını (
F0
) kullanarak hizmeti deneyebilir ve daha sonra üretim için ücretli bir katmana yükseltebilirsiniz.
- Uygulamanızı Anomali Algılayıcısı API'sine bağlamak için oluşturduğunuz kaynaktan anahtara ve uç noktaya ihtiyacınız olacaktır. Ortam değişkenleri oluşturmak için anahtarı ve uç noktayı kullanacaksınız.
Ücretsiz fiyatlandırma katmanını (
Kurulum
Yeni bir Node.js uygulaması oluşturma
Konsol penceresinde (cmd, PowerShell veya Bash gibi), uygulamanız için yeni bir dizin oluşturun ve bu dizine gidin.
mkdir myapp && cd myapp
Aşağıdaki içeriklere sahip bir package.json
dosya oluşturun:
{
"dependencies": {
"@azure/ai-anomaly-detector": "next",
"@azure-rest/ai-anomaly-detector": "next",
"@azure/core-auth": "^1.3.0",
"csv-parse": "^5.3.0"
}
}
İstemci kitaplığını yükleme
Package.json dosyanızla aynı dizinden aşağıdakini çalıştırarak gerekli npm paketlerini yükleyin:
npm install
Anahtar ve uç noktayı alma
Anomali Algılayıcısı hizmetine karşı başarılı bir şekilde çağrı yapmak için aşağıdaki değerlere ihtiyacınız olacaktır:
Değişken adı | Değer |
---|---|
ANOMALY_DETECTOR_ENDPOINT |
Bu değer, Azure portal kaynağınızı incelerken Anahtarlar & Uç Noktası bölümünde bulunabilir. Örnek uç nokta: https://YOUR_RESOURCE_NAME.cognitiveservices.azure.com/ |
ANOMALY_DETECTOR_API_KEY |
API anahtar değeri, Azure portal kaynağınızı incelerken AnahtarLar & Uç Noktası bölümünde bulunabilir. KEY1 veya KEY2 kullanabilirsiniz. |
datapath |
Bu hızlı başlangıçta request-data.csv GitHub örnek verilerimizden indirilebilen dosya kullanılmaktadır. |
Azure portal kaynağınıza gidin. Uç Nokta ve AnahtarlarKaynak Yönetimi bölümünde bulunabilir. API çağrılarınızın kimliğini doğrulamak için gerek duyacağınız uç noktanızı ve erişim anahtarınızı kopyalayın. KEY1
veya KEY2
kullanabilirsiniz. Her zaman iki anahtara sahip olmak, hizmet kesintisine neden olmadan anahtarları güvenli bir şekilde döndürmenize ve yeniden oluşturmanıza olanak tanır.
Ortam değişkenlerini oluşturma
Anahtarınız ve uç noktanız için kalıcı ortam değişkenleri oluşturun ve atayın.
setx ANOMALY_DETECTOR_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx ANOMALY_DETECTOR_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"
Örnek verileri indirme
Bu hızlı başlangıçta GitHub örnek verilerimizden indirilebilen dosya kullanılır request-data.csv
Aşağıdakini çalıştırarak örnek verileri de indirebilirsiniz:
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
Anomalileri algılama
adlı index.js
bir dosya oluşturun ve öğesini aşağıdaki kodla değiştirin:
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 };
Uygulamayı çalıştırma
Hızlı başlangıç dosyanızda komutunu kullanarak node
uygulamayı çalıştırın.
node index.js
Çıktı
Anomalies were detected from the series at index:
3
18
21
22
23
24
25
28
29
30
31
32
35
44
Sonuçlarınızı anlama
Yukarıdaki kodda, istemcinin detectEntireSeries() yöntemiyle bir toplu iş olarak zaman serisinin tamamında anomalileri algılamak için Anomali Algılayıcısı API'sini çağırırız. Döndürülen AnomalyDetectorDetectEntireSeriesResponse nesnesini depolarız . Ardından yanıtın isAnomaly
listesini yineler ve tüm true
değerlerin dizinini yazdırırız. Bu değerler, varsa anormal veri noktalarının dizinine karşılık gelir.
Kaynakları temizleme
bir Anomali Algılayıcısı kaynağını temizlemek ve kaldırmak istiyorsanız, kaynağı veya kaynak grubunu silebilirsiniz. Kaynak grubunun silinmesi, kaynak grubuyla ilişkili diğer tüm kaynakları da siler. Artık kullanmayı düşünmüyorsanız, oluşturduğunuz ortam değişkenlerini silmeyi de düşünebilirsiniz.
Kitaplık başvuru belgeleri |Kitaplık kaynak kodu | Paket (PyPi) |GitHub'da örnek kodu bulma
Python için Anomali Algılayıcısı istemci kitaplığını kullanmaya başlayın. Paketi yüklemek ve hizmet tarafından sağlanan algoritmaları kullanmaya başlamak için bu adımları izleyin. Anomali Algılayıcısı hizmeti, endüstri, senaryo veya veri hacmi ne olursa olsun, zaman serisi verilerinizdeki anormallikleri otomatik olarak en uygun modelleri kullanarak bulmanızı sağlar.
Python için Anomali Algılayıcısı istemci kitaplığını kullanarak:
- Toplu istek olarak zaman serisi veri kümenizdeki anomalileri algılama
- Zaman serinizdeki en son veri noktasının anomali durumunu algılama
- Veri kümenizdeki eğilim değişiklik noktalarını algılama.
Önkoşullar
- Azure aboneliği - Ücretsiz bir abonelik oluşturun
- Python 3.x
- Pandas veri analizi kitaplığı
- Azure aboneliğinizi aldıktan sonra anahtarınızı ve uç noktanızı almak için Azure portal bir Anomali Algılayıcısı kaynağı oluşturun. Dağıtmasını bekleyin ve Kaynağa git düğmesini seçin. Ücretsiz fiyatlandırma katmanını (
F0
) kullanarak hizmeti deneyebilir ve daha sonra üretim için ücretli bir katmana yükseltebilirsiniz.
Kurulum
İstemci kitaplığını yükleyin. İstemci kitaplığını şu şekilde yükleyebilirsiniz:
pip install --upgrade azure.ai.anomalydetector
Anahtar ve uç noktayı alma
Anomali Algılayıcısı hizmetinde başarılı bir şekilde çağrı yapmak için aşağıdaki değerlere ihtiyacınız olacaktır:
Değişken adı | Değer |
---|---|
ANOMALY_DETECTOR_ENDPOINT |
Bu değer, Azure portal kaynağınızı incelerken Anahtarlar & Uç Noktası bölümünde bulunabilir. Örnek uç nokta: https://YOUR_RESOURCE_NAME.cognitiveservices.azure.com/ |
ANOMALY_DETECTOR_API_KEY |
API anahtarı değeri, Azure portal kaynağınızı incelerken Anahtarlar & Uç Noktası bölümünde bulunabilir. KEY1 veya KEY2 kullanabilirsiniz. |
DATA_PATH |
Bu hızlı başlangıçta request-data.csv GitHub örnek verilerimizden indirilebilen dosya kullanılmaktadır. Örnek yol: c:\\test\\request-data.csv |
Azure portal kaynağınıza gidin. Uç Nokta ve AnahtarlarKaynak Yönetimi bölümünde bulunabilir. API çağrılarınızın kimliğini doğrulamak için gerek duyacağınız uç noktanızı ve erişim anahtarınızı kopyalayın. KEY1
veya KEY2
kullanabilirsiniz. Her zaman iki anahtara sahip olmak, hizmet kesintisine neden olmadan anahtarları güvenli bir şekilde döndürmenize ve yeniden oluşturmanıza olanak tanır.
Ortam değişkenlerini oluşturma
Anahtarınız ve uç noktanız için kalıcı ortam değişkenleri oluşturun ve atayın.
setx ANOMALY_DETECTOR_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx ANOMALY_DETECTOR_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"
Örnek verileri indirme
Bu hızlı başlangıçta GitHub örnek verilerimizden indirilebilen dosya kullanılır request-data.csv
Aşağıdakini çalıştırarak örnek verileri de indirebilirsiniz:
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
Anomalileri algılama
quickstart.py adlı yeni bir Python dosyası oluşturun. Ardından tercih ettiğiniz düzenleyicide veya IDE'de açın.
quickstart.py içeriğini aşağıdaki kodla değiştirin. Anahtarınızın, uç noktanızın ve zaman serisi veri yolunun ortam değişkeni adlarını eklemek için kodu değiştirin:
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))
Önemli
Üretim için Azure Key Vault gibi kimlik bilgilerinizi depolamanın ve bunlara erişmenin güvenli bir yolunu kullanın. Kimlik bilgisi güvenliği hakkında daha fazla bilgi için Azure AI hizmetleri güvenlik makalesine bakın.
Hızlı başlangıç dosyanızda komutuyla
python
uygulamayı çalıştırmapython quickstart.py
Çıktı
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
Sonuçlarınızı anlama
Yukarıdaki kodumuzda Anomali Algılayıcısı API'sini iki kez çağırırız. İlk çağrı, yöntemiyle detect_change_point
örnek veri serimizdeki eğilim değişiklik noktalarını denetler. Bu çağrı, adlı change_point_request
değişkende ChangePointDetectResponse
depoladığımız bir döndürür. Ardından yanıtın is_change_point
listesinde yinelenir ve herhangi bir değerin dizinini boole değeriyle true
yazdırırız.
İkinci çağrı, yöntemini kullanarak örnek veri serisinin tamamında detect_entire_series
anomalileri denetler. Bu çağrı, adlı anomaly_response
değişkende EntireDetectResponse
depoladığımız bir döndürür. Yanıtın is_anomaly
listesinde yinelemeler yapıyoruz ve herhangi bir değerin dizinini boole değeriyle true
yazdırıyoruz. Alternatif olarak, gerçek zamanlı verilerdeki anomalileri algılamak için daha uygun olan yöntemini kullanabilirdik detect_last_point
. Daha fazla bilgi edinmek için en iyi yöntemler kılavuzuna başvurun.
Sonuçları görselleştirme
Anomalileri görselleştirmek ve örnek veri serisine göre noktaları değiştirmek için popüler açık kaynak kitaplık matplotlib'ini kullanacağız.
Kitaplığı yükleyin.
pip install matplotlib
quickstart.py dosyanızı aşağıdaki kodla değiştirin:
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 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()
Önemli
Üretim için Azure Key Vault gibi kimlik bilgilerinizi depolamanın ve bunlara erişmenin güvenli bir yolunu kullanın. Kimlik bilgisi güvenliği hakkında daha fazla bilgi için Azure AI hizmetleri güvenlik makalesine bakın.
Hızlı başlangıç dosyanızda komutuyla
python
uygulamayı çalıştırmapython quickstart.py
Çıktı
Bu kod örneğinde, normal veri noktalarını görselleştirmemize ve değişiklik noktalarından matplotlib
ve anomalilerden kolayca ayırt etmemize olanak sağlamak için kitaplığını ekledik. Değişiklik noktaları mavi karelerle, anomaliler kırmızı üçgenlerle ve normal veri noktaları yeşil dairelerle gösterilir. Tarihler, y eksenindeki grafikler için kolay grafik değerleri sağlamak üzere 's date2num
yöntemi kullanılarak matplotlib
sayılara dönüştürülür.
Kaynakları temizleme
bir Anomali Algılayıcısı kaynağını temizlemek ve kaldırmak istiyorsanız, kaynağı veya kaynak grubunu silebilirsiniz. Kaynak grubunun silinmesi, kaynak grubuyla ilişkili diğer tüm kaynakları da siler. Artık kullanmayı düşünmüyorsanız, oluşturduğunuz ortam değişkenlerini silmeyi de düşünebilirsiniz.
Bu hızlı başlangıçta, Anomali Algılayıcısı hizmetini ve cURL'yi kullanarak bir dizi zaman serisi verisindeki anomalileri algılamayı öğreneceksiniz.
Anomali Algılayıcısı kavramlarına üst düzey bir bakış için genel bakış makalesine bakın.
Önkoşullar
- Azure aboneliği - Ücretsiz bir abonelik oluşturun
- Azure aboneliğinizi aldıktan sonra anahtarınızı ve uç noktanızı almak için Azure portal bir Anomali Algılayıcısı kaynağı oluşturun. Dağıtmasını bekleyin ve Kaynağa git düğmesini seçin. Ücretsiz fiyatlandırma katmanını (
F0
) kullanarak hizmeti deneyebilir ve daha sonra üretim için ücretli bir katmana yükseltebilirsiniz. - Anomalileri test etmek için geçerli bir zaman serisi veri JSON dosyası. Kendi dosyanız yoksa İstek gövdesi örneğinden bir sample.json dosyası oluşturabilirsiniz
Anahtar ve uç noktayı alma
Anomali Algılayıcısı hizmetine karşı başarılı bir şekilde çağrı yapmak için aşağıdaki değerlere ihtiyacınız olacaktır:
Değişken adı | Değer |
---|---|
ANOMALY_DETECTOR_ENDPOINT |
Bu değer, Azure portal kaynağınızı incelerken Anahtarlar & Uç Noktası bölümünde bulunabilir. Örnek uç nokta: https://YOUR_RESOURCE_NAME.cognitiveservices.azure.com/ |
ANOMALY_DETECTOR_API_KEY |
API anahtar değeri, Azure portal kaynağınızı incelerken AnahtarLar & Uç Noktası bölümünde bulunabilir. KEY1 veya KEY2 kullanabilirsiniz. |
Azure portal kaynağınıza gidin. Uç Nokta ve AnahtarlarKaynak Yönetimi bölümünde bulunabilir. Hem API çağrılarınızın kimliğini doğrulamak için ihtiyaç duyacağınız için uç noktanızı ve erişim anahtarınızı kopyalayın. KEY1
veya KEY2
kullanabilirsiniz. Her zaman iki anahtara sahip olmak, hizmet kesintisine neden olmadan anahtarları güvenli bir şekilde döndürmenize ve yeniden oluşturmanıza olanak tanır.
Ortam değişkenlerini oluşturma
Anahtarınız ve uç noktanız için kalıcı ortam değişkenleri oluşturun ve atayın.
setx ANOMALY_DETECTOR_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx ANOMALY_DETECTOR_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"
Anomalileri algılama
Komut isteminde aşağıdaki komutu çalıştırın. Komutuna aşağıdaki değerleri eklemeniz gerekir.
- Anomali algılayıcısı hizmet abonelik anahtarınız.
- Anomali algılayıcısı uç nokta adresiniz.
- Anomalileri test etmek için geçerli bir zaman serisi veri JSON dosyası. Kendi dosyanız yoksa İstek gövdesi örneğinden bir sample.json dosyası oluşturabilirsiniz.
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"
Tek satır olarak tam komut örneği:
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"
Alternatif olarak, bash kabuğundan cURL komutunu çalıştırıyorsanız komutunuz biraz farklı olabilir:
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"
Önkoşullardan alınan örnek verileri kullandıysanız aşağıdaki sonuçları içeren bir yanıt 200 almanız gerekir:
{
"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
}
Daha fazla bilgi için bkz. Anomali Algılama REST başvurusu.
Kaynakları temizleme
Azure AI hizmetleri aboneliğini temizlemek ve kaldırmak istiyorsanız, kaynağı veya kaynak grubunu silebilirsiniz. Kaynak grubunun silinmesi, kaynak grubuyla ilişkili diğer tüm kaynakları da siler.
Sonraki adımlar
Kavramlar:
- Anomali Algılayıcısı API'si nedir?
- Anomali algılama yöntemleri
- Anomali Algılayıcısı API'sini kullanırken en iyi yöntemler.
Öğreticiler: