Hızlı başlangıç: anomali algılayıcı tek değişkenli istemci kitaplığını kullanma
C# için anomali algılayıcı istemci kitaplığını kullanmaya başlayın. Hizmet tarafından sunulan algoritmaları kullanarak paketi başlatmak için bu adımları izleyin. Anomali algılayıcı hizmeti, sektör, senaryo veya veri hacminin ne olursa olsun, üzerinde en iyi şekilde sığdırma modellerini kullanarak zaman serisi verilerinizde yer alan anormallikleri bulmanıza olanak sağlar.
C# için anomali algılayıcı istemci kitaplığını kullanarak şunları yapın:
- Bir toplu istek olarak zaman serisi veri kümesi genelinde anomali algılama
- Zaman serinizdeki en son veri noktasının anomali durumunu Algıla
- Veri kümesindeki eğilim değişiklik noktalarını tespit edin.
Kitaplık başvuru belgeleri | Kitaplık kaynak kodu | Paket (NuGet) | GitHub kodu bulma
Önkoşullar
- Azure aboneliği- ücretsiz olarak bir tane oluşturun
- Geçerli .NET Core sürümü
- Azure aboneliğiniz olduktan sonra anahtar ve uç noktanıza ulaşmak için Azure Portal bir anomali algılayıcı kaynağı oluşturun. Dağıtım için bekleyin ve Kaynağa Git düğmesine tıklayın.
- Uygulamanızı anomali algılayıcı API 'sine bağlamak için oluşturduğunuz kaynaktaki anahtar ve uç nokta gerekir. Anahtarınızı ve uç noktanızı daha sonra hızlı başlangıçta aşağıdaki koda yapıştırabilirsiniz.
F0Hizmeti denemek ve daha sonra üretime yönelik ücretli bir katmana yükseltmek için ücretsiz fiyatlandırma katmanını () kullanabilirsiniz.
- Uygulamanızı anomali algılayıcı API 'sine bağlamak için oluşturduğunuz kaynaktaki anahtar ve uç nokta gerekir. Anahtarınızı ve uç noktanızı daha sonra hızlı başlangıçta aşağıdaki koda yapıştırabilirsiniz.
Ayarlanıyor
Ortam değişkeni oluşturma
Not
1 Temmuz 2019 ' den sonra oluşturulan deneme olmayan kaynaklar için uç noktalar aşağıda gösterilen özel alt etki alanı biçimini kullanır. Daha fazla bilgi ve bölgesel uç noktaların tamamen listesi için bkz. bilişsel Hizmetler Için özel alt etki alanı adları.
Oluşturduğunuz kaynaktan anahtarınızı ve uç noktayı kullanarak, kimlik doğrulama için iki ortam değişkeni oluşturun:
ANOMALY_DETECTOR_KEY-İsteklerinizin kimliğini doğrulamak için kaynak anahtarı.ANOMALY_DETECTOR_ENDPOINT-API istekleri göndermek için kaynak uç noktası. Şu şekilde görünür:https://<your-custom-subdomain>.api.cognitive.microsoft.com
İşletim sisteminiz için yönergeleri kullanın.
setx ANOMALY_DETECTOR_KEY <replace-with-your-anomaly-detector-key>
setx ANOMALY_DETECTOR_ENDPOINT <replace-with-your-anomaly-detector-endpoint>
Ortam değişkenini ekledikten sonra konsol penceresini yeniden başlatın.
Yeni bir .NET Core uygulaması oluşturma
Konsol penceresinde (cmd, PowerShell veya Bash gibi), dotnet new adıyla yeni bir konsol uygulaması oluşturmak için komutunu kullanın anomaly-detector-quickstart . Bu komut, tek bir C# kaynak dosyası olan 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ı ile oluşturabilirsiniz:
dotnet build
Derleme çıktısı hiçbir uyarı veya hata içermemelidir.
...
Build succeeded.
0 Warning(s)
0 Error(s)
...
İstemci kitaplığını yükler
Uygulama dizini içinde, aşağıdaki komutla .NET için anomali algılayıcı istemci Kitaplığı ' nı bir daha yükleyeceksiniz:
dotnet add package Microsoft.Azure.CognitiveServices.AnomalyDetector
Proje dizininden program. cs dosyasını açın ve aşağıdakileri kullanarak aşağıdakileri ekleyin 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;
Uygulamanın main() yönteminde, kaynağınızın Azure konumu ve anahtarınızın bir ortam değişkeni olarak değişkenlerini oluşturun. Uygulama başlatıldıktan sonra ortam değişkenini oluşturduysanız, bu dosyayı çalıştıran düzenleyicinin, IDE 'nin veya kabuğun kapatılıp yeniden yüklenmesi gerekir.
static void Main(string[] args){
//This sample assumes you have created an environment variable for your key and endpoint
string endpoint = Environment.GetEnvironmentVariable("ANOMALY_DETECTOR_ENDPOINT");
string key = Environment.GetEnvironmentVariable("ANOMALY_DETECTOR_KEY");
string datapath = "request-data.csv";
IAnomalyDetectorClient client = createClient(endpoint, key); //Anomaly Detector client
Request request = GetSeriesFromFile(datapath); // The request payload with points from the data file
EntireDetectSampleAsync(client, request).Wait(); // Async method for batch anomaly detection
LastDetectSampleAsync(client, request).Wait(); // Async method for analyzing the latest data point in the set
DetectChangePoint(client, request).Wait(); // Async method for change point detection
Console.WriteLine("\nPress ENTER to exit.");
Console.ReadLine();
}
Nesne modeli
Anomali algılayıcı istemcisi, anahtarınızı içeren ApiKeyServiceClientCredentialskullanarak Azure 'da kimlik doğrulaması yapan bir anorivtorclient nesnesidir. İstemci, Entiredetectasync ()kullanarak bir veri kümesinin tamamında veya lastdetectasync ()kullanan en son veri noktasında anomali algılama yapabilir. Changepointdetectasync yöntemi, bir eğilim içindeki değişiklikleri işaretleyen noktaları algılar.
Zaman serisi verileri, istek nesnesinde bir dizi işaret olarak gönderilir. RequestNesnesi, verileri (örneğin,ayrıntı düzeyi ) ve anomali algılama parametrelerini tanımlayacak özellikler içerir.
Anomali algılayıcısı yanıtı, kullanılan yönteme bağlı olarak bir Entiredetectresponse, lastdetectresponseveya changepointdetectresponse nesnesidir.
Kod örnekleri
Bu kod parçacıkları, .NET için anomali algılayıcı istemci kitaplığı ile aşağıdakilerin nasıl yapılacağını göstermektedir:
- İstemcinin kimliğini doğrulama
- Bir dosyadan zaman serisi veri kümesi yükleme
- Tüm veri kümesindeki anormallikleri Algıla
- En son veri noktasının anomali durumunu Algıla
- Veri kümesindeki değişiklik noktalarını Algıla
İstemcinin kimliğini doğrulama
Yeni bir yöntemde, uç nokta ve anahtarınızla bir istemci örneği oluşturun. Anahtarınızla bir ApiKeyServiceClientCredentials nesnesi oluşturun ve bir Anorivtorclient nesnesi oluşturmak için bunu uç noktanızla birlikte kullanın.
static IAnomalyDetectorClient createClient(string endpoint, string key)
{
IAnomalyDetectorClient client = new AnomalyDetectorClient(new ApiKeyServiceClientCredentials(key))
{
Endpoint = endpoint
};
return client;
}
Bir dosyadan zaman serisi verilerini yükle
Bu hızlı başlangıç için örnek verileri GitHubadresinden indirin:
- Tarayıcınızda, RAW' a sağ tıklayın.
- Bağlantıyı farklı kaydet' e tıklayın.
- Dosyayı uygulama dizininize .csv dosyası olarak kaydedin.
Bu zaman serisi verileri bir .csv dosyası olarak biçimlendirilir ve anomali algılayıcı API 'sine gönderilir.
Zaman serisi verilerinde okumak için yeni bir yöntem oluşturun ve bunu bir istek nesnesine ekleyin. File.ReadAllLines()Dosya yolu ile çağrı yapın ve nokta nesnelerinin bir listesini oluşturun ve yeni satır karakterlerini kaldırın. Değerleri ayıklayın ve dateStamp değerini sayısal değerinden ayırın ve bunları yeni bir Point nesneye ekleyin.
Bir Request nesneyi işaret dizisine ve Granularity.Daily veri noktalarının ayrıntı düzeyi (veya dönemliği) için yapın.
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);
}
Tüm veri kümesindeki anormallikleri Algıla
İstemcinin Entiredetectasync () yöntemini Request nesnesiyle çağırmak ve yanıtı bir entiredetectresponse nesnesi olarak beklemek için bir yöntem oluşturun. Zaman serisi herhangi bir anomali içeriyorsa, yanıtın IsAnomaly değerlerini yineleyin ve bunları yazdırın true . Bu değerler, varsa anormal veri noktalarının dizinine karşılık gelir.
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.");
}
}
En son veri noktasının anomali durumunu Algıla
İstemcinin Lastdetectasync () yöntemini Request nesnesiyle çağırmak ve yanıtı bir lastdetectresponse nesnesi olarak beklemek için bir yöntem oluşturun. Gönderilen en son veri noktasının bir anomali olup olmadığını öğrenmek için yanıtın IsAnomaly özniteliğini denetleyin.
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.");
}
}
Veri kümesindeki değişiklik noktalarını Algıla
İstemcinin Detectchangepointasync metodunu Request nesnesiyle çağırmak ve yanıtı changepointdetectresponse nesnesi olarak beklemek için bir yöntem oluşturun. Yanıtın ıschangepoint değerlerini denetleyin ve bunları yazdırın true . Bu değerler, varsa eğilim değişiklik noktalarına karşılık gelir.
public async Task DetectChangePoint(IAnomalyDetectorClient client, Request request)
{
Console.WriteLine("Detecting the change points in the series.");
ChangePointDetectResponse result = await client.DetectChangePointAsync(request).ConfigureAwait(false);
if (result.IsChangePoint.Contains(true))
{
Console.WriteLine("A change point was detected at index:");
for (int i = 0; i < request.Series.Count; ++i)
{
if (result.IsChangePoint[i])
{
Console.Write(i);
Console.Write(" ");
}
}
Console.WriteLine();
}
else
{
Console.WriteLine("No change point detected in the series.");
}
}
Uygulamayı çalıştırma
Uygulamayı dotnet run uygulama dizininizdeki komutla çalıştırın.
dotnet run
Kaynakları temizleme
Bilişsel hizmetler 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ı API 'sini kullanırken en iyi uygulamalar.
Öğreticiler:
JavaScript için anomali algılayıcı istemci kitaplığını kullanmaya başlayın. Hizmet tarafından sunulan algoritmaları kullanarak paketi başlatmak için bu adımları izleyin. Anomali algılayıcı hizmeti, sektör, senaryo veya veri hacminin ne olursa olsun, üzerinde en iyi şekilde sığdırma modellerini kullanarak zaman serisi verilerinizde yer alan anormallikleri bulmanıza olanak sağlar.
JavaScript için anomali algılayıcı istemci kitaplığını kullanarak şunları yapın:
- Bir toplu istek olarak zaman serisi veri kümesi genelinde anomali algılama
- Zaman serinizdeki en son veri noktasının anomali durumunu Algıla
- Veri kümesindeki eğilim değişiklik noktalarını tespit edin.
Kitaplık başvuru belgeleri | Kitaplık kaynak kodu | Paket (NPM) | GitHub kodu bulma
Önkoşullar
- Azure aboneliği- ücretsiz olarak bir tane oluşturun
- Node.js geçerli sürümü
- Azure aboneliğiniz olduktan sonra anahtar ve uç noktanıza ulaşmak için Azure Portal bir anomali algılayıcı kaynağı oluşturun. Dağıtım için bekleyin ve Kaynağa Git düğmesine tıklayın.
- Uygulamanızı anomali algılayıcı API 'sine bağlamak için oluşturduğunuz kaynaktaki anahtar ve uç nokta gerekir. Anahtarınızı ve uç noktanızı daha sonra hızlı başlangıçta aşağıdaki koda yapıştırabilirsiniz.
F0Hizmeti denemek ve daha sonra üretime yönelik ücretli bir katmana yükseltmek için ücretsiz fiyatlandırma katmanını () kullanabilirsiniz.
- Uygulamanızı anomali algılayıcı API 'sine bağlamak için oluşturduğunuz kaynaktaki anahtar ve uç nokta gerekir. Anahtarınızı ve uç noktanızı daha sonra hızlı başlangıçta aşağıdaki koda yapıştırabilirsiniz.
Ayarlanıyor
Ortam değişkeni oluşturma
Not
1 Temmuz 2019 ' den sonra oluşturulan deneme olmayan kaynaklar için uç noktalar aşağıda gösterilen özel alt etki alanı biçimini kullanır. Daha fazla bilgi ve bölgesel uç noktaların tamamen listesi için bkz. bilişsel Hizmetler Için özel alt etki alanı adları.
Oluşturduğunuz kaynaktan anahtarınızı ve uç noktayı kullanarak, kimlik doğrulama için iki ortam değişkeni oluşturun:
ANOMALY_DETECTOR_KEY-İsteklerinizin kimliğini doğrulamak için kaynak anahtarı.ANOMALY_DETECTOR_ENDPOINT-API istekleri göndermek için kaynak uç noktası. Şu şekilde görünür:https://<your-custom-subdomain>.api.cognitive.microsoft.com
İşletim sisteminiz için yönergeleri kullanın.
setx ANOMALY_DETECTOR_KEY <replace-with-your-anomaly-detector-key>
setx ANOMALY_DETECTOR_ENDPOINT <replace-with-your-anomaly-detector-endpoint>
Ortam değişkenini ekledikten sonra konsol penceresini yeniden başlatın.
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 uygulamaya gidin.
mkdir myapp && cd myapp
npm initBir dosya ile bir düğüm uygulaması oluşturmak için komutunu çalıştırın package.json .
npm init
Adlı bir dosya oluşturun index.js ve aşağıdaki kitaplıkları içeri aktarın:
'use strict'
const fs = require('fs');
const parse = require("csv-parse/lib/sync");
const { AnomalyDetectorClient } = require('@azure/ai-anomaly-detector');
const { AzureKeyCredential } = require('@azure/core-auth');
Kaynağınızın Azure uç noktası ve anahtarı için değişken oluşturun. Uygulamayı başlattıktan sonra ortam değişkenini oluşturduysanız, değişkene erişmek için onu çalıştıran düzenleyiciyi, IDE 'yi veya kabuğu kapatıp yeniden açmanız gerekir. Daha sonraki bir adımda indirileceği örnek veri dosyası için başka bir değişken ve veri noktaları için boş bir liste oluşturun. Sonra ApiKeyCredentials anahtarı içeren bir nesne oluşturun.
// Spreadsheet with 2 columns and n rows.
let CSV_FILE = './request-data.csv';
// Authentication variables
let key = 'PASTE_YOUR_ANOMALY_DETECTOR_SUBSCRIPTION_KEY_HERE';
let endpoint = 'PASTE_YOUR_ANOMALY_DETECTOR_ENDPOINT_HERE';
// Points array for the request body
let points = [];
İstemci kitaplığını yükler
ms-rest-azureVe azure-cognitiveservices-anomalydetector NPM paketlerini yükler. Bu hızlı başlangıçta CSV ayrıştırma kitaplığı da kullanılır:
npm install @azure/ai-anomaly-detector @azure/ms-rest-js csv-parse
Uygulamanızın package.json dosyası bağımlılıklarla güncelleştirilir.
Nesne modeli
Anomali algılayıcı istemcisi, anahtarınızı kullanarak Azure 'da kimlik doğrulaması yapan bir Anokidetectorclient nesnesidir. İstemci, Entiredetect ()kullanarak bir veri kümesinin tamamında veya lastdetect ()kullanarak en son veri noktasında anomali algılama yapabilir. Changepointdetectasync yöntemi, bir eğilim içindeki değişiklikleri işaretleyen noktaları algılar.
Zaman serisi verileri bir istek nesnesinde bir dizi işaret olarak gönderilir. RequestNesnesi, verileri (örneğin,ayrıntı düzeyi ) ve anomali algılama parametrelerini tanımlayacak özellikler içerir.
Anomali algılayıcısı yanıtı, kullanılan yönteme bağlı olarak bir Lastdetectresponse, entiredetectresponseveya changepointdetectresponse nesnesidir.
Kod örnekleri
Bu kod parçacıkları, Node.js için anomali algılayıcı istemci kitaplığı ile aşağıdakilerin nasıl yapılacağını göstermektedir:
- İstemcinin kimliğini doğrulama
- Bir dosyadan zaman serisi veri kümesi yükleme
- Tüm veri kümesindeki anormallikleri Algıla
- En son veri noktasının anomali durumunu Algıla
- Veri kümesindeki değişiklik noktalarını Algıla
İstemcinin kimliğini doğrulama
Uç noktanız ve kimlik bilgilerinizle bir Anorivtorclient nesnesi örneği oluşturun.
let anomalyDetectorClient = new AnomalyDetectorClient(endpoint, new AzureKeyCredential(key));
Bir dosyadan zaman serisi verilerini yükle
Bu hızlı başlangıç için örnek verileri GitHubadresinden indirin:
- Tarayıcınızda, RAW' a sağ tıklayın.
- Bağlantıyı farklı kaydet' e tıklayın.
- Dosyayı uygulama dizininize .csv dosyası olarak kaydedin.
Bu zaman serisi verileri bir .csv dosyası olarak biçimlendirilir ve anomali algılayıcı API 'sine gönderilir.
CSV ayrıştırma kitaplığının yöntemiyle veri dosyanızı okuyun readFileSync() ve dosyasını ile ayrıştırın parse() . Her satır için zaman damgasını içeren bir nokta nesnesi ve sayısal değeri gönderin.
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()
Tüm veri kümesindeki anormallikleri Algıla
İstemcinin Entiredetect () yöntemiyle bir toplu iş olarak tüm zaman serilerinin bozuklukilerini algılamak için API 'yi çağırın. Döndürülen Entiredetectresponse nesnesini depolayın. Yanıtın isAnomaly listesini yineleyin ve herhangi bir değerin dizinini yazdırın true . Bu değerler, varsa anormal veri noktalarının dizinine karşılık gelir.
async function batchCall() {
// Create request body for API call
let body = { series: points, granularity: 'daily' }
// Make the call to detect anomalies in whole series of points
await anomalyDetectorClient.detectEntireSeries(body)
.then((response) => {
console.log("Batch (entire) anomaly detection):")
for (let item = 0; item < response.isAnomaly.length; item++) {
if (response.isAnomaly[item]) {
console.log("An anomaly was detected from the series, at row " + item)
}
}
}).catch((error) => {
console.log(error)
})
}
batchCall()
En son veri noktasının anomali durumunu Algıla
En son veri noktanağınızın, istemcinin Lastdetect () yöntemini kullanarak bir anomali olup olmadığını belirlemek ve döndürülen lastdetectresponse nesnesini depolamak IÇIN anomali algılayıcısı API 'sini çağırın. Yanıtın değeri, isAnomaly Bu noktanın anomali durumunu belirten bir Boole değeridir.
async function lastDetection() {
let body = { series: points, granularity: 'daily' }
// Make the call to detect anomalies in the latest point of a series
await anomalyDetectorClient.detectLastPoint(body)
.then((response) => {
console.log("Latest point anomaly detection:")
if (response.isAnomaly) {
console.log("The latest point, in row " + points.length + ", is detected as an anomaly.")
} else {
console.log("The latest point, in row " + points.length + ", is not detected as an anomaly.")
}
}).catch((error) => {
console.log(error)
})
}
lastDetection()
Veri kümesindeki değişiklik noktalarını Algıla
İstemci Detectchangepoint () yöntemiyle zaman serisinde değişiklik noktalarını algılamak için API 'yi çağırın. Döndürülen Changepointdetectresponse nesnesini depolayın. Yanıtın isChangePoint listesini yineleyin ve herhangi bir değerin dizinini yazdırın true . Bu değerler, varsa, eğilim değişiklik noktalarının dizinlerine karşılık gelir.
async function changePointDetection() {
let body = { series: points, granularity: 'daily' }
// get change point detect results
await anomalyDetectorClient.detectChangePoint(body)
.then((response) => {
if (
response.isChangePoint.some(function (changePoint) {
return changePoint === true;
})
) {
console.log("Change points were detected from the series at index:");
response.isChangePoint.forEach(function (changePoint, index) {
if (changePoint === true) {
console.log(index);
}
});
} else {
console.log("There is no change point detected from the series.");
}
}).catch((error) => {
console.log(error)
})
}
Uygulamayı çalıştırma
Uygulamayı node hızlı başlangıç dosyanızdaki komutla çalıştırın.
node index.js
Kaynakları temizleme
Bilişsel hizmetler 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ı API 'sini kullanırken en iyi uygulamalar.
Öğreticiler:
Python için anomali algılayıcı istemci kitaplığını kullanmaya başlayın. Hizmet tarafından sunulan algoritmaları kullanarak paketi başlatmak için bu adımları izleyin. Anomali algılayıcı hizmeti, sektör, senaryo veya veri hacminin ne olursa olsun, üzerinde en iyi şekilde sığdırma modellerini kullanarak zaman serisi verilerinizde yer alan anormallikleri bulmanıza olanak sağlar.
Python için anomali algılayıcı istemci kitaplığını kullanarak şunları yapın:
- Bir toplu istek olarak zaman serisi veri kümesi genelinde anomali algılama
- Zaman serinizdeki en son veri noktasının anomali durumunu Algıla
- Veri kümesindeki eğilim değişiklik noktalarını tespit edin.
Kitaplık başvuru belgeleri | Kitaplık kaynak kodu | Paket (Pypı) | GitHub örnek kodu bulma
Önkoşullar
- Python 3.x
- Pandas veri analizi kitaplığı
- Azure aboneliği- ücretsiz olarak bir tane oluşturun
- Azure aboneliğiniz olduktan sonra anahtar ve uç noktanıza ulaşmak için Azure Portal bir anomali algılayıcı kaynağı oluşturun. Dağıtım için bekleyin ve Kaynağa Git düğmesine tıklayın.
- Uygulamanızı anomali algılayıcı API 'sine bağlamak için oluşturduğunuz kaynaktaki anahtar ve uç nokta gerekir. Anahtarınızı ve uç noktanızı daha sonra hızlı başlangıçta aşağıdaki koda yapıştırabilirsiniz.
F0Hizmeti denemek ve daha sonra üretime yönelik ücretli bir katmana yükseltmek için ücretsiz fiyatlandırma katmanını () kullanabilirsiniz.
- Uygulamanızı anomali algılayıcı API 'sine bağlamak için oluşturduğunuz kaynaktaki anahtar ve uç nokta gerekir. Anahtarınızı ve uç noktanızı daha sonra hızlı başlangıçta aşağıdaki koda yapıştırabilirsiniz.
Ayarlanıyor
Ortam değişkeni oluşturma
Not
1 Temmuz 2019 ' den sonra oluşturulan deneme olmayan kaynaklar için uç noktalar aşağıda gösterilen özel alt etki alanı biçimini kullanır. Daha fazla bilgi ve bölgesel uç noktaların tamamen listesi için bkz. bilişsel Hizmetler Için özel alt etki alanı adları.
Oluşturduğunuz kaynaktan anahtarınızı ve uç noktayı kullanarak, kimlik doğrulama için iki ortam değişkeni oluşturun:
ANOMALY_DETECTOR_KEY-İsteklerinizin kimliğini doğrulamak için kaynak anahtarı.ANOMALY_DETECTOR_ENDPOINT-API istekleri göndermek için kaynak uç noktası. Şu şekilde görünür:https://<your-custom-subdomain>.api.cognitive.microsoft.com
İşletim sisteminiz için yönergeleri kullanın.
setx ANOMALY_DETECTOR_KEY <replace-with-your-anomaly-detector-key>
setx ANOMALY_DETECTOR_ENDPOINT <replace-with-your-anomaly-detector-endpoint>
Ortam değişkenini ekledikten sonra konsol penceresini yeniden başlatın.
Yeni bir Python uygulaması oluşturma
Yeni bir Python dosyası oluşturun ve aşağıdaki kitaplıkları içeri aktarın.
import os
from azure.ai.anomalydetector import AnomalyDetectorClient
from azure.ai.anomalydetector.models import DetectRequest, TimeSeriesPoint, TimeGranularity, \
AnomalyDetectorError
from azure.core.credentials import AzureKeyCredential
import pandas as pd
Anahtarınız için bir ortam değişkeni, zaman serisi veri dosyası yolu ve aboneliğinizin Azure konumu olarak değişkenler oluşturun. Örneğin, westus2.
SUBSCRIPTION_KEY = os.environ["ANOMALY_DETECTOR_KEY"]
ANOMALY_DETECTOR_ENDPOINT = os.environ["ANOMALY_DETECTOR_ENDPOINT"]
TIME_SERIES_DATA_PATH = os.path.join("./sample_data", "request-data.csv")
İstemci kitaplığını yükler
Python yükledikten sonra, ile istemci kitaplığını yükleyebilirsiniz:
pip install --upgrade azure-ai-anomalydetector
Nesne modeli
Anomali algılayıcı istemcisi, anahtarınızı kullanarak Azure 'da kimlik doğrulaması yapan bir Anokidetectorclient nesnesidir. İstemci, detect_entire_serieskullanarak bir veri kümesinin tamamını veya detect_last_pointkullanarak en son veri noktasında anomali algılama yapabilir. Detect_change_point işlevi, bir eğilim içindeki değişiklikleri işaretleyen noktaları algılar.
Zaman serisi verileri bir dizi Timeseriespoints nesnesi olarak gönderilir. DetectRequestNesnesi TimeGranularity , örneğin, verileri ve anomali algılama parametrelerini anlatan özellikler içerir.
Anomali algılayıcısı yanıtı, kullanılan yönteme bağlı olarak bir Lastdetectresponse, entiredetectresponseveya changepointdetectresponse nesnesidir.
Kod örnekleri
Bu kod parçacıkları, Python için anomali algılayıcı istemci kitaplığı ile aşağıdakilerin nasıl yapılacağını göstermektedir:
- İstemcinin kimliğini doğrulama
- Bir dosyadan zaman serisi veri kümesi yükleme
- Tüm veri kümesindeki anormallikleri Algıla
- En son veri noktasının anomali durumunu Algıla
- Veri kümesindeki değişiklik noktalarını Algıla
İstemcinin kimliğini doğrulama
Azure location değişkeninizi uç noktaya ekleyin ve anahtarınızla istemcinin kimliğini doğrulayın.
client = AnomalyDetectorClient(AzureKeyCredential(SUBSCRIPTION_KEY), ANOMALY_DETECTOR_ENDPOINT)
Bir dosyadan zaman serisi verilerini yükle
Bu hızlı başlangıç için örnek verileri GitHubadresinden indirin:
- Tarayıcınızda, RAW' a sağ tıklayın.
- Bağlantıyı farklı kaydet' e tıklayın.
- Dosyayı uygulama dizininize .csv dosyası olarak kaydedin.
Bu zaman serisi verileri bir .csv dosyası olarak biçimlendirilir ve anomali algılayıcı API 'sine gönderilir.
Veri dosyanızı Pandas kitaplığının read_csv() yöntemiyle yükleyin ve veri serinizi depolamak için boş bir liste değişkeni oluşturun. Dosya üzerinde yineleme yapın ve verileri bir nesne olarak ekleyin TimeSeriesPoint . Bu nesne .csv veri dosyanızdaki satırlardan zaman damgası ve sayısal değer içerir.
series = []
data_file = pd.read_csv(TIME_SERIES_DATA_PATH, header=None, encoding='utf-8', parse_dates=[0])
for index, row in data_file.iterrows():
series.append(TimeSeriesPoint(timestamp=row[0], value=row[1]))
DetectRequestZaman seriniz ile bir nesne oluşturun ve TimeGranularity veri noktalarının (veya dönemsellik). Örneğin, TimeGranularity.daily.
request = DetectRequest(series=series, granularity=TimeGranularity.daily)
Giriş bağımsız değişkeni açıklamaları: ' Series ': istekte gerekli. dizi/liste türü olmalı ve 12 ' den fazla noktaya ve 8640 ' ten fazla noktaya sahip olmalıdır. zaman damgasına göre artan sırada sıralanmalıdır ve yinelenen zaman damgasına sahip olamaz. ' ayrıntı düzeyi ': istekte gerekli. yalnızca aşağıdakilerden biri olabilir: [' Daily ', ' minuly ', ' saatlik ', ' Weekly ', ' Monthly ', ' yıllık ', ' secondly ']. ' customInterval ': 0 > bir tamsayı olmalıdır. ' period ': >= 0 bir tamsayı olmalıdır. ' Maxanoyratio ': seri noktalarının %50 ' inden (0 < Maxanoyratio < 0,5) az olmalıdır. ' duyarlılık ': 0 ile 99 arasında bir tamsayı olmalıdır.
Tüm veri kümesindeki anormallikleri Algıla
İstemci yöntemini kullanarak tüm zaman serisi verilerinin bozuklukilerini algılamak için API 'YI çağırın detect_entire_series . Döndürülen Entiredetectresponse nesnesini depolayın. Yanıtın is_anomaly listesini yineleyin ve herhangi bir değerin dizinini yazdırın true . Bu değerler, varsa anormal veri noktalarının dizinine karşılık gelir.
print('Detecting anomalies in the entire time series.')
try:
response = client.detect_entire_series(request)
except AnomalyDetectorError as e:
print('Error code: {}'.format(e.error.code), 'Error message: {}'.format(e.error.message))
except Exception as e:
print(e)
if any(response.is_anomaly):
print('An anomaly was detected at index:')
for i, value in enumerate(response.is_anomaly):
if value:
print(i)
else:
print('No anomalies were detected in the time series.')
En son veri noktasının anomali durumunu Algıla
En son veri noktanağınızın, istemci yöntemini kullanarak bir anomali olup olmadığını detect_last_point ve döndürülen nesneyi depolayıp depomadığını öğrenmek Için anomali ALGıLAYıCıSı API 'sini çağırın LastDetectResponse . Yanıtın değeri, is_anomaly Bu noktanın anomali durumunu belirten bir Boole değeridir.
print('Detecting the anomaly status of the latest data point.')
try:
response = client.detect_last_point(request)
except AnomalyDetectorError as e:
print('Error code: {}'.format(e.error.code), 'Error message: {}'.format(e.error.message))
except Exception as e:
print(e)
if response.is_anomaly:
print('The latest point is detected as anomaly.')
else:
print('The latest point is not detected as anomaly.')
Veri kümesindeki değişiklik noktalarını Algıla
İstemci yöntemini kullanarak zaman serisi verilerinde değişiklik noktalarını algılamak için API 'YI çağırın detect_change_point . Döndürülen nesneyi depolayın ChangePointDetectResponse . Yanıtın is_change_point listesini yineleyin ve herhangi bir değerin dizinini yazdırın true . Bu değerler, varsa, eğilim değişiklik noktalarının dizinlerine karşılık gelir.
print('Detecting change points in the entire time series.')
try:
response = client.detect_change_point(request)
except AnomalyDetectorError as e:
print('Error code: {}'.format(e.error.code), 'Error message: {}'.format(e.error.message))
except Exception as e:
print(e)
if any(response.is_change_point):
print('An change point was detected at index:')
for i, value in enumerate(response.is_change_point):
if value:
print(i)
else:
print('No change point were detected in the time series.')
Uygulamayı çalıştırma
Uygulamayı python komutuyla ve dosya adınızla çalıştırın.
Kaynakları temizleme
Bilişsel hizmetler 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ı API 'sini kullanırken en iyi uygulamalar.
Öğreticiler:
Bu hızlı başlangıçta, anomali algılayıcısı hizmetini ve boyutunu kullanarak bir dizi zaman serisi verisi içindeki aykırlılıkları algılamayı öğreneceksiniz.
Anomali algılayıcı kavramlarıyla ilgili üst düzey bir görünüm için bkz. genel bakış makalesi.
Önkoşullar
- Azure aboneliği- ücretsiz olarak bir tane oluşturun
- Azure aboneliğiniz olduktan sonra anahtar ve uç noktanıza ulaşmak için Azure Portal bir anomali algılayıcı kaynağı oluşturun. Dağıtım için bekleyin ve Kaynağa Git düğmesini seçin.
- REST API kullanmak için oluşturduğunuz kaynaktaki anahtar ve uç nokta adresine ihtiyacınız olacaktır.
F0Hizmeti denemek ve daha sonra üretime yönelik ücretli bir katmana yükseltmek için ücretsiz fiyatlandırma katmanını () kullanabilirsiniz.
- REST API kullanmak için oluşturduğunuz kaynaktaki anahtar ve uç nokta adresine ihtiyacınız olacaktır.
Tüm bir serinin bozuklukilerini Algıla
Komut isteminde aşağıdaki komutu çalıştırın. Komutuna aşağıdaki değerleri eklemeniz gerekir.
- Anomali algılayıcı hizmeti abonelik anahtarınız.
- Anomali algılayıcı uç nokta adresiniz.
- Anomali için sınanacak zaman serisi verilerinin geçerli bir JSON dosyası. Kendi dosyanız yoksa, İstek gövdesiörneğinden dosyasında bir sample.jsoluşturabilirsiniz.
curl -v -X POST "https://{endpointresourcename.cognitive.microsoft.com}/anomalydetector/v1.0/timeseries/entire/detect"
-H "Content-Type: application/json"
-H "Ocp-Apim-Subscription-Key: {subscription key}"
-d "@{path_to_file.json}"
Tüm değerlerin doldurulduğu bir örnek için:
curl -v -X POST "https://my-resource-name.cognitiveservices.azure.com/anomalydetector/v1.0/timeseries/entire/detect" -H "Content-Type: application/json" -H "Ocp-Apim-Subscription-Key:1111112222222ed333333ab333333333" -d "@test.json"
Ön koşullar ' dan örnek verileri kullandıysanız, aşağıdaki sonuçlarla bir yanıt 200 almalısınız:
{
"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 anomali ALGıLAMA Rest başvurusunabakın.
Kaynakları temizleme
Bilişsel hizmetler 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ı API 'sini kullanırken en iyi uygulamalar.
Öğreticiler: