gpt4 book ai didi

python - 当我有高度不平衡的数据时,我应该平衡测试集吗?

转载 作者:行者123 更新时间:2023-11-30 08:57:07 26 4
gpt4 key购买 nike

我正在使用 Sklearn GridSearchCv 来查找随机森林在应用于 4 个类别(建筑物、植被、水和道路)的遥感数据时的最佳参数,问题是我有很多比其他类别更多的“植被”类别(我所说的“很多”是指从数千到数百万的差异)。我应该平衡我的测试数据集以获得指标吗?

在分成训练和测试之前,我已经平衡了整个数据集,这意味着两个数据集以相同的方式具有相同的类分布。恐怕这并不代表算法在真实数据上的性能,但它让我了解了每个类的性能。如果我使用不平衡的数据,“植被”类别可能最终会与其他平均值混淆。

这是我所做的平衡示例,您可以看到我直接在 X 和 y 上进行平衡。这是完整的数据和标签。

if balance:
smt = RandomUnderSampler(sampling_strategy='auto')
X, y = smt.fit_sample(X, y)
print("Features array shape after balance: " + str(X.shape))

我想最好地了解模型在真实数据上的表现,但我还没有找到确凿的答案!

最佳答案

处理不平衡数据的经验法则是“永远不要平衡测试数据”。处理不平衡数据的流程:

  1. 进行预处理
  2. 应用训练测试拆分(分层)。
  3. 平衡训练数据(通常 SMOTE 效果更好)
  4. 火车模型
  5. 对不平衡测试数据进行测试(显然使用 f-scorePrecision, Recall 等指标)

以便您获得实际性能。

这里出现的问题是为什么不在训练测试分割之前平衡数据?

当您在现实世界中部署时,您不能期望现实世界的数据是平衡的......

更好的方法是在步骤 2 中使用 K 折叠,并为每个折叠执行 3,4,5 步骤

引用this文章了解更多信息。

关于python - 当我有高度不平衡的数据时,我应该平衡测试集吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55921286/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com