我正在尝试解决不平衡的分类问题,所有输入特征都是分类的。以下是每个特征的值计数:
for i in X_train.columns:
print(i+':',X_train[i].value_counts().shape[0])
Pclass: 3
Sex: 2
IsAlone: 2
Title: 5
IsCabin: 2
AgeBin: 4
FareBin: 4
在 train_test_split 之后对训练数据应用 SMOTE。创建了一些新值,这些值不存在于 X_train 数据集中。
from imblearn.over_sampling import SMOTE
from collections import Counter
#removing the random_state dosent help
sm = SMOTE(random_state=0)
X_res, y_res = sm.fit_resample(X_train, y_train)
print('Resampled dataset shape %s' % Counter(y_res))
Resampled dataset shape Counter({1: 381, 0: 381})
重采样数据集的值计数:
Pclass: 16
Sex: 7
IsAlone: 2
Title: 12
IsCabin: 2
AgeBin: 4
FareBin: 4
使用 SMOTE 创建了新值,创建了 under_sampling 新值也是如此。这些新值不存在于测试数据集中。
例子:
X_train-Pclass 1-20,2-15,3-40
X_res-Pclass 1-20,0.999999-3,2-11,1.9999999-4,3-34,2.9999999-6
我的问题:
为什么要创建这些价值观,它们是否具有某种重要性?
如何对付他们?我应该将它们四舍五入还是删除它们
有没有办法在不创建这些新值的情况下执行过采样和欠采样?