如何将训练完成的机器学习模型应用到其他独立数据集进行测试
操作步骤
你不需要再调用train_test_split拆分原数据集,直接把训练、测试流程拆成两个独立数据的处理环节即可,具体操作如下:
1. 训练阶段(使用250名患者的数据集)
和你之前学习的训练逻辑完全一致,只需要去掉拆分测试集的步骤即可:
import pandas as pd from sklearn.linear_model import LogisticRegression # 示例用逻辑回归,替换为你教程里的模型即可 # 加载训练数据集 train_df = pd.read_csv("你的250名患者训练集路径.csv") # 拆分特征和标签 x_train = train_df.drop("output", axis=1) y_train = train_df["output"] # 【可选】如果有预处理(比如标准化、编码),必须用训练集拟合转换器 # 示例:标准化 # from sklearn.preprocessing import StandardScaler # scaler = StandardScaler() # x_train = scaler.fit_transform(x_train) # 训练模型 model = LogisticRegression() model.fit(x_train, y_train)
2. 测试阶段(使用3名患者的独立数据集)
需保证测试集的特征列名、顺序、数据类型和训练集的x_train完全一致,不能多列也不能缺列
# 加载独立测试数据集 test_df = pd.read_csv("你的3名患者测试集路径.csv") # 拆分特征和标签:如果测试集带真实output标签需要评估效果就执行这步,仅做预测可以跳过 x_test = test_df.drop("output", axis=1) y_test = test_df["output"] # 【可选】和训练阶段对应,用训练集拟合好的预处理转换器处理测试集,不能重新fit # x_test = scaler.transform(x_test)
3. 预测/评估
- 仅预测心脏病发作概率:
# 返回的数组第二列即为对应患者心脏病发作的概率 pred_proba = model.predict_proba(x_test)[:, 1] print(pred_proba)
- 需评估模型效果(测试集有真实
output标签的前提下):
from sklearn.metrics import accuracy_score y_pred = model.predict(x_test) # 计算准确率 acc = accuracy_score(y_test, y_pred) print(f"模型准确率:{acc}")
注意事项
如果训练阶段做了缺失值填充、特征编码、标准化/归一化等预处理操作,必须用训练集拟合的预处理工具处理测试集,不能单独对测试集做拟合操作,否则会出现数据泄露,导致预测结果失真。
内容的提问来源于stack exchange,提问作者Leonardo Felix da Silva
相关产品推荐
相关产品推荐

