为什么我训练的Logistic Regression模型对所有输入输出相同结果?
预测结果全部一致的核心原因
- 特征编码选型完全错误
LabelEncoder是专为类别标签设计的编码工具,不适合处理文本类输入特征。你将Name字段的爱好名称用LabelEncoder编码,本质是给每个不同的爱好名称随机分配了一个无实际语义的整数数值,逻辑回归无法从这类错误编码的特征中学到任何和分类目标相关的规律,输入特征等同于噪声。 - 编码器重复fit导致编码映射完全不匹配
你在训练阶段已经用训练集数据对label_encoder做了fit_transform,但测试阶段再次调用了fit_transform处理测试数据,这会让编码器完全抛弃训练阶段的编码映射规则,给测试集的三个文本重新生成一套全新的编码值,和训练时的编码逻辑完全不对应,模型根本无法识别输入的特征含义。 - 预处理代码逻辑存在多处无效/错误操作
- 开头的
X.values.reshape(1, -1)、y.values.reshape(1, -1)没有赋值给任何变量,两行代码完全无效 - 后续强行将
X_trainreshape为(256, -1)的操作如果和实际训练样本数不匹配,会直接打乱样本和标签的对应关系,就算样本数刚好为256,硬拆分一维编码值为多维度的操作也完全不符合特征逻辑
- 开头的
- 模型欠拟合直接输出多数类
由于前面的特征和预处理错误,模型完全学不到特征和标签的映射关系,最终会默认输出训练集中占比更高的类别(也就是你输出的1),所以所有样本的预测结果都相同。
修复建议
- 替换特征编码方式:使用
CountVectorizer或TfidfVectorizer处理Name文本特征,不要用LabelEncoder处理输入特征 - 测试阶段只调用训练好的编码器的
transform方法,不要再次调用fit相关接口 - 删除无意义的reshape操作,保持样本维度和标签维度一一对应
内容的提问来源于stack exchange,提问作者Adit Magotra
相关产品推荐
相关产品推荐

