分阶段训练模型时合并错误预测数据引发样本数不匹配ValueError求助
解决ValueError:样本数不一致问题
问题根源
你遇到的错误是因为测试特征集test_data_1和测试标签集y_test_1的样本数量不匹配,前者有127条,后者只有99条,模型无法对齐特征与标签完成预测和评估。
排查与修复步骤
1. 检查测试集合并逻辑
第二阶段合并31-40条数据与第一阶段错误记录时,必须保证特征(X)和标签(y)成对合并,不能单独合并某一方:
# 假设第一阶段错误样本的特征是dt_error_X,标签是dt_error_y # 31-40条数据的特征是X_31_40,标签是y_31_40 test_data_1 = pd.concat([X_31_40, dt_error_X], axis=0) y_test_1 = pd.concat([y_31_40, dt_error_y], axis=0)
合并时要保持X和y的顺序一致,确保每条特征都对应正确的标签。
2. 提前验证样本数量
在执行预测代码前,先打印两个数据集的形状,确认样本数一致:
print("测试特征集形状:", test_data_1.shape) print("测试标签集形状:", y_test_1.shape)
如果输出的第一维(样本数)不同,说明合并过程存在错误,回到第一步排查。
3. 修正第一阶段错误样本提取逻辑
第一阶段提取错误预测记录时,要通过索引关联特征和标签,保证错误样本的X和y一一对应:
# 第一阶段训练决策树并预测 dt = DecisionTreeClassifier() dt.fit(X_1_10, y_1_10) test_preds_dt = dt.predict(X_11_20) # 定位错误样本的索引 error_indices = X_11_20[test_preds_dt != y_11_20].index # 提取完整的错误样本特征与标签 dt_error_X = X_11_20.loc[error_indices] dt_error_y = y_11_20.loc[error_indices]
避免只提取错误特征或标签,导致后续合并时样本数失衡。
4. 确认数据分段的正确性
检查原始50条数据的分段切片是否准确,确保每段的X和y样本数一致:
# 假设原始特征集为X,标签集为y X_1_10 = X.iloc[0:10] y_1_10 = y.iloc[0:10] X_11_20 = X.iloc[10:20] y_11_20 = y.iloc[10:20] X_21_30 = X.iloc[20:30] y_21_30 = y.iloc[20:30] X_31_40 = X.iloc[30:40] y_31_40 = y.iloc[30:40]
确保每段切片的起始、结束索引正确,没有出现越界或样本数不符的情况。
内容的提问来源于stack exchange,提问作者zuma boy
相关产品推荐
相关产品推荐

