在python中平衡的多类分类(过采样)
Posted
技术标签:
【中文标题】在python中平衡的多类分类(过采样)【英文标题】:Multiclass classification to balance in python (over sampling) 【发布时间】:2018-11-20 01:40:42 【问题描述】:我有以下问题,有分类问题。在 50,000 行的轨道上,在 Y 60 个标签上。但是数据是不平衡的(在一个类中,35000 个值,在其他 59 个类中,15000 个值,其中大约 30 个值)。比如,即X(column_1,column_2,column_3)和Y:
colum_1 colum_2 colum_3 Y
0.5 1 2 1
0.5 1.1 2 1
0.55 0.95 3 1
0.1 1 2 2
2 0.9 3 3
并且需要添加“嘈杂”的数据,这样就不会有不平衡,有条件地,所有的值都变得相同:
colum_1 colum_2 colum_3 Y
0.5 1 2 1
0.5 1.1 2 1
0.55 0.95 3 1
0.1 1 2 2
0.15 0.99 2 2
0.05 1.01 2 2
2 0.9 3 3
1.95 0.95 3 3
2.05 0.85 3 3
这只是一个玩具例子,但我有很多含义。
【问题讨论】:
我在这里找不到问题 您是要添加另一个包含噪声的列,还是要尝试用噪声更改现有值?目前尚不清楚您要做什么。 那么你需要对少数类进行过采样吗?那有什么问题? python中有一些可用的库可以做到这一点。你的问题是什么? 【参考方案1】:虽然问题并不完全清楚,但我认为您正在寻求对少数类进行过采样的帮助。一种常见的方法是 SMOTE
算法,您可以在 imblearn
包中找到它。
from imblearn.over_sampling import SMOTE
sm = SMOTE(random_state=42, ratio = 1.0)
X_res, Y_res = sm.fit_sample(X_train, Y_train)
只需确保先将数据分成训练组和测试组,然后分别对每个组进行过采样,这样您就不会在两个组中得到相同的数据。更完整的描述here。
【讨论】:
以上是关于在python中平衡的多类分类(过采样)的主要内容,如果未能解决你的问题,请参考以下文章
处理Auto-Sklearn中多类分类的不平衡数据集的最佳方法
在有监督的多类分类中,为啥使用宏 F1 分数而不是平衡精度?