Я использую SMOTE для повторной выборки двоичного класса TARGET_FRAUD
, который содержит значения 0 и 1. 0 имеет около 900 записей, в то время как 1 имеет только около 100 записей.Я хочу пересчитать класс 1 примерно до 800.
Это сделано для выполнения некоторого классификационного моделирования.
#fix imbalanced data
from imblearn.over_sampling import SMOTE
#bar plot of target_fraud distribution
sns.countplot('TARGET_FRAUD', data=df)
plt.title('Before Resampling')
plt.show()
#Synthetic Minority Over-Sampling Technique
sm = SMOTE()
# Fit the model to generate the data.
oversampled_trainX, oversampled_trainY = sm.fit_resample(df.drop('TARGET_FRAUD', axis=1), df['TARGET_FRAUD'])
resampled_df = pd.concat([pd.DataFrame(oversampled_trainY), pd.DataFrame(oversampled_trainX)], axis=1)
resampled_df.columns = df.columns
sns.countplot('TARGET_FRAUD', data=resampled_df)
plt.title('After Resampling')
plt.show()
Это количество значений перед повторной выборкой:
TARGET_FRAUD:
0 898
1 102
Это число значений после повторной выборки:
1.000000 1251
0.000000 439
0.188377 1
0.228350 1
0.577813 1
0.989742 1
0.316744 1
0.791926 1
0.970161 1
0.757886 1
0.089506 1
0.567179 1
0.331502 1
0.563530 1
0.882599 1
0.918105 1
0.613229 1
0.239910 1
0.487373 1
...
Почему происходит случайноезначения с плавающей точкой между 0 и 1?Я только хочу, чтобы он возвращал значения int 0 и 1.