作为可重现的示例,我有以下数据集:
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
data = np.random.randint(0,20,size=(300, 5))
df = pd.DataFrame(data, columns=['ID', 'A', 'B', 'C', 'D'])
df = df.set_index(['ID'])
df.head()
Out:
A B C D
ID
12 3 14 4 7
9 5 9 8 4
12 18 17 3 14
1 0 10 1 0
9 10 5 11 9
我需要执行 70%-30% 的分层分割(在 y 上),我知道它看起来像这样:
# Train/Test Split
X = df.iloc[:,0:-1] # Columns A, B, and C
y = df.iloc[:,-1] # Column D
X_train, X_test, y_train, y_test = train_test_split(X, y, train_size = 0.70, test_size = 0.30, stratify = y)
然而,虽然我希望训练和测试集具有相同(或足够相似)的“D”分布,但我不希望测试和训练中都存在相同的“ID”。
我怎么能这样做呢?
饮歌长啸
相关分类