ClickHouse中catboostEvaluate分类任务返回回归值,如何转为0或1?
解决ClickHouse中catboostEvaluate返回连续值而非分类标签的问题
这不是Bug,是ClickHouse的catboostEvaluate函数的默认行为特性:
- 原生CatBoost的
model.predict()方法默认返回分类标签(0/1),因为它默认使用prediction_type='Class'。 - ClickHouse的
catboostEvaluate默认返回原始预测值(比如二分类任务中的对数几率得分),对应prediction_type='RawFormulaVal',所以会得到连续数值。
解决方法
直接在调用catboostEvaluate时指定prediction_type参数为'Class',即可返回0/1的分类标签:
SELECT catboostEvaluate('/root/occupy.bin', Temperature, Humidity, Light, CO2, HumidityRatio, 'Class') AS prediction FROM occupancy LIMIT 1
可选方案:手动阈值转换
如果需要自定义分类阈值,也可以基于原始得分手动判断:
SELECT if(catboostEvaluate('/root/occupy.bin', Temperature, Humidity, Light, CO2, HumidityRatio) > 0, 1, 0) AS prediction FROM occupancy LIMIT 1
注:二分类任务中默认对数几率的阈值为0,若模型训练时调整过决策边界,需对应修改阈值
内容的提问来源于stack exchange,提问作者Zhang Hanwen
相关产品推荐
相关产品推荐

