You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

分阶段训练模型时合并错误预测数据引发样本数不匹配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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 16:27:19