为什么我们在将数据拆分为测试和训练之前删除 target/label?

why do we drop target/label before splitting data into test and train?

为什么我们在将数据拆分为测试和训练之前删除 target/label? 例如在下面的代码中

X = df.drop('Scaled sound pressure level',axis=1)
y = df['Scaled sound pressure level'] 

拆分数据

from sklearn.model_selection import train_test_split 

80/20 通过修复种子来重现结果

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state = 2021) 

其实,这不是必须的。您可以为整个数据框提供目标值,该函数将 return 训练 df 并测试 df。然后您可以检索独立列和从属列。这将适用于回归数据集。

对于分类任务,这也可以工作。但是我们希望目标 类 在训练集和测试集中均等分布。因此,我们需要为 train_test_split() 方法的 'stratify' 参数提供目标值。