我正在使用不平衡学习对我的数据进行过采样。我想知道使用过采样方法后每个类中有多少条目。此代码运行良好:
import imblearn.over_sampling import SMOTE
from collections import Counter
def oversample(x_values, y_values):
oversampler = SMOTE(random_state=42, n_jobs=-1)
x_oversampled, y_oversampled = oversampler.fit_resample(x_values, y_values)
print("Oversampling training set from {0} to {1} using {2}".format(dict(Counter(y_values)), dict(Counter(y_over_sampled)), oversampling_method))
return x_oversampled, y_oversampled
但我转而使用管道,因此我可以使用 GridSearchCV 找到最佳的过采样方法(ADASYN、SMOTE 和 BorderlineSMOTE)。因此,我从来没有真正自己调用 fit_resample 并使用以下方式丢失我的输出:
from imblearn.pipeline import Pipeline
from sklearn.preprocessing import MinMaxScaler
from sklearn.ensemble import RandomForestClassifier
pipe = Pipeline([('scaler', MinMaxScaler()), ('sampler', SMOTE(random_state=42, n_jobs=-1)), ('estimator', RandomForestClassifier())])
pipe.fit(x_values, y_values)
上采样有效,但我失去了关于训练集中每个类有多少条目的输出。
有没有办法获得与使用管道的第一个示例类似的输出?