使用train_test_split拆分数据报错:样本数量不一致问题排查
问题根源与解决方法
核心错误
你完全用错了train_test_split的用途:这个函数是用来拆分同一个带标签的数据集,生成训练集和验证集的,而不是把独立的训练集(train_df)和测试集(test_df)直接作为参数传入。你传入的train_df和test_df本身样本数量就不一样,所以触发了“输入变量样本数不一致”的报错,删行操作自然解决不了问题。
正确操作步骤
针对泰坦尼克号任务,正确的流程应该是这样:
拆分特征与标签
假设你的train_df包含Survived(是否存活)这个标签列,先把特征和标签分开:# 特征矩阵:去掉标签列 X = train_df.drop('Survived', axis=1) # 标签向量:提取存活状态列 y = train_df['Survived']拆分训练集与验证集
用train_test_split拆分同一个特征集X和标签集y:from sklearn.model_selection import train_test_split X_train, X_valid, y_train, y_valid = train_test_split(X, y, test_size=0.3, random_state=17)测试集的正确用法
你手里的test_df是用于模型训练完成后,做最终预测的独立测试集,不需要和train_df一起传入train_test_split。使用前要确保它和训练集做了完全一致的预处理(比如缺失值填充、类别特征编码等),再用训练好的DecisionTreeClassifier做预测。
内容的提问来源于stack exchange,提问作者Sergey Oblasov
相关产品推荐
相关产品推荐

