我正在使用SMOTE(imblearn.over_sampling import SMOTE)来解决多类分类问题,其中一些类是高度不平衡的。目前我已经创建了一个循环,它将通过一些迭代以最少的观察结果对类进行过采样。默认情况下,该库会使用最少的样本并对其进行过度采样,但我想确定哪个类要过采样。我不知道图书馆如何支持这个选项 - 任何想法?
我的代码:
df = pd.read_csv(rawdata)
X = df.iloc[:, :-1]
y = df.iloc[:, -1]
for x in range(1,3):
print("Run Number:", x)
print(X.shape)
print('Original dataset shape {}'.format(Counter(y)))
sm = SMOTE(ratio=0.5, random_state=42, k_neighbors=3)
X, y = sm.fit_sample(X, y)
print('Resampled dataset shape {}'.format(Counter(y)))