使用 C# 的 Azure 异常检测器第 2 部分

Azure Anomaly detector with C# part 2

我正在使用 https://docs.microsoft.com/en-us/azure/cognitive-services/anomaly-detector/quickstarts/client-libraries-multivariate?pivots=programming-language-csharp 上的代码 我在 blob 存储帐户中创建了一个 csv 文件。压缩包和解压包都已上传

这是我的数据源的 url,私有位为 xxx。

        string datasource = "https://xx.blob.core.windows.net/testdirectory?sp=r&st=2021-07-21T14:10:15Z&se=2021-07-21T22:10:15Z&sip=xx&spr=https&sv=2020-08-04&sr=c&sig=xxx";

此代码的作用是什么?为什么返回的计数始终为零?

private async Task<int> getModelNumberAsync(AnomalyDetectorClient client, bool delete = false)
{
int count = 0;
AsyncPageable<ModelSnapshot> model_list = client.ListMultivariateModelAsync(0, 10000);
await foreach (ModelSnapshot x in model_list)
{
    count += 1;
    Console.WriteLine(String.Format("model_id: {0}, createdTime: {1}, lastUpdateTime: {2}.", 
 x.ModelId, x.CreatedTime, x.LastUpdatedTime));
    if (delete & count < 4)
    {
        await client.DeleteMultivariateModelAsync(x.ModelId).ConfigureAwait(false);
    }
}
return count;
}

此代码(getModelNumberAsync 函数)的作用是什么?

它列出了给定客户已经存在的模型(例如,来自以前训练的模型)。

此外,如果 delete 参数已设置为 true,则会删除最近的 3 个模型。
我个人认为(我可能是错的)这个样本有一个错误。我认为示例作者的意图是删除除最近的 4 个之外的所有旧模型(因此,它应该计数 > 4)。在任何情况下,示例代码中的 delete 标志都不会设置为 true。所以,这是一个有争议的问题。

为什么它总是返回零计数?

这表示还没有创建模型。这很可能是因为您尚未尝试训练模型。检查您是否正在调用示例代码中的 trainAsync 函数。即使您的训练失败(因为 csv 文件不是预期的格式等),也会创建一个状态为“失败”的模型,此时计数应该 > 零。

例如,当我尝试示例时,我的训练失败了(因为不相关的原因——我的数据不是预期的格式)但是 getModelNumberAsync 列出了客户知道的所有以前的模型(计数是 5) .我将“状态:{3}”添加到控制台日志行。它不在示例代码中。