过采样是补充那些数据量少的样本,使得不同标签的样本量达到均衡。
1.随机过采样
from imblearn.over_sampling import RandomOverSampler
ros = RandomOverSampler(random_state=0)
X_resampled, y_resampled = ros.fit_resample(X, y)
2. SMOTE过采样
from imblearn.over_sampling import SMOTE, ADASYN
X_resampled, y_resampled = SMOTE().fit_resample(X, y)
print(sorted(Counter(y_resampled).items()))
3. ADASYN过采样
X_resampled, y_resampled = ADASYN().fit_resample(X, y)
print(sorted(Counter(y_resampled).items()))
这三种方法的差别如下:
随机:对于少数类样本a,随机选择多数类样本b的个数-a的个数个少数类样本a
SMOTE
: 对于少数类样本a, 随机选择一个最近邻的样本b, 然后从a与b的连线上随机选取一个点c作为新的少数类样本;
ADASYN
: 关注的是在那些基于K近邻分类器被错误分类的原始样本附近生成新的少数类样本
欠采样是将多的样本进行裁剪,已达到样本的均衡。使用过采样,