التشغيل السريع: استخدام مكتبة عميل Univariate Anomaly Detector
هام
اعتبارا من 20 سبتمبر 2023، لن تتمكن من إنشاء موارد Anomaly Detector جديدة. يتم إيقاف خدمة Anomaly Detector في 1 أكتوبر 2026.
الوثائق المرجعية |للمكتبة حزمة التعليمات البرمجية | المصدر للمكتبة (NuGet) |ابحث عن نموذج التعليمات البرمجية على GitHub
ابدأ مع مكتبة عميل Anomaly Detector لـ C#. اتبع هذه الخطوات لتثبيت الحزمة والبدء في استخدام الخوارزميات التي توفرها الخدمة. تمكنك خدمة Anomaly Detector من العثور على أي تشوهات في بيانات السلسلة الزمنية باستخدام أفضل النماذج عليها تلقائيًا، بصرف النظر عن حجم البيانات أو السيناريو أو المجال.
استخدام مكتبة عميل Anomaly Detector لـ C# من أجل:
- الكشف عن الحالات الشاذة في جميع أنحاء مجموعة بيانات السلسلة الزمنية، كطلب دفعي
- الكشف عن حالة الشذوذ لأحدث نقطة بيانات في السلسلة الزمنية
- الكشف عن نقاط تغيير الاتجاه في مجموعة البيانات.
المتطلبات الأساسية
- اشتراك Azure - إنشاء اشتراك مجاناً
- الإصدار الحالي من .NET Core.
- بمجرد أن يكون لديك اشتراك Azure، قم بإنشاء مورد Anomaly Detector في مدخل Microsoft Azure للحصول على المفتاح ونقطة النهاية. انتظر حتى يتم نشرها وانقر فوق الزر الانتقال إلى المورد. يمكنك استخدام مستوى التسعير الحر (
F0
) لتجربة الخدمة، والترقية لاحقًا إلى مستوى مدفوع للإنتاج.
الإعداد
إنشاء تطبيق .NET Core جديد
في نافذة وحدة تحكم (مثل cmd أو PowerShell أو Bash)، استخدم الأمر dotnet new
لإنشاء تطبيق وحدة تحكم جديد بالاسم anomaly-detector-quickstart
. ينشئ هذا الأمر مشروع "Hello World" بسيطًا مع ملف مصدر C# واحد: Program.cs.
dotnet new console -n anomaly-detector-quickstart
غيّر دليلك إلى مجلد التطبيق المنشأ حديثاً. يمكنك إنشاء التطبيق باستخدام:
dotnet build
يجب ألا يحتوي إخراج البناء على تحذيرات أو أخطاء.
...
Build succeeded.
0 Warning(s)
0 Error(s)
...
تثبيت مكتبة العميل
ضمن دليل التطبيق، قم بتثبيت مكتبة عميل Anomaly Detector من أجل .NET باستخدام الأمر التالي:
dotnet add package Azure.AI.AnomalyDetector --prerelease
قم باسترداد المفتاح ونقطة النهاية
لإجراء استدعاء بنجاح مقابل خدمة Anomaly Detector، ستحتاج إلى القيم التالية:
اسم المتغير | القيمة |
---|---|
ANOMALY_DETECTOR_ENDPOINT |
يمكن العثور على هذه القيمة في قسم المفاتيح ونقطة النهاية عند فحص المورد من مدخل Microsoft Azure. مثال على نقطة النهاية: https://YOUR_RESOURCE_NAME.cognitiveservices.azure.com/ |
ANOMALY_DETECTOR_API_KEY |
يمكن العثور على قيمة مفتاح واجهة برمجة التطبيقات في قسم المفاتيح ونقطة النهاية عند فحص المورد الخاص بك من مدخل Microsoft Azure. يمكنك استخدام إما KEY1 أو KEY2 . |
DATA_PATH |
يستخدم request-data.csv هذا التشغيل السريع الملف الذي يمكن تنزيله من بيانات نموذج GitHub. مثال على المسار: c:\\test\\request-data.csv |
انتقل إلى مجموعة الموارد في مدخل Microsoft Azure. يمكن العثور على نقطة النهاية والمفاتيح في قسم إدارة الموارد. انسخ نقطة النهاية ومفتاح الوصول حيث ستحتاج إلى كليهما لمصادقة استدعاءات واجهة برمجة التطبيقات. يمكنك استخدام إما KEY1
أو KEY2
. يسمح لك وجود مفتاحين دائماً بتدوير المفاتيح وإعادة إنشائها بأمان دون التسبب في تعطيل الخدمة.
إنشاء متغيرات البيئة
إنشاء متغيرات بيئة ثابتة وتعيينها للمفتاح ونقطة النهاية.
setx ANOMALY_DETECTOR_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx ANOMALY_DETECTOR_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"
تنزيل نموذج البيانات
يستخدم request-data.csv
هذا التشغيل السريع الملف الذي يمكن تنزيله من بيانات نموذج GitHub
يمكنك أيضا تنزيل نموذج البيانات عن طريق تشغيل:
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
الكشف عن الحالات الخارجة عن المألوف
من دليل المشروع، افتح ملف program.cs واستبدل بالتعليمات البرمجية التالية:
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.");
}
}
}
}
هام
للإنتاج، استخدم طريقة آمنة لتخزين بيانات الاعتماد والوصول إليها مثل Azure Key Vault. لمزيد من المعلومات حول أمان بيانات الاعتماد، راجع مقالة أمان خدمات Azure الذكاء الاصطناعي.
dotnet run program.cs
الإخراج
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
تفاصيل التعليمات البرمجية
فهم نتائج SMART الخاصة بك
في التعليمات البرمجية أعلاه، تتم قراءة بيانات العينة وتحويلها إلى كائن DetectRequest
. نستدعي File.ReadAllLines
مسار الملف وننشئ قائمة بالكائنات TimeSeriesPoint
، ونجرد أي أحرف سطر جديدة. قم باستخراج القيم وفصل الطابع الزمني من قيمته الرقمية، ثم إضافتهم إلى كائن TimeSeriesPoint
جديد. DetectRequest
يتكون الكائن من سلسلة من نقاط البيانات، مع TimeGranularity.Daily
لنقاوة (أو دورية) نقاط البيانات.
بعد ذلك، نستدعي أسلوب العميل DetectEntireSeriesAsync
مع DetectRequest
الكائن وننتظر الاستجابة ككائن EntireDetectResponse
. ثم نقوم بالتكرار من خلال قيم الاستجابة IsAnomaly
وطباعة أي قيم صحيحة. تتوافق هذه القيم مع فهرس نقاط البيانات الشاذة، إن وجدت.
تنظيف الموارد
إذا كنت ترغب في تنظيف مورد Anomaly Detector وإزالته، يمكنك حذف المورد أو مجموعة الموارد. يؤدي حذف مجموعة الموارد إلى حذف أية موارد أخرى مقترنة بها أيضًا. قد تحتاج أيضا إلى التفكير في حذف متغيرات البيئة التي قمت بإنشائها إذا لم تعد تنوي استخدامها.
الوثائق المرجعية |للمكتبة حزمة التعليمات البرمجية | المصدر للمكتبة (npm) |ابحث عن نموذج التعليمات البرمجية على GitHub
ابدأ باستخدام مكتبة العميل Anomaly Detector لـ JavaScript. اتبع هذه الخطوات لتثبيت الحزمة، وابدأ في استخدام الخوارزميات التي توفرها الخدمة. تمكنك خدمة Anomaly Detector من العثور على التشوهات في بيانات السلاسل الزمنية الخاصة بك باستخدام النموذج الأفضل ملاءمة عليه تلقائيا، بغض النظر عن الصناعة أو السيناريو أو حجم البيانات.
يتم استخدام مكتبة عميل Anomaly Detector لـ JavaScript في:
- الكشف عن الحالات الشاذة في جميع أنحاء مجموعة بيانات السلسلة الزمنية، كطلب دفعي
- الكشف عن حالة الشذوذ لأحدث نقطة بيانات في السلسلة الزمنية
- الكشف عن نقاط تغيير الاتجاه في مجموعة البيانات.
المتطلبات الأساسية
- اشتراك Azure - إنشاء اشتراك مجاناً
- الإصدار الحالي من Node.js
- بمجرد أن يكون لديك اشتراك Azure، قم بإنشاء مورد Anomaly Detector في مدخل Microsoft Azure للحصول على المفتاح ونقطة النهاية. انتظر حتى يتم نشرها وانقر فوق الزر الانتقال إلى المورد.
- ستحتاج إلى المفتاح ونقطة النهاية من المورد الذي تقوم بإنشائه لتوصيل التطبيق الخاص بك بواجهة برمجة تطبيقات Anomaly Detector. ستستخدم المفتاح ونقطة النهاية لإنشاء متغيرات البيئة.
يمكنك استخدام مستوى التسعير الحر (
F0
) لتجربة الخدمة، والترقية لاحقًا إلى مستوى مدفوع للإنتاج.
- ستحتاج إلى المفتاح ونقطة النهاية من المورد الذي تقوم بإنشائه لتوصيل التطبيق الخاص بك بواجهة برمجة تطبيقات Anomaly Detector. ستستخدم المفتاح ونقطة النهاية لإنشاء متغيرات البيئة.
يمكنك استخدام مستوى التسعير الحر (
الإعداد
إنشاء تطبيق Node.js جديد
في إطار نافذة وحدة التحكم (مثل cmd أو PowerShell أو Bash)، يمكنك إنشاء دليل جديد لتطبيقك وانتقل إليه.
mkdir myapp && cd myapp
أنشئ package.json
ملف بالمحتويات التالية:
{
"dependencies": {
"@azure/ai-anomaly-detector": "next",
"@azure-rest/ai-anomaly-detector": "next",
"@azure/core-auth": "^1.3.0",
"csv-parse": "^5.3.0"
}
}
تثبيت مكتبة العميل
قم بتثبيت حزم npm المطلوبة عن طريق تشغيل ما يلي من نفس الدليل مثل ملف package.json الخاص بك:
npm install
قم باسترداد المفتاح ونقطة النهاية
لإجراء استدعاء بنجاح مقابل خدمة Anomaly Detector، ستحتاج إلى القيم التالية:
اسم المتغير | القيمة |
---|---|
ANOMALY_DETECTOR_ENDPOINT |
يمكن العثور على هذه القيمة في قسم المفاتيح ونقطة النهاية عند فحص المورد من مدخل Microsoft Azure. مثال على نقطة النهاية: https://YOUR_RESOURCE_NAME.cognitiveservices.azure.com/ |
ANOMALY_DETECTOR_API_KEY |
يمكن العثور على قيمة مفتاح واجهة برمجة التطبيقات في قسم المفاتيح ونقطة النهاية عند فحص المورد الخاص بك من مدخل Microsoft Azure. يمكنك استخدام إما KEY1 أو KEY2 . |
datapath |
يستخدم request-data.csv هذا التشغيل السريع الملف الذي يمكن تنزيله من بيانات نموذج GitHub. |
انتقل إلى مجموعة الموارد في مدخل Microsoft Azure. يمكن العثور على نقطة النهاية والمفاتيح في قسم إدارة الموارد. انسخ نقطة النهاية ومفتاح الوصول حيث ستحتاج إلى كليهما لمصادقة استدعاءات واجهة برمجة التطبيقات. يمكنك استخدام إما KEY1
أو KEY2
. يسمح لك وجود مفتاحين دائماً بتدوير المفاتيح وإعادة إنشائها بأمان دون التسبب في تعطيل الخدمة.
إنشاء متغيرات البيئة
إنشاء متغيرات بيئة ثابتة وتعيينها للمفتاح ونقطة النهاية.
setx ANOMALY_DETECTOR_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx ANOMALY_DETECTOR_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"
تنزيل نموذج البيانات
يستخدم request-data.csv
هذا التشغيل السريع الملف الذي يمكن تنزيله من بيانات نموذج GitHub
يمكنك أيضا تنزيل نموذج البيانات عن طريق تشغيل:
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
الكشف عن الحالات الخارجة عن المألوف
أنشئ ملفا باسم index.js
واستبدل بالتعليمات البرمجية التالية:
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 };
شغّل التطبيق
شغّل التطبيق باستخدام الأمر node
المُتاح على ملف التشغيل السريع.
node index.js
الإخراج
Anomalies were detected from the series at index:
3
18
21
22
23
24
25
28
29
30
31
32
35
44
فهم نتائج SMART الخاصة بك
في التعليمات البرمجية أعلاه، نستدعي واجهة برمجة تطبيقات Anomaly Detector للكشف عن الحالات الشاذة من خلال السلسلة الزمنية بأكملها كدفعة مع أسلوب العميل detectEntireSeries(). نقوم بتخزين الكائن AnomalyDetectorDetectEntireSeriesResponse الذي تم إرجاعه. ثم نتكرر من خلال قائمة الاستجابة isAnomaly
، ونطبع فهرس أي true
قيم. تتوافق هذه القيم مع فهرس نقاط البيانات الشاذة، إن وجدت.
تنظيف الموارد
إذا كنت ترغب في تنظيف مورد Anomaly Detector وإزالته، يمكنك حذف المورد أو مجموعة الموارد. يؤدي حذف مجموعة الموارد إلى حذف أية موارد أخرى مقترنة بها أيضًا. قد تحتاج أيضا إلى التفكير في حذف متغيرات البيئة التي قمت بإنشائها إذا لم تعد تنوي استخدامها.
الوثائق المرجعية |للمكتبة حزمة التعليمات البرمجية | المصدر للمكتبة (PyPi) |ابحث عن نموذج التعليمات البرمجية على GitHub
ابدأ باستخدام مكتبة العميل Anomaly Detector لـ Python. اتبع تلك الخطوات لتثبيت الحزمة والبدء في استخدام الخوارزميات التي توفرها لك الخدمة. تمكنك خدمة Anomaly Detector من العثور على أي تشوهات في بيانات السلسلة الزمنية باستخدام أفضل النماذج عليها تلقائيًا، بصرف النظر عن حجم البيانات أو السيناريو أو المجال.
استخدام مكتبة عميل Anomaly Detector لـ Python من أجل:
- الكشف عن الحالات الشاذة في جميع أنحاء مجموعة بيانات السلسلة الزمنية، كطلب دفعي
- الكشف عن حالة الشذوذ لأحدث نقطة بيانات في السلسلة الزمنية
- الكشف عن نقاط تغيير الاتجاه في مجموعة البيانات.
المتطلبات الأساسية
- اشتراك Azure - إنشاء اشتراك مجاناً
- Python 3.x
- مكتبة تحليل بيانات Pandas
- بمجرد أن يكون لديك اشتراك Azure، قم بإنشاء مورد Anomaly Detector في مدخل Microsoft Azure للحصول على المفتاح ونقطة النهاية. انتظر حتى يتم نشرها وانقر فوق الزر الانتقال إلى المورد. يمكنك استخدام مستوى التسعير الحر (
F0
) لتجربة الخدمة، والترقية لاحقًا إلى مستوى مدفوع للإنتاج.
الإعداد
ثبت مكتبة العميل. يمكنك تثبيت مكتبة العميل باستخدام:
pip install --upgrade azure.ai.anomalydetector
قم باسترداد المفتاح ونقطة النهاية
لإجراء استدعاء بنجاح مقابل خدمة Anomaly Detector، ستحتاج إلى القيم التالية:
اسم المتغير | القيمة |
---|---|
ANOMALY_DETECTOR_ENDPOINT |
يمكن العثور على هذه القيمة في قسم المفاتيح ونقطة النهاية عند فحص المورد من مدخل Microsoft Azure. مثال على نقطة النهاية: https://YOUR_RESOURCE_NAME.cognitiveservices.azure.com/ |
ANOMALY_DETECTOR_API_KEY |
يمكن العثور على قيمة مفتاح واجهة برمجة التطبيقات في قسم المفاتيح ونقطة النهاية عند فحص المورد الخاص بك من مدخل Microsoft Azure. يمكنك استخدام إما KEY1 أو KEY2 . |
DATA_PATH |
يستخدم request-data.csv هذا التشغيل السريع الملف الذي يمكن تنزيله من بيانات نموذج GitHub. مثال على المسار: c:\\test\\request-data.csv |
انتقل إلى مجموعة الموارد في مدخل Microsoft Azure. يمكن العثور على نقطة النهاية والمفاتيح في قسم إدارة الموارد. انسخ نقطة النهاية ومفتاح الوصول حيث ستحتاج إلى كليهما لمصادقة استدعاءات واجهة برمجة التطبيقات. يمكنك استخدام إما KEY1
أو KEY2
. يسمح لك وجود مفتاحين دائماً بتدوير المفاتيح وإعادة إنشائها بأمان دون التسبب في تعطيل الخدمة.
إنشاء متغيرات البيئة
إنشاء متغيرات بيئة ثابتة وتعيينها للمفتاح ونقطة النهاية.
setx ANOMALY_DETECTOR_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx ANOMALY_DETECTOR_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"
تنزيل نموذج البيانات
يستخدم request-data.csv
هذا التشغيل السريع الملف الذي يمكن تنزيله من بيانات نموذج GitHub
يمكنك أيضا تنزيل نموذج البيانات عن طريق تشغيل:
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
الكشف عن الحالات الخارجة عن المألوف
إنشاء ملف Python جديد باسم quickstart.py. ثم افتحه في المحرر أو IDE المُفضل لديك.
استبدل التعليمات البرمجية التالية بمحتويات quickstart.py. تعديل التعليمات البرمجية لإضافة أسماء متغيرات البيئة للمفتاح ونقطة النهاية ومسار بيانات السلسلة الزمنية:
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))
هام
للإنتاج، استخدم طريقة آمنة لتخزين بيانات الاعتماد والوصول إليها مثل Azure Key Vault. لمزيد من المعلومات حول أمان بيانات الاعتماد، راجع مقالة أمان خدمات Azure الذكاء الاصطناعي.
شغّل التطبيق باستخدام الأمر
python
المُتاح على ملف التشغيل السريع خاصتكpython quickstart.py
الإخراج
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
فهم نتائج SMART الخاصة بك
في التعليمات البرمجية أعلاه، نستدعي واجهة برمجة تطبيقات Anomaly Detector مرتين. يتحقق الاستدعاء الأول من نقاط تغيير الاتجاه عبر سلسلة بيانات العينة الخاصة بنا باستخدام detect_change_point
الأسلوب . ترجع ChangePointDetectResponse
هذه المكالمة التي قمنا بتخزينها في متغير أطلقنا عليه اسم change_point_request
. ثم نقوم بالتكرار من خلال قائمة الاستجابة is_change_point
، وطباعة فهرس أي قيم بقيمة منطقية من true
.
يتحقق الاستدعاء الثاني من سلسلة بيانات العينة بأكملها للبحث عن الحالات الشاذة detect_entire_series
باستخدام الأسلوب . ترجع EntireDetectResponse
هذه المكالمة التي قمنا بتخزينها في متغير أطلقنا عليه اسم anomaly_response
. نقوم بالتكرار من خلال قائمة الاستجابة is_anomaly
، وطباعة فهرس أي قيم بقيمة منطقية من true
. بدلا من ذلك، كان يمكننا استخدام detect_last_point
الأسلوب ، وهو أكثر ملاءمة للكشف عن الحالات الشاذة في البيانات في الوقت الفعلي. لمعرفة المزيد، راجع دليل أفضل الممارسات.
تصور النتائج
لتصور الحالات الشاذة ونقاط التغيير فيما يتعلق بسلسلة البيانات النموذجية، سنستخدم matplotlib مكتبة مفتوحة المصدر الشائعة.
تثبيت المكتبة.
pip install matplotlib
تعديل ملف quickstart.py الخاص بك مع التعليمات البرمجية التالية:
from azure.ai.anomalydetector import AnomalyDetectorClient from azure.ai.anomalydetector.models import * from azure.core.credentials import AzureKeyCredential import pandas as pd import matplotlib.pyplot as plt import matplotlib.dates as mdates import os API_KEY = os.environ['ANOMALY_DETECTOR_API_KEY'] ENDPOINT = os.environ['ANOMALY_DETECTOR_ENDPOINT'] DATA_PATH = "REPLACE_WITH_YOUR_LOCAL_SAMPLE_REQUEST_DATA_PATH" #example: c:\\test\\request-data.csv client = AnomalyDetectorClient(ENDPOINT, AzureKeyCredential(API_KEY)) series = [] data_file = pd.read_csv(DATA_PATH, header=None, encoding='utf-8', date_parser=[0]) for index, row in data_file.iterrows(): series.append(TimeSeriesPoint(timestamp=row[0], value=row[1])) request = UnivariateDetectionOptions(series=series, granularity=TimeGranularity.DAILY) change_point_response = client.detect_univariate_change_point(request) anomaly_response = client.detect_univariate_entire_series(request) for i in range(len(data_file.values)): temp_date_to_num = mdates.date2num(data_file.values[i]) date= temp_date_to_num[0] if (change_point_response.is_change_point[i]): plt.plot(date,data_file.values[i][1], 's', color ='blue') print("Change point detected at index: "+ str(i)) elif (anomaly_response.is_anomaly[i]): plt.plot(date,data_file.values[i][1], '^', color="red") print("Anomaly detected at index: "+ str(i)) else: plt.plot(date,data_file.values[i][1], 'o', color ='green') plt.show()
هام
للإنتاج، استخدم طريقة آمنة لتخزين بيانات الاعتماد والوصول إليها مثل Azure Key Vault. لمزيد من المعلومات حول أمان بيانات الاعتماد، راجع مقالة أمان خدمات Azure الذكاء الاصطناعي.
شغّل التطبيق باستخدام الأمر
python
المُتاح على ملف التشغيل السريع خاصتكpython quickstart.py
الإخراج
في مثال التعليمات البرمجية هذا، أضفنا matplotlib
المكتبة للسماح لنا بتصور نقاط البيانات العادية وتمييزها بسهولة عن نقاط التغيير والشذوذ. يتم تمثيل نقاط التغيير بمربعات زرقاء، والشذوذ مثلثات حمراء، ونقاط البيانات العادية هي دوائر خضراء. يتم تحويل التواريخ إلى أرقام باستخدام matplotlib
date2num
أسلوب لتوفير قيم مألوفة للرسم البياني للمحور y للمخططات.
تنظيف الموارد
إذا كنت ترغب في تنظيف مورد Anomaly Detector وإزالته، يمكنك حذف المورد أو مجموعة الموارد. يؤدي حذف مجموعة الموارد إلى حذف أية موارد أخرى مقترنة بها أيضًا. قد تحتاج أيضا إلى التفكير في حذف متغيرات البيئة التي قمت بإنشائها إذا لم تعد تنوي استخدامها.
في هذه البداية السريعة، تتعلم كيفية اكتشاف الحالات الشاذة في مجموعة من بيانات السلسلة الزمنية باستخدام خدمة الكشف عن الشذوذ وcURL.
لإلقاء نظرة عالية المستوى على مفاهيم "الكشف عن الشذوذ"، راجع مقالة النظرة العامة.
المتطلبات الأساسية
- اشتراك Azure - إنشاء اشتراك مجاناً
- بمجرد أن يكون لديك اشتراك Azure، قم بإنشاء مورد Anomaly Detector في مدخل Microsoft Azure للحصول على المفتاح ونقطة النهاية. انتظر حتى يتم نشرها وانقر فوق الزر الانتقال إلى المورد. يمكنك استخدام مستوى التسعير الحر (
F0
) لتجربة الخدمة، والترقية لاحقًا إلى مستوى مدفوع للإنتاج. - ملف JSON صالح من بيانات السلسلة الزمنية لاختبار الحالات الشاذة. إذا لم يكن لديك ملف خاص بك، يمكنك إنشاء ملف sample.json من نموذج نص الطلب
قم باسترداد المفتاح ونقطة النهاية
لإجراء استدعاء بنجاح مقابل خدمة Anomaly Detector، ستحتاج إلى القيم التالية:
اسم المتغير | القيمة |
---|---|
ANOMALY_DETECTOR_ENDPOINT |
يمكن العثور على هذه القيمة في قسم المفاتيح ونقطة النهاية عند فحص المورد من مدخل Microsoft Azure. مثال على نقطة النهاية: https://YOUR_RESOURCE_NAME.cognitiveservices.azure.com/ |
ANOMALY_DETECTOR_API_KEY |
يمكن العثور على قيمة مفتاح واجهة برمجة التطبيقات في قسم المفاتيح ونقطة النهاية عند فحص المورد الخاص بك من مدخل Microsoft Azure. يمكنك استخدام إما KEY1 أو KEY2 . |
انتقل إلى مجموعة الموارد في مدخل Microsoft Azure. يمكن العثور على نقطة النهاية والمفاتيح في قسم إدارة الموارد. انسخ نقطة النهاية ومفتاح الوصول حيث ستحتاج إلى كليهما لمصادقة استدعاءات واجهة برمجة التطبيقات. يمكنك استخدام إما KEY1
أو KEY2
. يسمح لك وجود مفتاحين دائماً بتدوير المفاتيح وإعادة إنشائها بأمان دون التسبب في تعطيل الخدمة.
إنشاء متغيرات البيئة
إنشاء متغيرات بيئة ثابتة وتعيينها للمفتاح ونقطة النهاية.
setx ANOMALY_DETECTOR_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE"
setx ANOMALY_DETECTOR_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE"
الكشف عن الحالات الخارجة عن المألوف
في موجه الأوامر، أدخل الأمر التالي. ستحتاج إلى إدراج القيم التالية في الأمر .
- مفتاح الاشتراك في خدمة الكشف عن الشذوذ.
- عنوان نقطة نهاية كاشف الشذوذ الخاص بك.
- ملف JSON صالح من بيانات السلسلة الزمنية لاختبار الحالات الشاذة. إذا لم يكن لديك ملف خاص بك، يمكنك إنشاء الملف sample.json من نموذج النص الأساسي للطلب.
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"
مثال على الأمر الكامل كخط واحد:
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"
بدلا من ذلك إذا كنت تقوم بتشغيل الأمر cURL من Bash shell، فسيكون الأمر مختلفا قليلا:
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"
إذا استخدمت نموذج البيانات من متطلبات مسبقة، يجب أن تتلقى استجابة 200 مع النتائج التالية:
{
"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
}
لمزيد من المعلومات، راجع مرجع REST للكشف عن الشذوذ.
تنظيف الموارد
إذا كنت ترغب في تنظيف اشتراك خدمات Azure الذكاء الاصطناعي وإزالته، يمكنك حذف المورد أو مجموعة الموارد. يؤدي حذف مجموعة الموارد أيضًا إلى حذف أي موارد أخرى مرتبطة بمجموعة الموارد هذه.
الخطوات التالية
Concepts:
- ما هو API للحالات الخارجة عن المألوف؟
- طرق الكشف عن الأخطاء
- أفضل الممارسات عند استخدام API للحالات الخارجة عن المألوف.
البرامج التعليمية: