我有一个不平衡的PyTorch数据集。The number of A and V samples is much lower than the others我想平衡我的数据集,即使我必须删除属于主流类的样本。怎么做?
现在我只是删除某些类的样本,如果它们的数量超过了某个固定值。这在技术上很复杂,也不方便。也许有一些sklearn或PyTorch方法,使这个算法更容易实现?
我有一个不平衡的PyTorch数据集。The number of A and V samples is much lower than the others我想平衡我的数据集,即使我必须删除属于主流类的样本。怎么做?
现在我只是删除某些类的样本,如果它们的数量超过了某个固定值。这在技术上很复杂,也不方便。也许有一些sklearn或PyTorch方法,使这个算法更容易实现?
1条答案
按热度按时间rdlzhqv91#
不建议从主要类别中删除样本:
1.丢失重要信息,
1.可能会导致模型偏向少数民族。
相反,您可以使用几种策略来平衡数据集,包括:
1.过采样:为少数类别生成新样本,以增加其在数据集中的代表性。这可以通过以下技术实现:
a.合成少数过采样技术(SMOTE)
B.自适应合成采样(ADASYN)。
1.采样不足(您正在执行的操作):减少多数类的样本数以匹配少数类的样本数。这可以通过以下技术来实现:
a.随机抽样不足
B. Tomek链接。
1.过采样和欠采样的组合:这涉及使用过采样和欠采样技术的组合来平衡数据集。
两个PyTorch中都有几种方法可以帮助平衡数据集:
1.加权随机取样器:此采样器允许您为每个类指定权重,可用于对少数类进行过采样或对多数类进行欠采样。
1.数据加载器:此类提供了几个用于对数据进行重排和批处理的选项,这有助于确保每个批处理都包含类的平衡表示形式。