数据处理 过采样与欠采样 SMOTE与随机采样 达到样本均衡化

406 阅读1分钟

过采样与欠采样

1、采样介绍

在分类问题中,有存在正反例数目差异较大的情况,这种情况叫做类别不平衡。

针对这种问题,解决方式有2种:假设正例数量大,反例数目极小。

1、减少正例的数量,使得数据平衡,再进一步分类,这种情况属于“欠采样”;

2、增加反例的数目平衡数据,再分类,这种称为“过采样”;

2、过采样

2.1 随机采样:

增加少数样本,随机在原来的少数样本中随机抽取样本,直至与多数样本数相等

2.2 SMOTE采样:

合成的策略是对每个少数类样本a,从它的最近邻中随机选一个样本b,然后在a,b之间的连线上随机选一点作为新合成的少数类样本。

3、欠采样

与过采样相反,抛弃过多的多数样本

2、代码演示

1.1 创建数据

x=np.array([[1,2],[3,5],[3,5],[2,4],[5,9],[8,7],[13,5],[1,32],[1,8],[5,3]])
y=np.array([0,0,0,0,0,1,1,1,1,1])

from collections import Counter
Counter(y)

在这里插入图片描述

1.2 随机采样

from imblearn.over_sampling import RandomOverSampler

ros=RandomOverSampler(random_state=0)
x_over,y_over=ros.fit_resample(x,y)
Counter(y_over)

在这里插入图片描述

1.3 SMOTE采样

from imblearn.over_sampling import SMOTE
smote=SMOTE(random_state=0)
x_smote,y_smote=smote.fit_resample(x,y)
y_smote

在这里插入图片描述

1.4 欠采样

from imblearn.under_sampling import RandomUnderSampler
rus=RandomUnderSampler(random_state=0)
x_under,y_under=rus.fit_resample(x,y)
y_under

在这里插入图片描述