钻石价格预测的ML全流程!从模型构建调优道部署应用!⛵

PyCaret 3.0介绍 -- Python中的开源、低代码机器学习库 阅读详情

💡 作者:韩信子@ShowMeAI
📘 数据分析 ◉ 技能提升系列:http://www.showmeai.tech/tutorials/33
📘 AI 面试题库系列:http://www.showmeai.tech/tutorials/48
📘 本文地址:http://www.showmeai.tech/article-detail/302
📢 声明:版权所有,转载请联系平台与作者并注明出处
📢 收藏ShowMeAI查看更多精彩内容

我们经常会谈到工业界端到端的机器学习建模,所谓端到端,是指的把整个过程构建在一个完整的流程(比如pipeline管道)中,包括数据侧的处理、模型建模调优,及模型部署应用等环节,如我们之前所说,完整的机器学习开发流程如下:

在本篇内容中,ShowMeAI将给大家讲解到下述内容:

  • 使用 PyCaret 构建端到端机器学习管道
  • ML 模型部署 & FastAPI 开发实时预测

💡 工具库

📌 PyCaret

PyCaret 是一个开源的低代码机器学习库,内置Python端到端模型管理工具,被用于自动化机器学习工作流。因其易用性、简单性以及快速高效地构建和部署端到端 ML 原型的能力而广受欢迎。

更多有关 PyCaret 的信息,可以在官方 📘 GitHub 查看。

我们先通过 pip 安装 pycaret 工具库:

pip install pycaret

📌 FastAPI

FastAPI 是一个快速(高性能)的Web框架,主要特点是:

  • 快速 :非常高的性能,是目前可用的最快的 Python 框架之一 。
  • 快速编码 :将开发速度提高2到3倍。
  • 简单 :易于学习和使用。

更多有关 FastAPI 的信息,请查看官方 📘 GitHub 。

我们也通过 pip 安装 fastapi:

pip install fastapi

💡 业务背景

本篇内容中涉及的案例来自达顿商学院(案例研究发表在 📘 哈佛商学院),案例中收集了 6000 颗钻石的数据,包括它们的价格和切工、颜色、形状等属性。

🏆 实战数据集下载(百度网盘):公众号『ShowMeAI研究中心』回复『实战』,或者点击 这里 获取本文 [13] 钻石价格预测的ML全流程!从模型构建调优道部署应用! 『** pycaret-master 数据集**』

⭐ ShowMeAI官方GitHub:https://github.com/ShowMeAI-Hub

💡 数据

我们在本篇内容中,使用钻石的克拉重量、切工、颜色和其他特征等属性来预测钻石的价格。 数据集可从 📘 此处下载。

# 加载数据
from pycaret.datasets import get_data
data = get_data('diamond')

💡 探索性数据分析

我们先做一些快速数据分析和可视化来评估数据字段属性(重量、切工、颜色、净度等)与目标变量/标签Price的关系。

# 绘制carat_weight和Price的散点图
import plotly.express as px
fig = px.scatter(x=data['Carat Weight'], y=data['Price'], facet_col = data['Cut'], opacity = 0.25, template = 'plotly_dark', trendline='ols', trendline_color_override = 'red', title = 'SARAH GETS A DIAMOND - A CASE STUDY')
fig.show()

我们绘制并了解一下目标变量Price的分布。

# 绘制灰度图查看分布
fig = px.histogram(data, x=["Price"], template = 'plotly_dark', title = 'Histogram of Price')
fig.show()

可以从上图看出Price是明显右偏分布的,对于有偏的分布,我们可以做一些数据变换以调整数据分布,比如对数变换,下面我们先用对数变换对Price进行处理。

import numpy as np

# 构建一份数据备份
data_copy = data.copy()

# log对数变换
data_copy['Log_Price'] = np.log(data['Price'])

# 绘制灰度图查看分布
fig = px.histogram(data_copy, x=["Log_Price"], title = 'Histgram of Log Price', template = 'plotly_dark')

fig.show()

大家可以明显看到,经过log变换后的数据分布,更加接近正态分布。

💡 数据准备

我们先导入PyCaret工具库,并做基本的设置。

# 初始化
from pycaret.regression import *
s = setup(data, target = 'Price', transform_target = True)

注意上面的 transform_target = True,PyCaret会对Price字段使用 box-cox 变换,这个变换与对数转换是类似的,也能对有偏分布进行校正。

💡 模型选择&训练&调优

数据准备完毕后,我们使用模型对其进行训练,pycaret中最简单的方式是使用 compare_models函数,它使用交叉验证来训练和评估模型库中可用的模型,它的返回值是具有平均交叉验证分数的评分网格。 这个过程只需要下列简单代码:

# 对所有可用模型进行实验和评估
best = compare_models()

上图是最终的实验结果,我们可以看到,对所有模型使用平均绝对误差 (MAE) 评估,CatBoost Regressor模型有最好的效果。

# 训练模型的预估结果残差
plot_model(best, plot = 'residuals_interactive')
# 输出特征重要度
plot_model(best, plot = 'feature')

💡 模型保存

我们把最优模型保存为 pickle 文件。

# 最佳模型
final_best = finalize_model(best)

# 存储模型
save_model(final_best, 'diamond-pipeline')

💡 模型部署

下面我们演示使用FastAPI框架快速构建模型服务,并提供实时预估的能力。

# 导入工具库
import pandas as pd
from pycaret.regression import load_model, predict_model
from fastapi import FastAPI
import uvicorn

# 构建app对象
app = FastAPI()

# 加载模型
model = load_model('diamond-pipeline')

# 定义预估函数
@app.post('/predict')
def predict(carat_weight, cut, color, clarity, polish, symmetry, report):
    data = pd.DataFrame([[carat_weight, cut, color, clarity, polish, symmetry, report]])
    data.columns = ['Carat Weight', 'Cut', 'Color', 'Clarity', 'Polish', 'Symmetry', 'Report']

    predictions = predict_model(model, data=data) 
    return {'prediction': int(predictions['Label'][0])}

if __name__ == '__main__':
    uvicorn.run(app, host='127.0.0.1', port=8000)

接下来可以通过终端命令行运行以下命令来运行这个服务,大家确保运行命令的路径和上述python脚本和以及模型存储pickle文件在同一位置。

uvicorn main:app --reload

命令执行完后,我们就在 localhost 上初始化 API 服务了,大家在浏览器上输入 http://localhost:8000/docs ,会显示如下内容:

点击页面中绿色的 POST 按钮,它将打开一个像这样的表单:

点击右上角的『Try it out』 ,在表单填入一些值,然后点击『Execute』,我们会看到以下响应:

我们可以使用 python 的 requests 库测试一下,远程发起请求是否可以得到结果,如下图所示:

大家可以看看,我们通过传参的方式对模型服务发起请求,并得到返回结果。

参考资料

PyCaret解决二分类任务教程示例 阅读详情

相关推荐

PyCaret初学者指南

PyCaret初学者指南

python收藏家的博客 1374

工具系列:PyCaret介绍_多分类代码示例

这个函数在PyCaret中初始化实验,并根据传入函数的所有参数创建转换流水线。在执行任何其他函数之前,必须调用设置函数。data和target。所有其他参数都是可选的,并用于配置数据预处理流水线。# 设置数据集和目标变量# data: 数据集# target: 目标变量,即要预测的变量# session_id: 用于重现实验结果的随机种子要访问由设置函数创建的所有变量,例如转换后的数据集、随机状态等,您可以使用get_config方法。# 获取所有可用的配置信息 get_config()

数智笔记 3656

使用Python进行钻石价格分析

因此,这就是如何使用Python进行钻石价格分析和预测的任务。根据钻石价格分析,我们可以说优质钻石的价格和尺寸都高于其他类型的钻石。

python收藏家的博客 1649

低代码机器学习库--Pycaret的介绍和安装

PyCaret 是 Python 中的一个开源、低代码机器学习库,可自动执行机器学习工作流。它是一种端到端的机器学习和模型管理工具,可成倍地加快实验周期并提高您的工作效率。与其他开源机器学习库相比,PyCaret 是一个替代的低代码库,可用于仅用几行代码替换数百行代码。这使得实验以指数方式快速和高效。

pumpkin96的博客 2816

【机器学习】基于KAN的王者荣耀账号价格预测

本文通过分析王者荣耀账号交易数据,构建并优化了多个机器学习模型,特别是引入了先进的知识增强网络(KAN)模型,以提高账号价格预测的准确性。同时,开发了基于PyQt5的界面,使得预测过程更加直观和便捷。通过本文你可以学习到,如何搭建一个回归模型,预测、保存模型、结果分析。

Deeeeeeeeepl的博客 1605

【机器学习】基于LightGBM的英雄联盟钻石排位数据集的训练、预测与简单可视化

目录一、学习知识点概要二、学习内容代码1.导入库2.对离散变量进行编码3.利用 XGBoost 进行训练与测试4.利用 XGBoost 进行特征选择5.模型调参三、学习问题与解答四、学习思考与总结 一、学习知识点概要 首先,点击下载数据文件 今天学习的是基于天气数据集的XGBoost分类实战。 XGBoost并不是一种模型,而是一个可供用户轻松解决分类、回归或排序问题的软件包。它内部实现了梯度提升树(GBDT)模型,并对模型中的算法进行了诸多优化,在取得高精度的同时又保持了极快的速度。 二、学习内容 代码

weixin_46249565的博客 1945

【案例共创】基于机器学习的钻石电商定价策略优化:数据驱动的精准价格预测

本案例通过数据科学手段,将机器学习技术与业务目标紧密结合。

华为云官方博客 1167

机器学习-17-分布式梯度提升库XGBoost在钻石数据集上的应用(实战)

基于钻石数据集介绍XGBoost的使用方式

qq_20466211的博客 1208

机器学习应用篇(七)——基于LightGBM的分类预测

机器学习应用篇(七)——基于LightGBM的分类预测 文章目录机器学习应用篇(七)——基于LightGBM的分类预测一、Introduction1 LightGBM的优点2 LightGBM的缺点二、实现过程1 数据集介绍2 Coding三、KeysLightGBM的重要参数基本参数调整针对训练速度的参数调整针对准确率的参数调整针对过拟合的参数调整 一、Introduction LightGBM是扩展机器学习系统。是一款基于GBDT(梯度提升决策树)算法的分布梯度提升框架。其设计思路主要集中在减少数据对内

羊羊的博客 7740

Diamonds-everywhere:通过不同的机器学习模型,根据钻石的特征预测钻石价格。 使用Hyperopt和Pycaret

钻石无处不在 介绍 在世界上,钻石因其美观和特性而成为人们最垂涎的对象。 他们昂贵的采购和稀缺性使钻石产品在市场上具有很高的价值。 但是,可以根据钻石的特性计算出该值吗? 在这个项目中,我们打算使用监督学习来创建预测模型,该模型使用一系列钻石变量来预测其他钻石的市场价值。 过程 打扫 清理过程首先检查数据集。 发现存在分类变量和数字变量的地方。 还观察到没有空值。 消除了无用的列,并对分类变量进行了编码,我们选择按序数形式对它们进行分类,因为存在分类顺序,因此考虑到顺序,将分类值替换为数值。 造型 使用的模型是线性回归,使用HyperOpt选择超参数的随机森林Reggresor,以及由Pycaret选择的第三个模型,最终将成为LightGradientBoostingMachine。 使用的度量是“ mean_square_error”。 数据 该项目使用的数据数据是从以下获得的

单细胞分析避坑指南:SCTransform和Harmony参数设置详解

本文深入解析了单细胞分析中SCTransform标准化与Harmony批次校正的关键参数设置。针对10x Genomics等数据,详细探讨了如何通过调整`vars.to.regress`、`theta`等核心参数,在有效去除技术噪音的同时,避免过度校正以保留关键的生物学差异,从而提升分析结果的可靠性与可解释性。

weixin_29053073的博客 608

PostgresML实战:用SQL在数据库内完成机器学习全流程

SQL与机器学习的融合正从概念走向生产落地——In-Database ML(库内机器学习)通过将模型训练、特征工程和预测推理下沉至数据库引擎,从根本上消除数据移动开销,提升MLOps一致性与实时性。其核心原理是利用数据库原生查询优化器执行特征计算,并依托扩展机制集成XGBoost、Random Forest等算法库,实现ACID事务保障下的模型全生命周期管理。技术价值体现在低延迟预测、高并发吞吐与极简运维,广泛适用于实时风控、个性化推荐、BI增强分析等场景。本文以PostgresML为典型代表,详解如何用纯

weixin_30580341的博客 787

SpringBoot实战(二十八)集成 Collabora Online 实现在线编辑

SpringBoot实战(二十八)集成 Collabora Online 实现在线编辑

ACGkaka的博客 6984

钻石价格预测的建模与部署

机器学习的模型训练,部署和调用

JasonH2021的博客 665

STorM BGC V1.31硬件+SimpleBGC固件:从零搭建三轴云台开发环境(Keil+JLink避坑指南)

本文详细介绍了如何从零搭建STorM BGC V1.31硬件+SimpleBGC固件的三轴云台开发环境,涵盖硬件连接、Keil+JLink开发工具配置、固件编译与烧录等关键步骤,并提供了常见问题的解决方案和调试技巧,帮助开发者快速上手三轴云台开发。

weixin_28693683的博客 380

2026年OPPO嵌入式岗位面试题带详细答案

本文总结了OPPO嵌入式岗位面试的核心考点,涵盖硬件驱动、系统启动、Linux内核开发等7大模块共34道典型题目。重点解析了SPI通信协议、中断处理、U-Boot启动流程、Linux驱动开发等关键技术,突出硬件调试与工程实践能力考核。题目设置贴合实际岗位需求,适合校招与社招驱动开发岗位应聘者系统复习,帮助掌握嵌入式开发的核心知识与面试要点。

Open 489

计算机毕业设计之钻石成品数据分析与价格预测模型研究--lw

本研究基于大数据技术构建钻石价格预测系统,采用Spark、Django和Python技术框架实现数据分析与可视化功能。系统包含用户管理、数据管理、价格预测等核心模块,通过机器学习算法建立高精度预测模型。数据可视化面板集成克拉统计、颜色分析、价格趋势等交互式图表,支持多维度的钻石数据分析。研究成果表明,该系统能有效提升钻石定价的科学性和效率,为行业智能化转型提供技术支撑。未来可进一步优化算法并拓展数据源以增强模型适应性。

2401_85546142的博客 474

智能车图像处理0-图像处理整体框架思路

1.总体框架如上所示,具体代码请查看后续文章。2.因为参与竞赛时间是大二,所以在编程中有许多不规范的地方(如变量的命名),大家见谅。3.原创文章,请勿侵权=-=

taiyuezyh的博客 1万+

用LightGBM预测《英雄联盟》胜负:一份从数据清洗到模型调优的完整实战笔记

本文详细介绍了如何利用LightGBM机器学习模型预测《英雄联盟》比赛胜负,从数据清洗、特征工程到模型调优的全流程。通过分析韩服高分段对局数据,构建了包括经济差异、地图控制等关键特征,最终实现准确率76.2%的预测模型,并揭示了游戏机制中的关键胜负因素。

weixin_30367873的博客 430

YOLOv11【第六章:模型压缩与极致优化篇·第4节】Lamp 剪枝算法:无需超参的自动化剪枝策略!

🏆 本文收录于专栏 《YOLOv11实战:从入门到深度优化》。本专栏围绕 YOLOv11 的改进、训练、部署与工程优化 展开,系统梳理并复现当前主流的 YOLOv11 实战案例与优化方案,内容目前已覆盖 分类、检测、分割、追踪、关键点、OBB 检测 等多个方向。

**My Coding Family** 1211

【雷达】一维和二维自适应波束形成(DBF))DBF附matlab代码

1 简介 数字波束形成技术是天线波束形成原理与数字信号处理技术相结合的产物,其广泛应用于阵列信号处理领域.由于电磁工作环境的恶化和大量射频干扰的存在,在极低的信干噪比(SINR)条件下进行目标检测和信息提取十分困难.对于阵列系统,往往采用自适应数字波束形成(ADBF)技术,来抑制强干扰和方向性干扰对有用信号的影响.介绍了数字波束形成器的基本原理及其DSP的实现结构.​ 2 完整代码 clc;clear all;close all;%%%%%%%%%%%%%%%%%一维DBF%%%%%%%%%%%%%

qq_59747472的博客 7266

数据分析与预测课程设计

课程编号:400802020 课程名称:数据分析与预测课程设计 考试形式:大作业设计答辩(非笔试) 一、设计考核说明: 运用所学的机器学习知识,基于Python或R或C编程环境,根据下面给出的要求,选择相关分析设计内容,完成一个数据分析与预测案例实现,最终提交设计文档...

sereasuesue的博客 4303

当启动容器的时候提示:exec format error?如何解决问题

Docker容器出现"exec format error"的主要原因是架构不兼容(如ARM设备运行x86镜像)。解决方案包括:1)匹配镜像与宿主机架构;2)构建时指定平台;3)安装QEMU模拟器;4)修复文件权限和格式;5)验证基础镜像兼容性。排查流程应从检查架构匹配开始,逐步验证权限、解释器和换行符等问题。建议优先使用多架构镜像,构建时明确指定平台,并使用buildx工具生成多平台镜像。调试时可进入容器手动验证文件格式和兼容性。

weixin_39291964的博客 2719

Python使用“决策树”算法解决预测钻石成本的问题

待测试的超参数params = [params是一个列表,其中每个元素是一个字典,包含了决策树回归模型的超参数组合,包括criterion(分裂准则)和max_depth(树的最大深度)。

Eric005的博客 1473

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

上一篇: 100+开箱即用的AI工具箱;程序员150岁长寿指南;『地理空间数据科学』课程资料;Graphic数据可视化图表库;前沿论文 | ShowMeAI资讯日报
下一篇: 数据专家最常使用的 10 大类 Pandas 函数 ⛵
ShowMeAI
博客等级 码龄5年 6514粉丝 672原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ShowMeAI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值