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

使用PyOD的KNN做异常检测报continuous format is not supported错如何解决

问题根因

evaluate_print 函数内部调用 roc_auc_score 计算指标时,要求输入的真实标签必须是二分类离散值(0代表正常样本、1代表异常样本),但你传入的yTrain和yTest是股票价格的连续数值,所以触发了连续格式不支持的报错。
同时你对PyOD异常检测模型的使用逻辑存在偏差:PyOD内置的无监督异常检测模型fit阶段仅需要输入特征矩阵X,不需要传入标签y,你当前将日期设为特征、价格设为标签的用法不符合评估逻辑。

修复方案
  • 调整特征构造逻辑:如果你要检测股票价格的异常值,应该把价格列作为输入特征传入模型,而非作为标签:
# 示例:将价格列设为特征
X = s.iloc[:, 1].values.reshape(-1,1)
  • 若你需要使用evaluate_print做指标评估,需要提前给数据集标注好真实的异常标签(0正常/1异常)作为y传入,无标注数据无法计算ROC-AUC这类依赖真实标签的指标。如果没有标注数据,直接删除评估代码即可避免报错:
# 删除以下两行评估代码
evaluate_print(clf_name, yTrain, y_train_scores)
evaluate_print(clf_name, yTest, y_test_scores)
  • 补充说明:如果没有标注好的真实异常标签,visualize函数同样无法正常运行,也需要删除对应调用代码。你可以直接使用模型输出的y_train_pred、y_test_pred获取异常样本的标记结果,或用y_train_scores、y_test_scores获取异常程度评分。
  • 额外优化建议:当前你用日期作为特征的逻辑不合理:KNN计算距离基于数值差,datetime格式转成的时间戳差值虽然可计算,但按日期分布找异常没有实际业务意义,建议根据你的检测目标调整输入特征。

内容的提问来源于stack exchange,提问作者d12

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 15:27:03