我正在尝试对具有目标变量“b”的倾斜数据集进行分层拆分。目标变量是一个位值(0 或 1)。这是一个例子:
df = pd.DataFrame(data={'a': np.random.rand(100000), 'b': 0})
df.loc[np.random.randint(0, 100000, 1000), 'b'] = 1
tr, ts = train_test_split(df, test_size=.2, stratify=df['b'])
print(tr.shape, ts.shape)
此代码返回以下内容:
(93105, 2) (38, 2)
我的问题是返回的训练/测试数组不满足设置的 20% 分割率。
我的设置:
- Python 3.7.0(32 位)
- Sklearn 0.20.3
- 熊猫 0.23.4
我发现问题是由底层拆分函数中的整数溢出引起的。
我该如何解决这个问题,这是一个已知的错误吗?我找不到任何有用的东西。