Datawhale干货

编译:张峰,Datawhale成员

寄语:PyCaret,是一款 Python中的开源低代码(low-code)机器学习库,支持在「低代码」环境中训练和部署有监督以及无监督的机器学习模型,提升机器学习实验的效率。

本文对PyCaret低代码库进行了简单介绍,并对其操作方法进行了详细的解读。现在,让我们一起来领略下:如何用仅仅几行代码搞定一个机器学习模型吧。

首发 PyCaret 1.0.0

我们很高兴能宣布PyCaret,这是一个使用Python的开源机器学习库,用于在Windows上训练和部署有监督和无监督的机器学习模型低码环境。通过PyCaret,您可以在选择笔记本电脑环境后的几秒钟内,从准备数据到部署模型。

与其他开源机器学习库相比,PyCaret是一个备用的低代码库,可用于仅用很少的单词替换数百行代码。这使得实验快速而有效地成指数增长。PyCaret本质上是Python的包装器,它围绕着多个机器学习库和框架,例如scikit-learn,XGBoost,Microsoft LightGBM,spaCy等。

PyCaret简单易用。在PyCaret中执行的所有操作都按顺序存储在完全协调部署的管道中,无论是估算缺失值、转换分类数据、进行特征工程亦或是进行超参数调整,PyCaret都能自动执行所有操作。要了解有关PyCaret的更多信息,请观看此1分钟的视频。

PyCaret入门

可以安装PyCaret的第一个稳定版本(PyCaret1.0.0)。使用命令行(command line)界面或笔记本(notebook)环境,运行下面的代码单元以安装PyCaret。

pip install pycaret
如果您使用的是Azure笔记本或Google Colab,请运行以下代码单元以安装PyCaret。
!pip install pycaret

当您安装PyCaret时,将自动安装所有依赖项。完整依赖项列表参照下方链接:

https://github.com/pycaret/pycaret/blob/master/requirements.txt

没有比这更容易????,现在来直观感受下PyCaret的强大。

分步教程????

1. 获取数据

在本次循序渐进的教程中,我们将使用“糖尿病”数据集,目标是根据血压,胰岛素水平,年龄等多种因素来预测患者结果。直接从存储库导入数据集的最简单方法是使用pycaret.datasets模块中的get_data函数。

PyCaret的github仓库:https://github.com/pycaret/pycaret

from pycaret.datasets import get_data
diabetes = get_data('diabetes')

????特别提: PyCaret可以直接与pandas数据框(dataframe)一起使用。

2. 搭建环境

PyCaret中任何机器学习实验的第一步都是通过导入所需的模块并初始化setup()来设置环境的。本示例中使用的模块是pycaret.classification。导入模块后,将通过定义数据框('diabetes')和目标变量('Class variable')来初始化setup()。

from pycaret.classification import *
exp1 = setup(diabetes, target = 'Class variable')

所有预处理步骤都在setup()中应用。PyCaret拥有20多种功能,可为机器学习准备数据,它会根据setup函数中定义的参数创建转换管道(transformation pipeline)。

它会自动编排管道(pipeline)中的所有依赖项,因此您不必手动管理对测试数据集或未知的数据集进行转换的顺序执行。PyCaret的管道可以轻松地在各种环境之间转移,以实现大规模运行或轻松部署到生产环境中。以下是PyCaret首次发布时可用的预处理功能。PyCaret的预处理能力如下图:

????特别提醒:当setup()初始化时,将自动执行机器学习必需的数据预处理步骤,例如缺失值插补,分类变量编码,标签编码(将yes或no转换为1或0)和训练、测试集拆分(train-test-split)。

3.比较模型

这是在有监督的机器学习实验(分类或回归)中建议的第一步。此功能训练模型库中的所有模型,并使用k倍交叉验证(默认10倍)比较通用评估指标。使用的评估指标是:

  • 分类:Accuracy(准确度),AUC,Recall(召回率),Precision(精确度),F1,Kappa

  • 回归:MAE,MSE,RMSE,R2,RMSLE,MAPE

compare_models()

????特别提醒:

  • 默认情况下,使用10倍交叉验证来评估指标。可以通过更改fold参数的值来更改它。

  • 默认情况下,表格按“准确度”(从最高到最低)排序。可以通过更改sort参数的值来更改。

4.创建模型

在PyCaret的任何模块中创建模型就像编写create_model一样简单。它仅接受一个参数,即作为字符串输入传递的模型名称。此函数返回具有k倍交叉验证分数和训练有素的模型对象的表格。

adaboost = create_model('ada')

变量“ adaboost”存储一个由create_model函数返回的经过训练的模型对象,该对象是scikit-learn评估器。可以通过在变量后使用点(.)来访问训练对象的原始属性。请参见下面的示例。

????特别提醒:ret具有60多个开源即用型(ready-to-use)算法。查看PyCaret中可用的估算器/模型的完整列表:https://www.pycaret.org/create-model

5.调整模型

tune_model功能用于机器学习模型的自动调整超参数。PyCaret 在预定义的搜索空间上使用随机网格搜索。此函数返回具有k倍交叉验证分数和训练有素的模型对象的表格。

tuned_adaboost = tune_model('ada')

????特别提醒:tune_model位于无监督模块,如函数pycaret.nlp,pycaret.clustering和pycaret.anomal可与监督模块结合使用。例如,PyCaret的NLP模块可用于通过监督ML模型(例如“准确度”或“ R2”)评估目标/成本函数来调整主题参数(topics parameter)的数量。

6.集成模型

ensemble_model功能用于ensembling训练的模型。它仅采用一个参数,即经过训练的模型对象。此函数返回具有k倍交叉验证得分和训练模型对象的表。

# creating a decision tree model
dt = create_model('dt')
# ensembling a trained dt model
dt_bagged = ensemble_model(dt)

????特别提醒:

  • 默认情况下,“Bagging”方法用于ensembling,可使用ensemble_model函数中的method参数将其更改为“Boosting” 。

  • PyCaret还提供blend_models和stack_models功能来集成多个训练过的模型。

7.显示模型

可以使用plot_model函数对经过训练的机器学习模型进行性能评估和诊断。它使用训练有素的模型对象和作图的类型作为plot_model函数中的字符串输入。

# create a model
adaboost = create_model('ada')
# AUC plot
plot_model(adaboost, plot = 'auc')
# Decision Boundary
plot_model(adaboost, plot = 'boundary')
# Precision Recall Curve
plot_model(adaboost, plot = 'pr')
# Validation Curve
plot_model(adaboost, plot = 'vc')

了解有关PyCaret中不同可视化的更多信息:https://www.pycaret.org/plot-model

或者,您可以使用评估模型(evaluate_model)函数通过botebook中的用户界面查看作图效果。

evaluate_model(adaboost)

????特别提醒: plot_model函数pycaret.nlp模块可用于显示文本语料库和语义主题模型。

8.解释模型

在现实生活中通常是这样,当数据之间的关系是非线性时,我们总是看到基于树的模型(tree-based )比简单的高斯模型(simple gaussian models)做得更好。但是,这是以失去可解释性为代价的,因为基于树的模型没有像线性模型那样提供简单的系数。PyCaret 使用interpret_model函数实现SHAP(SHapley Additive exPlanations)。

# create a model
xgboost = create_model('xgboost')
# summary plot
interpret_model(xgboost)
# correlation plot
interpret_model(xgboost, plot = 'correlation')

可以使用“plot = 'reason'”评估测试数据集中特定数据点(也称为原因自变量'reason argument')的解释。在下面的示例中,我们正在检查测试数据集中的第一个实例。

interpret_model(xgboost, plot = 'reason', observation = 0)

9.预测模型

到目前为止,我们看到的结果仅基于训练数据集的k倍交叉验证(默认为70%)。为了查看模型在test / hold-out上的预测和性能,使用了predict_model函数。

# create a model
rf = create_model('rf')
# predict test / hold-out dataset
rf_holdout_pred = predict_model(rf)

predict_model函数还用于预测未知的数据集。现在,我们将使用与训练时相同的数据集作为新的未知数据集的代理(proxy )。实际上,每次使用新的未知数据集时,predict_model函数将被迭代使用。
predictions = predict_model(rf, data = diabetes)

????特别提醒:

  • predict_model函数还可以预测使用stack_models和create_stacknet函数创建的模型的顺序链(sequential chain)。

  • predict_model函数还可以使用deploy_model函数直接从AWS S3上托管的模型进行预测。

10.部署模型

利用训练后的模型在未知数据集上生成预测的一种方法是:在训练过模型的同一notebooks / IDE中使用predict_model函数。但是,对未知数据集进行预测是一个迭代过程。根据用例,进行预测的频率可以是从实时预测到批量预测。PyCaret的deploy_model函数允许notebook环境在云端部署整个管道,包括经过训练的模型。

deploy_model(model = rf, model_name = 'rf_aws', platform = 'aws',authentication =  {'bucket'  : 'pycaret-test'})

11.保存模型/保存实验

训练完成后,包含所有预处理转换和训练后的模型对象的整个管道都可以保存为二进制pickle文件。

# creating model
adaboost = create_model('ada')
# saving model
save_model(adaboost, model_name = 'ada_for_deployment')

您还可以将包含所有中间输出的整个实验保存为一个二进制文件。
save_experiment(experiment_name = 'my_first_experiment')

????特别提醒:您可以使用PyCaret所有模块中可用的load_model和load_experiment函数加载保存的模型和保存的实验。

延伸阅读

【1】回归:https://pycaret.org/reg101/

【2】聚类:https://pycaret.org/clu101/

【3】异常检测:https://www.pycaret.org/anom101

【4】自然语言处理:https://pycaret.org/nlp101/

【5】关联规则挖掘:https://pycaret.org/arul101/

【6】预处理功能:https://www.pycaret.org/preprocessing

【7】模型列表:https://www.pycaret.org/create-model

【8】可视化信息:https://www.pycaret.org/plot-model

往期精彩回顾适合初学者入门人工智能的路线及资料下载机器学习及深度学习笔记等资料打印机器学习在线手册深度学习在线手册AI基础下载(pdf更新到25集)本站qq群1003271085,加入微信群请回复“加群”获取一折本站知识星球优惠券,复制链接直接打开:https://t.zsxq.com/yFQV7am喜欢文章,点个在看

抢人饭碗了!推荐一款全自动的机器学习建模神器PyCaret相关推荐

  1. 推荐三款 Mac 上的理财神器 iCompta、Rublik、UctoX

    推荐三款 Mac 上的理财神器 iCompta.Rublik.UctoX 今天推荐三款理财神器,像个人的话可以使用 iCompta(个人财务管理)一款软件就好了,但有些朋友可能有关注汇率的需求,可以使 ...

  2. 推荐一款开源的ICO制作神器——greenfish

    推荐一款开源的ICO制作神器--Greenfish Icon Editor Pro 关于ICO格式做软件图标时,为什么有时候图标太小,且不清晰,看这篇文章就会茅塞顿开. 制作一个标准 ICO 图标 - ...

  3. 电脑软件:推荐10款实用的办公效率神器

    1.Everything 搜索神器 Everything超级文件搜索软件是速度最快的文件搜索软件,可以瞬间搜索到你需要的文件.Everything是速度最快的文件搜索软件,可以瞬间搜索到你需要的文件. ...

  4. 打工人必备:这10款VS Code摸鱼神器还没安装?

    现在使用VsCode编码的人越来越多,凭借着免费,开源,轻量,跨平台的特点收货了一大批忠实粉丝. 以其可支持扩展程序(通过安装扩展程序,VS Code 可以支持更多新的语言.界面主题.测试器,以及更多 ...

  5. 推荐一款多功能时间管理神器

    当我们需要待办事项提醒.备忘录.习惯打卡.日程管理等等的时候,往往需要下载不同的软件,非常的麻烦. 今天推荐一款跨平台,功能齐全(大部分免费),集备忘录.日历.习惯打卡.记账.提醒事项.日程规划等等众 ...

  6. 无人便利店抢人饭碗?这些“黑科技”将创造百万就业

    "不用排队,不用付钱,拿起就走."亚马逊为旗下无人便利店Amazon Go拍摄的宣传视频中,人们面带微笑穿梭在超市里,离开的时候,交易已经自动在手机app上完成.在美国消费者眼里, ...

  7. bulter机器人_盘点 | 那些在仓库里抢人饭碗的机器人们

    仓储物流机器人的好日子正在到来.今年6月,硅谷公司Fetch Robotics获得了软银领投的2300万美元融资,这家公司生产两种机器人,一个叫Fetch的机器人可以根据订单把货架上的商品拿下来,放到 ...

  8. 7个理由,给你推荐这款“秒杀Excel”的分析神器!

    谈到数据分析,自然离不开赖以使用的数据分析工具. 可用于数据分析的工具有很多,Python.R......还有各式各样的专业工具.其中,Excel也是推荐的比较多的一种,尤其是刚入门时,能帮助快速建立 ...

  9. 文献阅读软件_推荐一款阅读英文文献的神器,效率高不少,理解深不少!

    今天小编给大家推荐的这款软件用来阅读英文文献时思路非常顺畅,它自己就是一个pdf阅读器,随便选中一段话或一句话或一个单词,右侧就会给出翻译.再也不用像有道那样每次悬浮个窗口,屏幕上不该翻译的也到处翻译 ...

最新文章

  1. Windows10系统变慢,程序员该出手了,电脑性能大幅度提升!
  2. 【数据结构】二分查找
  3. OVS DPDK--数据结构关系(七)
  4. 2021- 10 -13 AVL树的平衡调整(有parent指针) 代码逻辑
  5. 第二届Byte Cup来袭,赢得2万美元奖金,登上字节跳动面试直通车
  6. CentOS 7 巨大变动之 firewalld 取代 iptables
  7. 64位虚拟机下asm()语法_一步步学写Windows下的Shellcode
  8. 【嵌入式】Libmodbus之TCP模式Master端程序示例
  9. 计算机专业排版有哪些,计算机专业英语词汇(完美排版_大容量打印版).pdf
  10. 数组-滑动窗口(直接套模板完事儿)
  11. H5页面和微信小程序的优劣对比
  12. cmos逻辑门传输延迟时间_电路基础:详解TTL和CMOS电平
  13. 电脑软件:主流的压缩软件对比,看完你就会选择了
  14. bittorrent_最好的免费BitTorrent客户
  15. C++弹幕游戏自制分享
  16. 【DQN高级技巧2】DQN高估问题:Target Network和Double DQN
  17. JS 变量保存为本地json文件,读取本地json文件为变量
  18. 文件上传漏洞靶场upload-labs学习(pass11-pass15)
  19. 1053: 正弦函数
  20. html3d轮播图片效果,炫酷3D透视轮播图特效

热门文章

  1. 停止FMS3.5的Apache服务
  2. IOS atomic与nonatomic,assign,copy与retain的定义和区别
  3. 深入理解C指针之四:指针和数组
  4. flash mini site Part 1 MUMA-新闻,演出系统
  5. 米兔积木机器人能飞吗_米兔积木机器人APP使用教程
  6. VSCode 更新后打不开之解决办法
  7. 转载:c+string类详解
  8. 用shp制作geoJson格式地图数据(shp convert to geoJson)
  9. SQL Server 2014安装教程
  10. PriorityQueue和queue的区别