异常检测
导入包
首先,我们导入本教程所需的包并创建一个 NixtlaClient 的实例。
👍 使用 Azure AI 端点
要使用 Azure AI 端点,请设置
base_url参数
nixtla_client = NixtlaClient(base_url="you azure ai endpoint", api_key="your api_key")
加载数据集
现在,让我们加载本教程的数据集。我们使用 Peyton Manning 数据集,该数据集跟踪了 Peyton Manning 的维基百科页面的访问量。
| unique_id | ds | y | |
|---|---|---|---|
| 0 | 0 | 2007-12-10 | 9.590761 | 
| 1 | 0 | 2007-12-11 | 8.519590 | 
| 2 | 0 | 2007-12-12 | 8.183677 | 
| 3 | 0 | 2007-12-13 | 8.072467 | 
| 4 | 0 | 2007-12-14 | 7.893572 | 
异常检测
我们现在执行异常检测。默认情况下,TimeGPT 使用 99% 的置信区间。如果一个点落在该区间之外,则被认为是异常。
| unique_id | ds | y | TimeGPT | TimeGPT-hi-99 | TimeGPT-lo-99 | anomaly | |
|---|---|---|---|---|---|---|---|
| 0 | 0 | 2008-01-10 | 8.281724 | 8.224187 | 9.503586 | 6.944788 | False | 
| 1 | 0 | 2008-01-11 | 8.292799 | 8.151533 | 9.430932 | 6.872135 | False | 
| 2 | 0 | 2008-01-12 | 8.199189 | 8.127243 | 9.406642 | 6.847845 | False | 
| 3 | 0 | 2008-01-13 | 9.996522 | 8.917259 | 10.196658 | 7.637861 | False | 
| 4 | 0 | 2008-01-14 | 10.127071 | 9.002326 | 10.281725 | 7.722928 | False | 
📘 Azure AI 中可用的模型
如果您使用 Azure AI 端点,请务必设置
model="azureai"
nixtla_client.detect_anomalies(..., model="azureai")对于公共 API,我们支持两个模型:
timegpt-1和timegpt-1-long-horizon。默认情况下使用
timegpt-1。请参阅本教程了解如何以及何时使用timegpt-1-long-horizon。
如您所见,False 被分配给“正常”值,因为它们落在置信区间内。然后将标签 True 分配给异常点。
我们还可以使用 NixtlaClient 绘制异常。
使用外生特征进行异常检测
之前,我们在没有使用任何外生特征的情况下执行了异常检测。现在,可以专门为此场景创建特征,以便在模型执行异常检测任务时为其提供信息。
在这里,我们创建模型可以使用的日期特征。
这通过使用 date_features 参数来完成。我们可以将其设置为 True,它将从给定的日期和数据频率生成所有可能的特征。或者,我们可以指定我们想要的特征列表。在本例中,我们只想要月份(month)和年份(year)级别的特征。
然后,我们可以绘制检测到的异常,模型现在使用了外生特征的额外信息。
修改置信区间
我们可以使用 level 参数调整置信区间。该参数接受 0 到 100 之间的任何值,包括小数。
减小置信区间会检测到更多异常,而增大置信区间则会减少异常数量。
例如,在这里我们将区间减小到 70%,我们会注意到绘制了更多异常(红点)。

