【发布时间】:2014-03-20 06:18:24
【问题描述】:
在训练随机森林分类器时,我一直在尝试在 scikit-learn 中使用加权样本。当我将样本权重直接传递给分类器时效果很好,例如RandomForestClassifier().fit(X,y,sample_weight=weights),但是当我尝试通过网格搜索为分类器找到更好的超参数时,我碰壁了:
使用grid参数时要传递权重,用法是:
grid_search = GridSearchCV(RandomForestClassifier(), params, n_jobs=-1,
fit_params={"sample_weight"=weights})
问题在于交叉验证器不知道样本权重,因此不会将它们与实际数据一起重新采样,因此调用 grid_search.fit(X,y) 失败:交叉验证器创建 X 和 y 的子集, sub_X 和 sub_y 并最终使用 classifier.fit(sub_X, sub_y, sample_weight=weights) 调用分类器,但现在尚未对权重进行重新采样,因此会引发异常。
目前,我已通过在训练分类器之前对高权重样本进行过度采样来解决此问题,但这是一种临时解决方法。有关如何进行的任何建议?
【问题讨论】:
标签: python machine-learning scikit-learn