多输出分类模型训练报错:样本数量不一致问题求助
问题分析与解决方案
核心问题
你遇到的ValueError本质是CountVectorizer的使用场景错误:
- CountVectorizer是专门用于文本数据的特征提取工具,它要求输入是一维数组(每个元素是一段文本字符串),但你的
X_train是形状为(33,132)的二维数值数组(人体坐标特征)。 - 当你把二维数组传入CountVectorizer时,它会错误地将数组的每一列当作一个样本(共132个),导致处理后的特征样本数变成132,和
y_train的33个样本完全不匹配,从而触发报错。
修正方案
直接移除Pipeline中的CountVectorizer,改用适合数值特征的预处理工具(如果需要),再结合MultiOutputClassifier训练:
代码示例
from sklearn.pipeline import Pipeline from sklearn.preprocessing import StandardScaler from sklearn.multioutput import MultiOutputClassifier from sklearn.linear_model import LogisticRegression # 构建适配数值特征的Pipeline:标准化预处理 + 多输出分类 pipeline = Pipeline([ ('scaler', StandardScaler()), # 对坐标数值做标准化,提升模型效果 ('multi_output_clf', MultiOutputClassifier(LogisticRegression())) ]) # 训练模型 pipeline.fit(X_train, y_train)
简化版(无需预处理时)
如果你的坐标数据已经做过归一化/标准化,也可以直接去掉预处理步骤:
pipeline = Pipeline([ ('multi_output_clf', MultiOutputClassifier(LogisticRegression())) ]) pipeline.fit(X_train, y_train)
内容的提问来源于stack exchange,提问作者Nikita Maltsev
相关产品推荐
相关产品推荐

