【发布时间】:2019-08-21 11:14:25
【问题描述】:
我有一个高度不平衡的数据集,我想执行二进制分类。
在阅读一些帖子时,我发现sklearn 为不平衡的数据集提供了class_weight="balanced"。所以,我的分类器代码如下。
clf=RandomForestClassifier(random_state = 42, class_weight="balanced")
然后我使用上面的分类器进行了 10 折交叉验证,如下所示。
k_fold = KFold(n_splits=10, shuffle=True, random_state=42)
new_scores = cross_val_score(clf, X, y, cv=k_fold, n_jobs=1)
print(new_scores.mean())
但是,我不确定class_weight="balanced" 是否通过 10 倍交叉验证得到反映。我做错了吗?如果是这样,在 sklearn 中是否有更好的方法?
如果需要,我很乐意提供更多详细信息。
【问题讨论】:
-
有多种方法可以平衡您的数据集(例如,替换或随机子采样),最好的方法取决于数据的性质以及您想要实现的目标。您可以查看this package,它提供了广泛的选择。
-
警告:您应该明智地为您的分类器选择性能度量。您可能想了解何时使用 which at learnerworld.tumblr.com/search/performance+measures 特别对于倾斜数据,首选 F1 分数等分数。
标签: python machine-learning scikit-learn classification