我想用我拥有的一些数据训练一个二进制分类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
目标的值计数显示我的0比1多,比率约为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,因此我想知道是否有更直接的方法使用熊猫方法。 有人知道如何做到这一点吗
不管交换列是否解决了类不平衡问题,我都会交换整个数据集,并在原始数据集和交换数据集之间随机选择:
输出:
请注意,索引为
1,4
的行与g2
进行了g1
交换相关问题 更多 >
编程相关推荐