scikit-learn - 添加到管道:多标签分类器预测的修改器
问题描述
我创建了一个管道,它在最后使用随机森林分类器进行多标签预测。
现在有时所有类的预测都是 0。在这种情况下,我想修改预测,使第一个标签默认为 1。
例如,
- 预测 (0,1,0,0,1,0) 保持 (0,1,0,0,1,0)
- 预测 (0,0,0,0,0,0) 变为 (1,0,0,0,0,0)
在 sklearn 管道中实现这一目标的方法是什么。是否有某种我可以扩展和实现然后添加到管道中的 Prediction-Modifier 类?
所以我想做的就是在完成后修改随机森林分类器的预测。我可以在代码中轻松地做到这一点,但我不知道如何在管道中做到这一点,例如我可以在网格搜索中做到这一点。
解决方案
我采取了如下扩展随机森林分类器的方法:
class ModifiedRandomForestClassifier(RandomForestClassifier):
def predict(self, X):
y_pred = super().predict(X)
# default to first class if multi-label prediction is (0,0,...,0)
y_pred[y_pred.sum(axis=1) == 0, 0] = 1
return y_pred
推荐阅读
- javascript - 在函数外部使用 $when...then() 内部的变量
- javascript - 使用 ExtendScript 将 compItem 转换为不同大小无法按预期工作
- c# - 全局过滤器可以有 Singleton 或 Transient Scope
- react-native - “ ListView ”已从本机反应中删除
- gradle - Grails 3.3.10 中的 org.codehaus.groovy.runtime.DefaultGroovyMethods 错误
- c# - 输入折线图的月份分组星期
- c++ - 从库 C++ 中设置环境变量
- sql-server - 在 SQL Server 中添加约束,使其具有与刚刚删除的相同的约束名称
- bash - 使用 XMLStarlet 插入单个值太长而无法放入命令行
- visual-studio-code - 资源管理器/上下文菜单。是否可以根据文件夹内的文件更改文件夹上下文?