news 2026/7/27 14:20:55

OpenMLOps实战:用Jupyter、MLFlow和Prefect训练你的第一个葡萄酒质量预测模型

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
OpenMLOps实战:用Jupyter、MLFlow和Prefect训练你的第一个葡萄酒质量预测模型

OpenMLOps实战:用Jupyter、MLFlow和Prefect训练你的第一个葡萄酒质量预测模型

【免费下载链接】OpenMLOps项目地址: https://gitcode.com/gh_mirrors/op/OpenMLOps

OpenMLOps是一个强大的开源机器学习运维平台,它集成了Jupyter、MLFlow和Prefect等工具,帮助数据科学家和开发者轻松构建、训练和部署机器学习模型。本文将带你一步步使用OpenMLOps平台,通过Jupyter进行数据处理和模型训练,利用MLFlow跟踪实验结果,并借助Prefect实现工作流自动化,最终完成一个葡萄酒质量预测模型的构建。

准备工作:获取OpenMLOps项目

首先,你需要将OpenMLOps项目克隆到本地环境。打开终端,执行以下命令:

git clone https://gitcode.com/gh_mirrors/op/OpenMLOps

克隆完成后,你可以在项目目录中找到丰富的教程和示例资源,我们将在后续步骤中用到这些资源。

数据准备:探索葡萄酒数据集

在开始训练模型之前,我们需要获取并了解用于训练的数据。OpenMLOps的教程中提供了一个葡萄酒质量数据集,包含了多种葡萄酒的理化指标和对应的质量评分。

从图中可以看到,数据集包含了固定酸度、挥发性酸度、柠檬酸、残留糖分等多个特征,以及最后一列的质量评分。我们的目标是根据这些特征预测葡萄酒的质量。

你可以在项目的tutorials/wine-quality.ipynb文件中找到完整的数据分析和预处理代码。

模型训练:使用Jupyter构建预测模型

Jupyter是OpenMLOps平台中用于交互式开发的核心工具。通过Jupyter,你可以方便地编写代码、可视化数据并训练模型。

1. 启动Jupyter环境

按照项目文档中的说明启动Jupyter服务后,创建一个新的Python notebook。首先导入必要的库:

from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score from sklearn.model_selection import train_test_split from sklearn.linear_model import ElasticNet import pandas as pd import numpy as np

2. 数据获取与预处理

使用以下代码从UCI机器学习数据库获取葡萄酒质量数据:

def fetch_data(): csv_url = "http://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv" data = pd.read_csv(csv_url, sep=";") return data data = fetch_data() data.head()

3. 模型训练与评估

我们使用ElasticNet模型进行训练,并定义评估指标:

def eval_metrics(actual, pred): rmse = np.sqrt(mean_squared_error(actual, pred)) mae = mean_absolute_error(actual, pred) r2 = r2_score(actual, pred) return rmse, mae, r2 def train_model(data, alpha=0.5, l1_ratio=0.5): train, test = train_test_split(data) train_x = train.drop(["quality"], axis=1) test_x = test.drop(["quality"], axis=1) train_y = train[["quality"]] test_y = test[["quality"]] lr = ElasticNet(alpha=alpha, l1_ratio=l1_ratio, random_state=42) lr.fit(train_x, train_y) predicted_qualities = lr.predict(test_x) rmse, mae, r2 = eval_metrics(test_y, predicted_qualities) print("Elasticnet model (alpha=%f, l1_ratio=%f):" % (alpha, l1_ratio)) print(" RMSE: %s" % rmse) print(" MAE: %s" % mae) print(" R2: %s" % r2)

实验跟踪:用MLFlow管理模型训练过程

MLFlow是OpenMLOps中用于实验跟踪和模型管理的重要组件。它可以帮助你记录不同实验的参数、指标和模型结果,方便比较和复现。

1. 创建MLFlow实验

访问MLFlow界面,点击"Create Experiment"按钮,创建一个名为"Wine Quality Prediction"的实验。

2. 修改代码以集成MLFlow

在训练函数中添加MLFlow相关代码,用于记录实验参数、指标和模型:

import mlflow def train_model(data, mlflow_experiment_id, alpha=0.5, l1_ratio=0.5): mlflow.set_tracking_uri("http://mlflow.mlflow:5000") train, test = train_test_split(data) train_x = train.drop(["quality"], axis=1) test_x = test.drop(["quality"], axis=1) train_y = train[["quality"]] test_y = test[["quality"]] with mlflow.start_run(experiment_id=mlflow_experiment_id): lr = ElasticNet(alpha=alpha, l1_ratio=l1_ratio, random_state=42) lr.fit(train_x, train_y) predicted_qualities = lr.predict(test_x) (rmse, mae, r2) = eval_metrics(test_y, predicted_qualities) print("Elasticnet model (alpha=%f, l1_ratio=%f):" % (alpha, l1_ratio)) print(" RMSE: %s" % rmse) print(" MAE: %s" % mae) print(" R2: %s" % r2) mlflow.log_param("alpha", alpha) mlflow.log_param("l1_ratio", l1_ratio) mlflow.log_metric("rmse", rmse) mlflow.log_metric("r2", r2) mlflow.log_metric("mae", mae) mlflow.sklearn.log_model(lr, "model")

3. 运行实验并查看结果

使用不同的参数运行多次实验,然后在MLFlow界面中查看结果:

train_model(data, mlflow_experiment_id=1, alpha=0.3, l1_ratio=0.3) train_model(data, mlflow_experiment_id=1, alpha=0.5, l1_ratio=0.5)

从结果中可以清晰地看到不同参数组合下模型的性能指标,帮助你选择最佳模型。

工作流自动化:用Prefect实现模型训练流程

Prefect是OpenMLOps中的工作流管理工具,它可以帮助你自动化机器学习流程,实现定期数据获取、模型训练和评估。

1. 定义Prefect任务

将数据获取和模型训练函数转换为Prefect任务:

from prefect import task @task def fetch_data(): csv_url = "http://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv" data = pd.read_csv(csv_url, sep=";") return data @task def train_model(data, mlflow_experiment_id, alpha=0.5, l1_ratio=0.5): # 训练模型的代码,同上

2. 创建Prefect工作流

定义一个完整的工作流,包含数据获取和模型训练步骤,并设置调度间隔:

from prefect import Flow, Parameter from prefect.schedules import IntervalSchedule from datetime import timedelta schedule = IntervalSchedule(interval=timedelta(minutes=2)) with Flow("train-wine-quality-model", schedule) as flow: data = fetch_data() train_model(data=data, mlflow_experiment_id=1, alpha=0.3, l1_ratio=0.3)

3. 部署和运行工作流

将工作流部署到Prefect服务器,它将按照设定的调度自动运行。在Prefect界面中,你可以查看工作流的执行情况和依赖关系。

这个简单的DAG(有向无环图)展示了我们的工作流:先执行数据获取任务,然后执行模型训练任务。

总结与下一步

通过本文的实战教程,你已经学会了如何使用OpenMLOps平台中的Jupyter、MLFlow和Prefect工具来构建一个葡萄酒质量预测模型。你可以在modules/目录中找到更多关于这些工具的配置和部署细节。

下一步,你可以尝试:

  1. 优化模型参数,提高预测 accuracy
  2. 探索其他机器学习算法,如随机森林或神经网络
  3. 学习如何将训练好的模型部署到生产环境,可参考tutorials/deploy-model-seldon.md

OpenMLOps提供了一个完整的机器学习运维生态系统,帮助你从数据探索到模型部署的全流程管理。开始你的机器学习之旅吧!

【免费下载链接】OpenMLOps项目地址: https://gitcode.com/gh_mirrors/op/OpenMLOps

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/27 14:18:34

Jellium Desktop音频设备入门:设备基础

Jellium Desktop音频设备入门:设备基础 【免费下载链接】jellium-desktop An unofficial desktop client for Jellyfin 项目地址: https://gitcode.com/GitHub_Trending/je/jellium-desktop Jellium Desktop 是一款非官方的 Jellyfin 桌面客户端,…

作者头像 李华
网站建设 2026/7/27 14:16:54

腾讯C++面试攻略:从语言基础到系统设计的深度解析与实战技巧

1. 项目概述:一份面试攻略的诞生与价值最近帮几个准备春招的朋友做模拟面试,发现一个挺有意思的现象:大家手里都攒了不少所谓的“面经”和“题库”,但真问到一些看似基础的问题时,回答往往流于表面,经不起深…

作者头像 李华
网站建设 2026/7/27 14:16:43

2026年AI大模型实战指南:小白转行程序员必备高薪秘籍!

2026年AI大模型产业将全面爆发,但许多学习者因陷入误区导致“学完无岗”。本文分析了常见误区,如将日常使用大模型等同于专业能力、盲目学习底层算法、知识滞后等,并提供了真实岗位薪资数据和避坑指南。文章强调企业需求与业余使用的区别&…

作者头像 李华
网站建设 2026/7/27 14:16:23

FunctionStomping:2023年最隐蔽的Shellcode注入技术详解

FunctionStomping:2023年最隐蔽的Shellcode注入技术详解 【免费下载链接】FunctionStomping Shellcode injection technique. Given as C header, standalone Rust program or library. 项目地址: https://gitcode.com/gh_mirrors/fu/FunctionStomping Funct…

作者头像 李华
网站建设 2026/7/27 14:16:20

计算机毕业设计之基于SpringBoot的建筑材料管理系统的设计与实现

在网络计算机快速发展的时代,信息管理系统已成为社会现代化发展中有着重要的作用。随着信息管理系统的不断增加,传统的人工管理易出错,且双方缺少信息关联和沟通。因此,建立一个依托互联网的建筑材料管理系统来建立一个交流和沟通的渠道势在必…

作者头像 李华
网站建设 2026/7/27 14:16:11

MOGAD的临床特征、诊断与治疗:一种独立的CNS炎性脱髓鞘疾病

简述: 本文系统阐述髓鞘少突胶质细胞糖蛋白免疫球蛋白G抗体相关疾病(MOGAD)作为独立疾病单元的分子基础与临床特征,分析其与多发性硬化及视神经脊髓炎谱系疾病的关键差异,介绍MOGAD在不同年龄人群中的多样化临床表现、…

作者头像 李华