我在
sklearn
中使用随机森林,并且我的数据集相当不平衡(20%的正类,80%的其他类)。有没有办法让它针对一些考虑到这一点的指标进行训练(优化),比如 AUC 分数或 F1 分数?我可以使用什么技巧来推动它朝这个方向发展吗?
到目前为止,我想到/尝试过的唯一方法是使用不同的类别权重。
或者,是否有另一种实现(或另一种模型,例如 xgboost)允许我这样的自定义指标?
您可以在交叉验证或训练/测试分割期间使用“分层抽样”方法。这确保了每次折叠或分割都包含每个类的平衡表示。
from sklearn.model_selection import StratifiedKFold
cv = StratifiedKFold(n_splits=5, shuffle=True, random_state=42)