数据科学利器 PyCaret,几行代码搞定从数据处理到模型部署

本文主要是介绍数据科学利器 PyCaret,几行代码搞定从数据处理到模型部署,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Python数据挖掘与文本分析&Stata应用能力提升与实证前沿云特训

学习数据科学很久了,从数据探索、数据预处理、数据模型搭建和部署这些过程一直有些重复性的工作比较浪费时间,尤其当你有个新的想法想要快速尝试下效果的时候,效率很低。

东哥最近发现一个开源的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 相关的数据准备,比如样本的划分数据预处理缺失值处理独热编码归一化特征工程特征选择等等。

比如要用归一化,那么令normalizeTure就好了,其它的同理。

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_modelsstack_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/

https://mp.weixin.qq.com/s/5DMJn85ME8LqUCewc5OWBg

往期文章读完本文你就了解什么是文本分析综述:文本分析在市场营销研究中的应用
从记者的Twitter关注看他们稿件的党派倾向?Pandas时间序列数据操作
readability: 英文文本数据可读性库Matplotlib可视化教程~Matplotlib中的plt和ax都是啥?70G上市公司定期报告数据集
5个小问题带你理解列表推导式
文本数据清洗之正则表达式
Python网络爬虫与文本数据分析
如何批量下载上海证券交易所上市公司年报
Numpy和Pandas性能改善的方法和技巧
漂亮~pandas可以无缝衔接Bokeh
YelpDaset: 酒店管理类数据集10+G
先有收获,再点在看!

这篇关于数据科学利器 PyCaret,几行代码搞定从数据处理到模型部署的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/428194

相关文章

闲置电脑也能活出第二春?鲁大师AiNAS让你动动手指就能轻松部署

对于大多数人而言,在这个“数据爆炸”的时代或多或少都遇到过存储告急的情况,这使得“存储焦虑”不再是个别现象,而将会是随着软件的不断臃肿而越来越普遍的情况。从不少手机厂商都开始将存储上限提升至1TB可以见得,我们似乎正处在互联网信息飞速增长的阶段,对于存储的需求也将会不断扩大。对于苹果用户而言,这一问题愈发严峻,毕竟512GB和1TB版本的iPhone可不是人人都消费得起的,因此成熟的外置存储方案开

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

异构存储(冷热数据分离)

异构存储主要解决不同的数据,存储在不同类型的硬盘中,达到最佳性能的问题。 异构存储Shell操作 (1)查看当前有哪些存储策略可以用 [lytfly@hadoop102 hadoop-3.1.4]$ hdfs storagepolicies -listPolicies (2)为指定路径(数据存储目录)设置指定的存储策略 hdfs storagepolicies -setStoragePo

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

MySQL数据库宕机,启动不起来,教你一招搞定!

作者介绍:老苏,10余年DBA工作运维经验,擅长Oracle、MySQL、PG、Mongodb数据库运维(如安装迁移,性能优化、故障应急处理等)公众号:老苏畅谈运维欢迎关注本人公众号,更多精彩与您分享。 MySQL数据库宕机,数据页损坏问题,启动不起来,该如何排查和解决,本文将为你说明具体的排查过程。 查看MySQL error日志 查看 MySQL error日志,排查哪个表(表空间

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推