0

我正在使用 SMOTE 对少数数据集进行过采样。我的代码如下:

from imblearn.over_sampling import SMOTE

X_train, X_test, y_train, y_test = train_test_split(features_coded, labels, test_size=0.2, random_state=42)

sm = SMOTE(random_state=42, sampling_strategy='all')
# also tried the following, same result
# sm = SMOTE(random_state=42, sampling_strategy=0.5)
X_train, y_train = sm.fit_resample(X_train, y_train)

我使用如下语句检查 features_coded、labels、X_train 和 y_train:

features_coded[features_coded.isnull().any(axis=1)]

我很确定它们在过采样之前不包含任何 nan 值。但是,重采样后,X_train 数据帧中有很多 nan 值。

以防万一您想知道:这是我在过采样之前的数据帧(保存为 csv 文件),没有任何遗漏。 过采样前的数据集

这是我过采样后的数据框(保存为 csv 文件),有很多空值! 过采样后的相同数据集

有什么问题吗?

4

1 回答 1

-2

我遇到了类似的问题,我使用这些行将输入X和数组转换Y为数组X_arr = numpy.array(X)y_arr = numpy.array(Y)并将它们输入train_test_split()如下:

X_train, X_test, y_train, y_test = train_test_split(X_arr, y_arr, test_size = 0.2, random_state = 2)

smote = SMOTE(random_state=2)

X_train_balanced, Y_train_balanced = smote.fit_resample(X_train, y_train)
于 2021-06-04T17:01:01.397 回答