加载pickle存储的LogisticRegression模型预测测试集Race字段
后续预测操作步骤
- 首先修正训练阶段的模型保存逻辑(必须操作,原训练代码存在逻辑错误)
你之前的验证流程中,先对输入特征做了独热编码再训练模型,但最后保存的模型是直接在未编码的原始特征上训练的,和验证逻辑不一致,还会因为Gender为类别特征直接报错。需要修改训练代码的保存部分,将独热编码器和训练好的模型一起保存:
# 训练阶段修改后的保存代码 ohe = OneHotEncoder(handle_unknown='ignore') ohe.fit(X_train) X_train_ohe = ohe.transform(X_train).toarray() clf = LogisticRegression(solver='liblinear') clf.fit(X_train_ohe, y_train.values.ravel()) # 同时保存编码器和模型 pickle.dump({'ohe': ohe, 'model': clf}, open('model.pkl','wb'))
- 预测阶段补全以下代码即可完成预测
在你现有预测代码的基础上,追加以下逻辑:
# 加载编码器和模型 loaded_obj = pickle.load(open('model.pkl','rb')) ohe = loaded_obj['ohe'] model = loaded_obj['model'] # 测试集特征执行和训练阶段一致的独热编码 X_test_ohe = ohe.transform(X) # 生成预测结果 pred_race = model.predict(X_test_ohe) # 将预测结果写入测试集的Race列 df['Race'] = pred_race # 可选:将带预测结果的测试集保存为新文件 df.to_csv('test_pred_result.csv', index=False)
- 额外优化提示
你当前的NaN填充代码无法覆盖pandas原生的浮点型空值,建议替换为更可靠的写法:df['Race'] = df['Race'].fillna(0)
内容的提问来源于stack exchange,提问作者Ahmet Furkan Aydoğan
相关产品推荐
相关产品推荐

