PyCaret异常检测调用compare_models()提示无属性或未定义报错如何解决?
报错原因
- 本质问题:PyCaret的
pycaret.anomaly(异常检测)模块原生不存在compare_models()方法。compare_models()是分类、回归等有监督学习模块的专属功能,用于批量对比有监督模型的效果,异常检测属于无监督任务,官方没有实现对应的批量对比接口,因此直接调用会触发AttributeError。 NameError的触发原因:你没有先初始化异常检测工作环境,也没有从对应模块导入相关函数,就算是模块实际存在的方法,直接调用全局的compare_models()也会找不到变量。
解决方法
- 先按照异常检测模块的标准流程初始化环境:
from pycaret.anomaly import * # 替换data参数为你的实际数据集 exp = setup(data=你的数据集, session_id=123)
- 要实现多异常检测模型对比的需求,需要手动遍历支持的模型,分别训练后汇总指标,示例代码如下:
# 查看当前版本支持的所有异常检测模型 print(models()) # 手动批量训练对比示例 target_models = ['iforest', 'knn', 'lof', 'svm'] compare_result = [] for model_id in target_models: # 训练单个模型 current_model = create_model(model_id) # 生成预测结果,可根据自身需求自定义计算需要的评估指标加入对比结果 pred_result = predict_model(current_model, data=你的数据集) # 此处补充你的指标计算逻辑,将结果存入compare_result汇总即可
内容的提问来源于stack exchange,提问作者eb_777
相关产品推荐
相关产品推荐

