我有一个包含多标签数据的数据集。共有 20 个标签(从 0 到 20),它们之间的分布不平衡。以下是数据概览:
|id |label|value |
|-----|-----|------------|
|95534|0 |65.250002088|
|95535|18 | |
|95536|0 | |
|95536|0 |100 |
|95536|0 | |
|95536|0 |53.68547236 |
|95536|0 | |
|95537|1 | |
|95538|0 | |
|95538|0 | |
|95538|0 | |
|95538|0 |656.06155202|
|95538|0 | |
|95539|2 | |
|5935 |0 | |
|5935 |0 |150 |
|5935 |0 |50 |
|5935 |0 |24.610985335|
|5935 |0 | |
|5935 |0 |223.81789584|
|5935 |0 |148.1805218 |
|5935 |0 |110.9712538 |
|34147|19 |73.62651909 |
|34147|19 | |
|34147|19 |53.35958016 |
|34147|19 | |
|34147|19 | |
|34147|19 | |
|34147|19 |393.54029411|
我希望对数据进行过度采样并在标签之间取得平衡。我遇到了一些方法,例如SMOTE
,SMOTENC
但它们都需要将数据拆分为训练集和测试集,并且它们不适用于稀疏数据。有什么方法可以在拆分前的预处理步骤中对整个数据执行此操作?