太赞了!分享一个数据科学利器 PyCaret,几行代码搞定从数据处理到模型部署
作者:xiaoyu,数据爱好者
Python数据科学出品
学习数据科学很久了,从数据探索、数据预处理、数据模型搭建和部署这些过程一直有些重复性的工作比较浪费时间,尤其当你有个新的想法想要快速尝试下效果的时候,效率很低。
东哥最近发现一个开源的Python机器学习库,名字叫PyCaret
,这个轮子正好可以为了解决我刚才所描述的困扰,它的特点是以low-code
低代码量来快速解决从数据预处理到模型部署的整个流程。
用了一下感觉确实有点香,因此也和大家分享一下。
PyCaret是什么?
PyCaret
是一个将我们常用到的机器学习库进行封装了的轮子。
常用的都有啥呢?
比如pandas
,numpy
做数据处理的,matplotlib
,seaborn
数据可视化的,sklearn
,xgboost
,catboost
,lightgbm
等各种模型的,总共有30个。在安装PyCaret
的时候会附带着一起都安装上。
封装这么多库干什么用?
PyCaret依赖了这么多的神库肯定是要搞事情啊。没错,机器学习中的一些操作步骤都可在PyCaret
自动开发的pipeline
中进行复现。在 Pycaret 中所执行的所有操作均按顺序存储在 Pipeline 中,该 Pipeline 针对模型部署进行了完全配置。
PyCaret就像是把所有都安排好了一样,我们按照它定义的函数使用就可以了。不管是填充缺失值、转换类别数据、执行特征工程设计,还是调参,Pycaret 都能够自动执行。 所以才可以实现用几行代码搞定从预处理到模型部署的整个流程。
而且pipeline
可以保存为二进制文件格式,支持在不同环境中进行迁移。
PyCaret支持的模型算法
PyCaret
支持6个模块,有监督
和无监督
模型的训练和部署,分别有分类、回归、聚类、异常检测、自然语言处理和关联规则挖掘。
PyCaret安装
pip install pycaret
老样子,命令行pip install
皆可安装。
为了防止安装的这些依赖可能与之前你已安装过的发生冲突,建议可以创建个Python的虚拟环境安装PyCaret以减少不必要的麻烦,比如用python3 virtualenv
或者conda
。就拿conda
为例吧。
#创建一个新的虚拟环境
conda create --name yourenvname python=3.7
#激活
conda activate yourenvname
#安装
pip install pycaret
如果不好使也可以尝试从源安装。
pip install C:/path_to_download/pycaret-version.tar.gz
PyCaret如何使用?
像这种数据建模类的工作会涉及很多交互式的操作,所以东哥首推在Jupyter notebook
中运行代码。
PyCaret库的函数有五个大类,初始化、模型训练、模型集成、模型分析与模型部署,基本上覆盖了我们正常建模的顺序,只不过预处理都在初始化中完成了。具体使用方法见后面实例。
一、初始化
PyCaret初始化包括了两部分内容,一、获取数据;二、建立环境。
1. 获取数据
PyCaret自带了很多数据集,样本几万条的,特征几百个的,对于我们练习绝对是够用了。比如这样:
from pycaret.datasets import get_data
data = get_data('juice')
2. 建立环境
这一步是必须的。首先,我们要选择使用哪个模块,分类、回归、聚类
还是其他的。比如我们要用classification
分类模型。
from pycaret.datasets import get_data
diabetes = get_data('diabetes')
# 初始化
from pycaret.classification import *
clf1 = setup(data = diabetes, target = 'Class variable')
上面setup
函数就建立了基础环境,其中参数约束了数据集和目标变量。
setup
参数除了上面这两个以外,还有N多个参数可以控制。所有预处理的步骤都会应用至 setup()
中,PyCaret 拥有 20 余项功能可运用于 ML 相关的数据准备,比如样本的划分
、数据预处理
,缺失值处理
、独热编码
、归一化
、特征工程
、特征选择
等等。
比如要用归一化,那么令normalize
为Ture
就好了,其它的同理。
clf1 = setup(data = pokemon, target = 'Legendary', normalize = True)
如果还要用其他的,在setup里面加就好了,至于处理的顺序不用我们管,pipeline已经自动搞定了。
另外,PyCaret 的一大优点是: Pipeline 可保存成二进制,轻松地在各环境之间相互迁移,比如大规模运行或是轻松部署到生产环境中。
二、模型训练
模型训练包括三个部分,模型比较,模型创建,模型调优。
1. 模型比较
这是模型训练的第一步。compare_models
函数会训练模型库中的所有模型,并使用 k 折交叉验证(默认 k=10)来比较常见的评估指标。所使用的评估指标如下所示:
分类模块:
Accuracy
,AUC
,Recall
,Precision
,F1
,Kappa
回归模块:
MAE
,MSE
,RMSE
,R2
,RMSLE
,MAPE
下面是模型比较函数的使用,只需要这么一行代码!
# 比较所有模型
compare_models()
来看一下结果,直接给出所有模型跑出的结果,直观地对比。
2. 模型创建
当我们比较了各模型的结果后,知道了哪个模型最适合,这时只要在创建函数create_model
中传入一个模型参数就行,同样一行代码搞定。
# 创建逻辑回归模型
lr = create_model('lr')
PyCaret 有 60 多个开源即用型算法,每个模型都有对应的缩写(可以查表),比如上面逻辑回归直接写上lr
就可以完成。
变量lr
存储一个由create_model
函数返回的训练模型对象,可以通过在变量后使用标点.
来访问训练对象的原始属性。
3. 模型调优
同样的,在模型调优tune_model
函数中传入模型lr
参数,PyCaret将自动调优。
# 调节 LR 模型
tuned_lr = tune_model('lr')
三、模型集成
1. 集成模型
模型集成函数ensemble_model
可以直接调用生成的模型对象,然后做集成处理。默认使用Bagging
方法用于模型集成,用户也可函数中的method
参数将其转换为Boosting
。
# 创建一个决策树模型
dt = create_model('dt')
dt_bagged = ensemble_model(dt)
除此外,PyCaret还提供了blend_models
和 stack_models
功能,来集成多个训练好的模型。
2. blend模型
# blend_models 混合特殊的模型
blender = blend_models(estimator_list = [dt, catboost, lightgbm])
3. stack模型
# 创建单个模型,用于stacking
ridge = create_model('ridge')
lda = create_model('lda')
gbc = create_model('gbc')
xgboost = create_model('xgboost')
# stacking 模型
stacker = stack_models(estimator_list = [ridge,lda,gbc], meta_model = xgboost)
四、模型分析
模型分析主要可以做两个事情:一、模型绘制;二、模型解释。
1. 模型绘制
我们需要分析什么模型指标,只要传入函数中即可,比如对adaboost
模型分析AUC
指标。
# 创建逻辑回归模型
adaboost = create_model('adaboost')
plot_model(adaboost, plot = 'auc') # AUC plot
plot_model(adaboost, plot = 'boundary') # Decision Boundary
plot_model(adaboost, plot = 'pr') # Precision Recall Curve
plot_model(adaboost, plot = 'vc') # Validation Curve
如果你不想单独绘制所有这些可视化,那么PyCaret库有另一个惊人的功能evaluate_model
。在此功能中,只需要传递模型对象,PyCaret将创建一个交互式窗口,供你·以所有可能的方式查看和分析模型:
2. 模型解释
在大多数机器学习项目中,解释复杂模型非常重要。通过分析模型认为重要的内容,有助于模型调优。在PyCaret中,此步骤非常简单,只需编写interpret_model
即可获取Shapley
值。
# 创建一个模型
xgboost = create_model('xgboost')
interpret_model(xgboost) # summary plot
interpret_model(xgboost, plot = 'correlation') # correlation plot
测试数据集上特定数据点的解释可以通过reason
图来评估。如下图所示:在测试数据集上检查首个实例。
interpret_model(xgboost, plot = 'reason', observation = 0)
五、模型部署
模型调优后要将模型在测试集上进行测试,使用predict_model
函数。
1. 模型预测
# 创建模型
rf = create_model('rf') # 预测测试集
rf_holdout_pred = predict_model(rf)
以上是对模型测试集进行的预测,如果对于未见过的新数据预测,PyCaret
提供一个迭代的预测结果,在predict_model
函数指定data
,像下面这样。
2. 模型完成
最后确认模型finalize_model
才能进行部署。
# finalize a model
final_rf = finalize_model(rf)
3. 模型部署
该功能将pipeline
和经过训练的模型保存为最终用户应用程序可以作为二进制pickle
文件使用。或者,可以使用PyCaret
将模型部署在云上。在云上部署模型就像编写deploy_model
一样简单。
比如对于AWS用户来说,在将模型部署到AWS S3('aws')
之前,必须使用命令行界面配置环境变量。要配置AWS环境变量,请在python命令行中输入aws configure
。需要以下信息,可以使用亚马逊控制台帐户的身份和访问管理(IAM)门户生成。
- AWS访问密钥ID
- AWS访问密钥
- 默认区域名称(可以在您的AWS控制台的“全局设置”下看到)
- 默认输出格式(必须留空)
# 创建模型
lr = create_model('lr')
# 最终确定模型
final_lr = finalize_model(lr)
# 部署模型
deploy_model(final_lr, model_name = 'lr_aws', platform = 'aws', authentication = { 'bucket' : 'pycaret-test' })
用户也能够以二进制文件的格式保存整个实验,包括所有中间输出。
# 创建模型
adaboost = create_model('ada')
# 二进制保存模型
save_model(adaboost, model_name = 'ada_for_deployment')
以上就是PyCaret
的介绍和使用方法,具体教程也可以参考:
https://pycaret.org/guide/
老铁,要不点个赞再走可好?么么哒
关注我的原创微信公众号 Python数据科学,专注于写基于Python的数据算法、机器学习、深度学习硬核干货。
保证让你看完有所收获,不信你打我。后台回复『干货』送你Python入门、机器学习、数据挖掘等丰富项目资源。
作者简介
作者:大家好,我是东仔。原为机械专业,凭借自己的努力成功转行数据分析,目前担任某大银行风控建模职位,创立『Python数据科学』公众号,拥有近10w粉丝,文章涵盖爬虫,数据分析、机器学习等大量干货和实战项目讲解,提供海量学习资源,期待你的关注,和我一起学习。 转载说明:未获得授权,禁止转载。
太赞了!分享一个数据科学利器 PyCaret,几行代码搞定从数据处理到模型部署相关推荐
- python pdf转word 表格_太赞了!Pdf转Word,我用Python 轻松搞定表格和水印!
原标题:太赞了!Pdf转Word,我用Python 轻松搞定表格和水印! 继上一次为大家推出了将pdf转word之后(卧槽!Pdf转Word用Python轻松搞定!),引起了大家的热烈讨论,我也总结了 ...
- 万万想不到 10行代码搞定一个决策树
01决策树模拟实验 文章目录 01决策树模拟实验 要求 决策树简单介绍 搭建环境 产生数据集 划分训练集和测试集 生成决策树 Cross-Validation法 可视化决策树 10行代码搞定决策树 要 ...
- python修改文件名称唯美_5行代码搞定14种常见图的python可视化库,还自带16种优美主题,真是太喜欢了...
原创:小dull鸟 python数据分析之禅 原文链接: 5行代码搞定14种常见图的python可视化库,还自带16种优美主题,真是太喜欢了mp.weixin.qq.com 有时候我们做数据可视化并 ...
- 隔离太无聊?每天一个数据科学项目,数据集都准备好了!
来源:大数据文摘 本文约2300字,建议阅读5分钟 本文提供了14个可以利用业余时间完成的数据科学项目清单. 首先,我想向所有的护士,医生,超市员工,公共管理人员以及其他冒着生命危险为我们服务的人致敬 ...
- 200行代码搞定一个购物网站+电影站+APP
以前有一个朋友问我,说想做一个购物网站 ,电影站 ,需要APP 形式提供 . 问我一个星期能不能搞定,听了他的奇葩需求后,有点被耍的感觉,在普通人眼里 一个程序可能就是半天就做出来的东西. 后来仔细想 ...
- 微信/易信公共平台开发(一):开发了一个简单易用的PHP类(提供源码),十几行代码搞定一个公众号
这两天学习了一下微信公共平台和易信公共平台的开发 (易信与微信协议是基本一样的)(PS:没听说过易信?你out了?) 公共平台开发原理这里就不讲了,如果是初次接触的同学,建议先看 David_Tang ...
- python 获取文件名称唯美_5行代码搞定14种常见图的python可视化库,还自带16种优美主题,真是太喜欢了...
原创:小dull鸟 python数据分析之禅 原文链接: 有时候我们做数据可视化并不需要特别复杂的功能,仅仅是想把简单的数据用图形展示出来 今天就给大家介绍一种非常适合新手的python可视化库--p ...
- java定时器每一分钟执行一次_2行代码搞定一个定时器
如何使用? 用法 1.需要定时执行的方法上加上@Scheduled注解,这个注解中可以指定定时执行的规则,稍后详细介绍. 2.Spring容器中使用@EnableScheduling开启定时任务的执行 ...
- python开发一个web项目得需要多少行代码_用Python写个迷你出门问问|10几行代码搞定...
这是菜鸟学Python的第71篇原创文章 上一篇讲了JSON文件的用法,小伙伴们感觉好像写的很不过瘾,后台有好几个小伙伴问我能不能再写一篇,其中还有两个小伙伴给我留言,问我什么是Web Api,好今天 ...
- 干货分享-刷票如此简单,一句js代码搞定
1.先看效果图 注意倒数第二个选项自动从97票刷到100多票哦- 2.代码就一句 setInterval(function(){$("#vote_5").click()},1000 ...
最新文章
- 农民工上网求职事半功倍
- 从四点来探索监控设备系统的组成
- wuhan2020开源项目协作流程发布 征集专家人士
- 在操作系统理论中,什么是饿死
- 《Redis官方文档》Redis调试指南
- 下岗职工_下岗后我如何获得多位软件工程师的面试
- 快速排序quicksort算法细节优化(一次申请内存/无额外内存排序)
- 12-1。。。面试的一些体会吧
- Spring源码追踪3——AOP机制
- mongo go 查询指定字段_使用PyMongo查询MongoDB数据库!
- makefile从无到有
- 结合CRT与欧拉定理高阶幂求余
- Linux文件|菜鸟教程
- crash report for adobe photoshop cc 2019
- iOS小技能:提取数字(文本框对粘贴内容进行手机号码提取)
- C#数字黑洞之一(水仙花数黑洞153)
- 解决ImportError: /lib64/libm.so.6: version `GLIBC_2.23‘ not found (required by /root/anaconda3/lib/pyt
- android qq授权管理软件,android QQ第三方授权登录接入流程
- 增值电信业务经营许可证办理续期流程
- 行列式、逆矩阵、列空间和零空间(3Blue1Brown学习笔记)
热门文章
- 【论文阅读】A Memory-Efficient Deterministic Finite Automaton-Based Bit-Split String Matching Scheme
- STM32入门学习 第二天
- mysql分区表检验,MySQL分区表管理
- 基于5片FPGA处理的PCIE光纤传输硬件加速卡
- python蒙特卡洛求定积分_蒙特卡洛定积分(一)
- html中header怎么设置,怎么在html中设置header
- 触动精灵 获取外网IP
- python读取word页眉_python 使用win32com实现对word文档批量替换页眉页脚
- [总结] 上海看房体验有感
- 解决许可证的相关问题