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

阅读: 评论:0

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

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

目录

一、 背景简述¶

二、 环境准备

三、 数据预处理

四、 模型的选择&训练&调优

五、 模型部署


一、 背景简述¶

本文简单介绍一个工业领域的机器学习建模到生产环境部署的案例。涉及机器学习开发项目的以下几个步骤

  1. 问题定义
  2. 数据采集
  3. EDA(探索性数据分析)
  4. 数据准备
  5. 建模
  6. 部署和监控

二、 环境准备

用到的主要工具库和框架

PyCaret:开源的低代码机器学习库,可用于自动化机器学习工作流
FastAPI:快速高性能的Web框架
plotly:数据可视化工具库
numpy:高效的数据计算工具库
pandas:DataFrame的高效处理工具库
uvicorn:高效的ASGI服务器

# 如未安装,可以通过以下命令行进行安装
pip install pycaret
pip install fastapi
pip install plotly
pip install uvicorn

如果 pycaret 下载缓慢,或者无法安装,可以尝试以下命令行

pip install -i   pycaret

考虑到pycaret依赖的工具库可能和已经安装的工具库有版本的冲突,可以单独创建一个虚拟环境,安装所需的工具库pycaret等,再将虚拟环境作为核添加 至jupyter。可以通过以下步骤实现虚拟环境的创建和添加。

conda create --name yourenvname # 创建名为yourenvname的虚拟环境
conda activate yourenvname # 激活yourenvname虚拟环境
conda install python=3.6.2 # 安装python
pip install pycaret # 安装需要的工具包
pip install ipykernel ipython # 安装kernel
ipython kernel install --user --name yourenvname # 添加虚拟环境
jupyter kernelspec remove yourenvname # 删除虚拟环境(根据后续的需要执行)

安装并添加虚拟环境之后,重启jupyter,即可在【新建】菜单栏中看到新添加的虚拟环境。

# 导入所需的工具库
from pycaret.datasets import get_data
ssion import *
press as px
import numpy as np


三、 数据预处理

index = get_data('index')# 加载数据
# 如果导入数据出现 URLError, 可以首先执行以下, 再返回读取数据
# import ssl
# ssl._create_default_https_context = ssl._create_unverified_contextdata = get_data('diamond')# 绘制散点图,观察特征变量与目标变量之间的关系
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 = 'Diamon Price against Weight and Cut')
fig.show()# 查看目标变量price的分布
fig = px.histogram(data, x = ['Price'], template = 'plotly_dark', title = 'Histogram of Price')
fig.show()# 目标变量的分布右偏,可以考虑通过取对数使分布趋近正态分布
Temp = py()
Temp['log_price'] = np.log(data['Price'])fig = px.histogram(Temp, x = ['log_price'], template = 'plotly_dark', title = 'Histogram of Log Price')
fig.show()

四、 模型的选择&训练&调优

# 初始化
s = setup(data, target = 'Price', transform_target = True)# 对所有回归模型进行实验和评估
best = compare_models()# 查看模型的预估结果残差
plot_model(best, plot = 'residuals_interactive')#  查看特征的重要度
plot_model(best, plot = 'feature')

五、 模型部署

保存最佳模型结果

final_best = finalize_model(best)
save_model(final_best, 'diamond-pipline')

导入工具库

import pandas as pd
ssion import load_model, predict_model
from fastapi import FastAPI
import uvicorn

部署模型

# 构建app对象
app = FastAPI()# 加载模型
model = load_model('diamond-pipline')# 定义预估函数
@app.post('/predict')
def predict(carat_weight, cut, color, clarity, polish, symmetry, report):data = pd.DataFrame([[carat_weight, cut, color, clarity, polish, symmetry, report]])lumns = ['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 = 'main:app', host = '127.0.0.1', port = 8080, reload = True)    


调用API访问

import requestsdef get_predictions(carat_weight, cut, color, clarity, polish, symmetry, report):url = 'http//localhost:8000/predict?carat_weight={carat_weight}&cut={cut}&color={color}&clarity={clarity}&polish={polish}&symmetry={symmetry}&report={report}'.format(carat_weight = carat_weight, cut = cut, color = color, clarity = clarity, polish = polish, symmetry = symmetry, report = report)x = requests.post(url))get_predictions(1.1, 'Ideal', 'H', 'SI1', 'VG', 'EX', 'GIA')

本文发布于:2024-01-28 19:00:03,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17064396109568.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:建模   钻石   价格
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23