You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在SageMaker中使用RCF算法如何获取每个数据点的异常分数?

SageMaker RCF 异常检测:获取每个数据点的异常分数

Hey there! Let's break this down for you clearly:

为什么只得到单个异常分数?

你之前拿到的单个分数并不是平均分数,问题出在输入格式不符合SageMaker内置RCF算法的推理要求。

当你用" ".join(apple_stock_volumes)把所有成交量数据用空格拼成一行时,RCF会把这整行当成一个多维度的单一样本(而非4个独立的单维度样本),所以模型只会输出这个单一样本的异常分数。

如何获取每个数据点的对应分数?

正如你后来发现的,对于股票成交量这类单维度时间序列数据,SageMaker RCF要求每个数据点单独占一行。这样算法才会把每一行识别为一个独立样本,进而输出每个样本对应的异常分数。

修正后的代码如下:

import boto3
import json

apple_stock_volumes = [123412, 465125, 237564, 238172]
def inference():
    client = boto3.client('sagemaker-runtime')
    # 将每个数据点转为字符串后用换行符拼接
    body = "\n".join(map(str, apple_stock_volumes))
    response = client.invoke_endpoint(
        EndpointName='apple-volume-endpoint',
        Body=body,
        ContentType='text/csv'
    )
    inference = json.loads(response['Body'].read())
    print(inference)
inference()

运行这段代码后,你会得到包含4个异常分数的结果,格式类似{'scores': [{'score': 0.xxx}, {'score': 0.xxx}, {'score': 0.xxx}, {'score': 0.xxx}]},刚好对应每个输入的成交量数据点。

额外提示

拿到每个数据点的异常分数后,你就可以计算分数的均值和标准差,当某个数据点的分数超出设定阈值(比如均值+2倍标准差)时,就能触发你的告警逻辑,完全匹配你的初始需求。

内容的提问来源于stack exchange,提问作者A.S.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 10:07:55