c# - Azure 异常检测器与 C# 第 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 函数)有什么作用?
它列出了给定客户已经存在的模型(例如来自先前训练的模型)。
此外,如果删除参数已设置为 true,它会删除 3 个最近的模型。
我个人认为(我可能错了)这个样本有一个错误。我认为样本作者的意图是删除除最近的 4 个以外的所有旧模型(因此,它应该是 count > 4)。在任何情况下,示例代码中的删除标志都不会设置为 true。所以,这是一个有争议的问题。
为什么它总是返回零计数?
这表明尚未创建模型。这很可能是因为您尚未尝试训练模型。检查您是否在示例代码中调用 trainAsync 函数。即使您的训练失败(因为 csv 文件不是预期的格式等),也会创建一个状态为“失败”的模型,此时计数应该 > 零。
例如,当我尝试样本时,我的训练失败(由于不相关的原因 - 我的数据不是预期的格式),但 getModelNumberAsync 列出了客户知道的所有先前模型(计数为 5)。我将“状态:{3}”添加到控制台日志行。它不在示例代码中。
推荐阅读
- python - 连接四游戏(Python)中的获胜条件?
- hibernate - 休眠 5 @joinformula 与 @MapKeyTemporal
- java - 使用队列来计算字符串
- android - 约束布局切换视图相对于另一个视图的位置
- apache-spark - 从 Cassandra 丰富的 Spark 结构化流
- assembly - 无法使用 int 80h 在 nasm 中输入内容?
- multithreading - 使用 QTimer 和 QSerial 设置 QThread
- xml - XSLT 获取属性值
- java - Android (Java):是否有事件或其他东西简单地告诉我 Activity 的所有 GUI 元素都已完全呈现并可用?
- java - 具有相同错误的activity.java 文件-> 错误:找不到符号类绑定