我的数据集有高度不平衡的类——前景有 30 个类,有几十个样本,背景集超过 10 万个样本。将前景类分类为背景是可以的,而将背景分类为前景应该受到惩罚。
我正在使用 Scikit-learn 的 RandomForests,并且我也在试验 SVM 和 OneVsRest 分类器。我想指定用于fit()
模型方法的评分指标,因此它将与我的目标相对应(我想像进化算法的适应度函数)。但是,API不允许这样的事情。
到目前为止,我尝试过:
- 使用
class_weight
模型参数。如果我将其设置为代表真实世界,那么分类器将学习将所有内容分类为准确度 > 99 % 的背景。如果我设置class_weight = 'balanced'
,那么它似乎更好,但它的误报率很高。 - 使用打分方法,
GridSearchCV
它输出我指定的值(即使是 F1-score 比简单的准确度更有意义),但它仅用于参数选择,最终模型是通过fit()
方法学习的,这再次忽略了我的评分。
有没有办法为该fit()
方法提供我自己的自定义评分功能?