自定义 scikit-learn 模型
在本练习中,您将使用 MLflow 的 pyfunc 风格来创建一个自定义模型。基于 insurance_charges 数据集,在训练用于分类时,需要将标签从 female 改为 0,将 male 改为 1。而在使用模型进行预测时,需要将输出的 0 或 1 转换回字符串 female 或 male。
该自定义模型是基于 LogisticRegression 的分类模型,并将使用名为 CustomPredict 的类。CustomPredict 在 predict 方法中增加了一个步骤:当模型接收输入并输出预测后,把标签 0 和 1 还原为 female 和 male。您将使用 pyfunc 风格来记录和加载模型。
我们的 insurance_charges 数据集会先进行预处理,模型将通过以下代码进行训练:
lr_model = LogisticRegression().fit(X_train, y_train)
已导入 MLflow 模块。
本练习是课程的一部分
MLflow 入门
练习说明
- 使用 MLflow 的
pyfunc风格记录自定义模型。 - 将
pyfunc的python_model参数设置为使用自定义类CustomPredict()。 - 使用
pyfunc加载该自定义模型。
交互式实操练习
通过完成这段示例代码来试试这个练习。
# Log the pyfunc model
____.____.____(
artifact_path="lr_pyfunc",
# Set model to use CustomPredict Class
python_model=____,
artifacts={"lr_model": "lr_model"}
)
run = mlflow.last_active_run()
run_id = run.info.run_id
# Load the model in python_function format
loaded_model = ____.____.____(f"runs:/{run_id}/lr_pyfunc")