Я хочу обучить модель ML бинарной классификации с некоторыми данными, которые у меня есть; что-то вроде этого:
df
y ch1_g1 ch2_g1 ch3_g1 ch1_g2 ch2_g2 ch3_g2
0 20 89 62 23 3 74
1 51 64 19 2 83 0
0 14 58 2 71 31 48
1 32 28 2 30 92 91
1 51 36 51 66 15 14
...
Моя цель (y
) зависит от трех характеристик из двух групп, однако у меня есть дисбаланс в моих данных, подсчет значений моей цели y
показывает, что я имеют больше нулей, чем в соотношении около 2,68. Я исправляю это путем зацикливания каждой строки и случайного обмена значениями из группы 1 в группу 2 и наоборот, например:
for index,row in df.iterrows():
choice = np.random.choice([0,1])
if row['y'] != choice:
df.loc[index, 'y'] = choice
for column in df.columns[1:]:
key = column.replace('g1', 'g2') if 'g1' in column else column.replace('g2', 'g1')
df.loc[index, column] = row[key]
Делая это, уменьшите соотношение не более чем до 1,3, поэтому мне было интересно, есть ли более прямой подход с использованием pandas методов. ¿У кого-нибудь есть идеи, как это сделать sh? 1009 *