带有分层整数溢出的 test_train_split

数据挖掘 Python scikit-学习
2022-02-27 23:58:41

我正在尝试对具有目标变量“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

我发现问题是由底层拆分函数中的整数溢出引起的。

我该如何解决这个问题,这是一个已知的错误吗?我找不到任何有用的东西。

1个回答

这个怎么样?

# Split the data between the Training Data and Test Data
xTrain , xTest , yTrain , yTest = train_test_split(X , y , 
                                                  test_size = 0.30 , 
                                                  random_state = 0, 
                                          ----->  stratify = y)