当我将Sklearn GridSearchCv
应用于四类(建筑物,植被,水和道路)的遥感数据时,我正在使用随机森林找到最佳参数,问题是我的植被更多了”课程比其他课程(我的意思是说,相差数千到几百万)。我应该平衡测试数据集以获得指标吗?
在进行训练和测试之前,我已经平衡了整个集合,这意味着两个数据集以相同的方式分配了相同的类。恐怕这不能代表算法在实际数据上的性能,但可以让我深入了解每个类的性能。如果我使用不平衡数据,则“植被”类最终可能会与其他平均值混淆。
这是我做的余额示例,如您所见,我直接在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))
我想对真实数据上模型的性能有最好的了解,但是我还没有找到最终的答案!
答案 0 :(得分:2)
处理平衡数据的经验法则是“永远不要平衡测试数据”。 处理不平衡数据的管道:
这样您将获得实际的效果。
这里出现的问题是,为什么在火车测试分裂之前不平衡数据?
在现实世界中进行部署时,您不能期望现实世界中的数据得到平衡...
更好的方法是在第2步使用K折,然后对每折进行3、4、5步
有关更多信息,请参见this文章。