我正在尝试在 python 中使用 SMOTE 并查看是否有任何方法可以手动指定少数样本的数量。
假设我们有一个类的 100 条记录和另一类的 10 条记录,如果我们使用 ratio = 1,我们得到 100:100,如果我们使用 ratio 1/2,我们得到 100:200。但我正在寻找是否有任何方法可以手动指定要为这两个类生成的实例数。
Ndf_class_0_records = trainData[trainData['DIED'] == 0]
Ndf_class_1_records = trainData[trainData['DIED'] == 1]
Ndf_class_0_record_counts = Ndf_class_0_records.DIED.value_counts()
Ndf_class_1_record_counts = Ndf_class_1_records.DIED.value_counts()
X_smote = trainData.drop("DIED", axis=1)
y_smote = trainData["DIED"]
smt = SMOTE(ratio={0:Ndf_class_0_record_counts, 1:Ndf_class_1_record_counts*2})
X_smote_res, y_smote_res = smt.fit_sample(X_smote, y_smote)
在上面的代码中,我试图手动指定每个类的编号,但是在最后一行代码中出现以下错误
ValueError:Series 的真值不明确。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。