你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
适用于 JavaScript 的 Azure 异常检测器客户端库 - 版本 3.0.0-beta.5
Azure AnomalyDetector API 使你能够使用机器学习监视和检测时序数据中的异常。
关键链接:
关键概念
AnomalyDetectorClient
提供异常情况检测的方法:
-
detectEntireSeries
- 检测整个数据集上的异常 -
detectLastPoint
- 检测最新数据点中的异常 -
detectChangePoint
- 评估每个系列点的更改分数
入门
目前支持的环境
- LTS 版本的 Node.js
- 最新版本的 Safari、Chrome、Edge 和 Firefox。
有关更多详细信息,请参阅我们的支持政策。
先决条件
- 一个 Azure 订阅。
- 现有异常检测器资源。
如果使用 Azure CLI,请将 和 <your-resource-name>
替换为<your-resource-group-name>
自己的唯一名称:
az cognitiveservices account create --kind AnomalyDetector --resource-group <your-resource-group-name> --name <your-resource-name>
安装 @azure/ai-anomaly-detector
包
使用 npm
安装适用于 JavaScript 的 Azure 异常检测器 客户端库:
npm install @azure/ai-anomaly-detector
创建 AnomalyDetectorClient
并对其进行身份验证
若要创建客户端对象以访问 异常检测器 API,需要endpoint
异常检测器资源的 和 credential
。 异常检测器客户端可以使用 Azure Active Directory 凭据或 API 密钥凭据进行身份验证。
可以通过单击菜单中的“资源管理”Keys and Endpoint
下或使用下面的 Azure CLI 代码片段,在 Azure 门户中找到异常检测器资源的终结点:
az cognitiveservices account show --name <your-resource-name> --resource-group <your-resource-group-name> --query "endpoint"
使用 API 密钥
使用 Azure 门户浏览到异常检测器资源,并通过单击“资源管理”下的“Keys and Endpoint
检索 API 密钥”,或使用下面的 Azure CLI 代码片段:
注意: 有时,API 密钥称为“订阅密钥”或“订阅 API 密钥”。
az cognitiveservices account keys list --resource-group <your-resource-group-name> --name <your-resource-name>
拥有 API 密钥和终结点后,可以使用 AzureKeyCredential
类对客户端进行身份验证,如下所示:
const { AnomalyDetectorClient, AzureKeyCredential } = require("@azure/ai-anomaly-detector");
const client = new AnomalyDetectorClient("<endpoint>", new AzureKeyCredential("<API key>"));
使用 Azure Active Directory 凭据
大多数示例中都使用客户端 API 密钥身份验证,但也可以使用 [Azure 标识库] 通过 Azure Active Directory 进行身份验证。 若要使用如下所示的 DefaultAzureCredential 提供程序或 Azure SDK 随附的其他凭据提供程序,请安装 @azure/identity
包:
npm install @azure/identity
还需要注册新的 AAD 应用程序,并通过将角色分配给"Cognitive Services User"
服务主体来授予对异常检测器的访问权限 (注意:其他角色(如 )"Owner"
不会授予必要的权限,仅"Cognitive Services User"
足以运行示例和示例代码) 。
将 AAD 应用程序的客户端 ID、租户 ID 和客户端密码的值设置为环境变量:AZURE_CLIENT_ID
、、AZURE_TENANT_ID
AZURE_CLIENT_SECRET
。
const { AnomalyDetectorClient } = require("@azure/ai-anomaly-detector");
const { DefaultAzureCredential } = require("@azure/identity");
const client = new AnomalyDetectorClient("<endpoint>", new DefaultAzureCredential());
示例
检测更改点
此示例演示如何检测整个序列上的更改点。
const { AnomalyDetectorClient, TimeGranularity } = require("@azure/ai-anomaly-detector");
const { AzureKeyCredential } = require("@azure/core-auth");
// You will need to set this environment variables in .env file or edit the following values
const apiKey = process.env["API_KEY"] || "";
const endpoint = process.env["ENDPOINT"] || "";
async function main() {
// create client
const client = new AnomalyDetectorClient(endpoint, new AzureKeyCredential(apiKey));
// construct request
const request = {
series: [
{ timestamp: new Date("2018-03-01T00:00:00Z"), value: 32858923 },
{ timestamp: new Date("2018-03-02T00:00:00Z"), value: 29615278 },
{ timestamp: new Date("2018-03-03T00:00:00Z"), value: 22839355 },
{ timestamp: new Date("2018-03-04T00:00:00Z"), value: 25948736 },
{ timestamp: new Date("2018-03-05T00:00:00Z"), value: 34139159 },
{ timestamp: new Date("2018-03-06T00:00:00Z"), value: 33843985 },
{ timestamp: new Date("2018-03-07T00:00:00Z"), value: 33637661 },
{ timestamp: new Date("2018-03-08T00:00:00Z"), value: 32627350 },
{ timestamp: new Date("2018-03-09T00:00:00Z"), value: 29881076 },
{ timestamp: new Date("2018-03-10T00:00:00Z"), value: 22681575 },
{ timestamp: new Date("2018-03-11T00:00:00Z"), value: 24629393 },
{ timestamp: new Date("2018-03-12T00:00:00Z"), value: 34010679 },
{ timestamp: new Date("2018-03-13T00:00:00Z"), value: 33893888 },
{ timestamp: new Date("2018-03-14T00:00:00Z"), value: 33760076 },
{ timestamp: new Date("2018-03-15T00:00:00Z"), value: 33093515 }
],
granularity: TimeGranularity.daily
};
// get change point detect results
const result = await client.detectChangePoint(request);
const isChangePointDetected = result.isChangePoint.some((changePoint) => changePoint);
if (isChangePointDetected) {
console.log("Change points were detected from the series at index:");
result.isChangePoint.forEach((changePoint, index) => {
if (changePoint === true) {
console.log(index);
}
});
} else {
console.log("There is no change point detected from the series.");
}
// output:
// Change points were detected from the series at index:
// 9
}
main().catch((err) => {
console.error("The sample encountered an error:", err);
});
可在此处找到更多示例
疑难解答
日志记录
启用日志记录可能有助于发现有关故障的有用信息。 若要查看 HTTP 请求和响应的日志,请将 AZURE_LOG_LEVEL
环境变量设置为 info
。 或者,可以在运行时通过调用 @azure/logger
中的 setLogLevel
来启用日志记录:
import { setLogLevel } from "@azure/logger";
setLogLevel("info");
有关如何启用日志的更详细说明,请查看 @azure/logger 包文档。
后续步骤
有关如何使用此库的详细示例,请查看 示例 目录。
贡献
本项目欢迎贡献和建议。 大多数贡献要求你同意贡献者许可协议 (CLA),并声明你有权(并且确实有权)授予我们使用你的贡献的权利。 有关详细信息,请访问 https://cla.microsoft.com 。
提交拉取请求时,CLA 机器人将自动确定你是否需要提供 CLA,并相应地修饰 PR(例如标签、注释)。 直接按机器人提供的说明操作。 只需使用 CLA 对所有存储库执行一次这样的操作。
此项目采用了 Microsoft 开放源代码行为准则。 有关详细信息,请参阅行为准则常见问题解答,或如果有任何其他问题或意见,请与 联系。
若要为此库做出贡献,请阅读贡献指南,详细了解如何生成和测试代码。