如何用已保存的机器学习模型测试新样本?含特征缺失疑问
用预训练Logistic Regression模型预测新病例
1. 加载模型并完成预测
首先用你提到的代码加载保存好的模型:
import pickle # 替换为你的模型文件路径 filename = 'your_trained_model.pkl' loaded_model = pickle.load(open(filename, 'rb'))
接下来准备新病例的特征数据,必须和训练时的特征顺序、维度完全一致(皮马印第安人糖尿病数据集的标准特征顺序是:怀孕次数、口服葡萄糖耐量试验2小时血糖、舒张压、三头肌皮褶厚度、2小时血清胰岛素、体重指数、糖尿病遗传函数、年龄)。哪怕只有一个样本,也要整理成二维数组格式:
# 示例新病例特征,对应上述8个特征 new_patient = [[2, 120, 70, 25, 80, 28.5, 0.351, 30]] # 执行预测 result = loaded_model.predict(new_patient) # 输出分类结果 print("预测结果:", "患病" if result[0] == 1 else "未患病")
2. 特征缺失的核心问题
- 测试时必须提供训练时用到的全部特征:模型训练时已经固定了输入特征的维度和对应关系,少任何一个特征都会导致输入维度不匹配,直接抛出错误,根本无法完成预测。
- 如果新病例有缺失数据,你得先做预处理:
- 用训练集对应特征的统计值(比如均值、中位数、众数)填充缺失值,而且要和你训练模型前处理缺失值的逻辑一致(比如训练时用均值填充了血糖的缺失,预测时也得用同一个均值填)。
- 绝对不能直接删掉缺失的特征列,除非你重新训练一个去掉该特征的模型,不然原模型不认维度减少的输入。
内容的提问来源于stack exchange,提问作者BenjaminV
相关产品推荐
相关产品推荐

