Python Vetiver部署模型如何配置使用score_samples替代predict方法
自定义Vetiver端点调用逻辑的实现方案
Vetiver默认调用模型.predict()方法的行为支持自定义覆盖,不需要修改框架源码,按以下步骤配置即可让端点调用.score_samples()返回异常分数:
- 首先单独定义打分处理函数,函数必须固定接收
model(训练完成的模型对象)、new_data(接口收到的待预测数据)两个入参,内部实现你需要的打分逻辑即可:
def get_anomaly_score(model, new_data): return model.score_samples(new_data)
- 初始化Vetiver模型对象时,把上面写好的自定义函数传给
predict_fn参数,替换框架默认的predict调用逻辑:
import vetiver # iforest_model为你训练好的孤立森林模型对象 vetiver_model = vetiver.VetiverModel( model=iforest_model, model_name="isolation_forest_anomaly_detector", predict_fn=get_anomaly_score )
- 后续按常规流程部署端点即可,部署完成后接口收到请求时,会自动执行
.score_samples()方法,返回0到1区间的异常分数,不再输出1/-1的分类结果。
补充:如果需要接口同时返回分类标签和异常分数,直接在自定义的
predict_fn里把两类结果组装成pandas DataFrame或者字典格式返回即可,框架会自动将结构化结果序列化为标准JSON响应,不需要额外修改接口配置。
内容的提问来源于stack exchange,提问作者David Smith
相关产品推荐
相关产品推荐

