python低代码_几行代码搞定ML模型,低代码机器学习Python库正式开源

PyCaret 库支持在「低代码」环境中训练和部署有监督以及无监督的机器学习模型,提升机器学习实验的效率。

想提高机器学习实验的效率,把更多精力放在解决业务问题而不是写代码上?低代码平台或许是个不错的选择。

最近,机器之心发现了一个开源低代码机器学习 Python 库 PyCaret,它支持在「低代码」环境中训练和部署有监督以及无监督的机器学习模型。

GitHub 地址:https://github.com/pycaret/pycaret

用户文档:https://www.pycaret.org/guide

Notebook 教程:https://www.pycaret.org/tutorial

PyCaret 库支持数据科学家快速高效地执行端到端实验,与其他开源机器学习库相比,PyCaret 库只需几行代码即可执行复杂的机器学习任务。该库适合有经验的数据科学家、倾向于低代码机器学习解决方案的公民数据科学家,以及编程背景较弱甚至没有的新手。

PyCaret 库支持多种 Notebook 环境,包括 Jupyter Notebook、Azure notebook 和 Google Colab。从本质上来看,PyCaret 是一个 Python 封装器,封装了多个机器学习库和框架,如 sci-kit-learn、XGBoost、Microsoft LightGBM、spaCy 等。

机器学习实验中所有步骤均可使用 PyCaret 自动开发的 pipeline 进行复现。在 Pycaret 中所执行的所有操作均按顺序存储在 Pipeline 中,该 Pipeline 针对模型部署进行了完全配置。

不管是填充缺失值、转换类别数据、执行特征工程设计,还是调参,Pycaret 都能够自动执行。而且 pipeline 可以保存为二进制文件格式,支持在不同环境中进行迁移。

PyCaret 包含一系列函数,用户通过它们完成机器学习实验。PyCaret 库的函数可分为以下五个大类,涵盖初始化、模型训练、集成、分析与部署:

此外,PyCaret 提供 6 个模块,支持有监督和无监督模型的训练和部署,分别是分类、回归、聚类、异常检测、自然语言处理和关联规则挖掘。每个模块封装特定的机器学习算法和不同模块均可以使用的函数。用户可以根据实验类型,将模块导入环境中。

PyCaret 库提供的六个模块。

接下来,我们就来了解一下 PyCaret 库的安装和使用方法吧。

启动 PyCaret

使用 pip 安装 PyCaret。

使用命令行界面或 notebook 环境,运行下面的代码进行安装:

pip install pycaret

Azure notebook 和 Google Colab 用户,可以运行下列代码进行安装:

!pip install pycaret

安装 PyCaret 时会自动安装所有依赖项,过程非常简单,如下图所示:

PyCaret 分步教程

数据获取

该教程使用「糖尿病」数据集,目标是根据血压、胰岛素水平以及年龄等多种因素预测患者的预后情况(1 或 0)。数据集参见 PyCaret 的 GitHub 地址。

直接从 PyCaret 库中导入数据集的最简单方法是使用 pycaret.datasets 模块中的 get_data 函数。

from *pycaret.datasets*import*get_data*

diabetes = *get_data*('diabetes')

get_data 的输出。

PyCaret 可以直接处理 Pandas 数据帧。

环境配置

在 PyCaret 中执行任意机器学习实验的第一步都是,通过导入所需模块并初始化 setup() 来设置环境。如下示例中使用的模块是 pycaret.classification。

模块导入后,将通过定义数据结构「糖尿病」和目标变量「类变量」来初始化 setup()。

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

所有预处理的步骤都会应用至 setup() 中,PyCaret 拥有 20 余项功能可运用于 ML 相关的数据准备,例如根据 setup 函数中定义的参数来创建 Transformation pipeline,同时也会自动协调 Pipeline 中所有的相关性及依赖关系。这样面对测试或者未见过的数据集,用户无需再手动管理或是调整执行的顺序。

PyCaret 的 Pipeline 可轻松地在各环境之间相互迁移,比如大规模运行或是轻松部署到生产环境中。下图展示了 PyCaret 首次发布时可用的预处理功能:

PyCaret 的预处理功能。

数据预处理是机器学习的必要步骤,比如当初始化 setup() 时,缺失值填充、分类变量编码、标签编码(将 yes or no 转化为 1 or 0)以及 train-test-split 会自动执行。

模型比较

这是监督机器学习实验(分类或回归模块)应该进行的第一步。compare_models 函数训练模型库中的所有模型,并使用 k 折交叉验证(默认 k=10)来比较常见的评估指标。所使用的评估指标如下所示:

分类模块:准确度、AUC、Recall、精度、F1 和 Kappa;

回归模块:MAE、MSE、RMSE、R2、RMSLE 和 MAPE。

*compare_models*()

compare_models() 函数的输出。Output from compare_models( ) function

默认使用 10 折交叉验证来评估指标,可以通过改变 fold 参数值来改变评估结果。默认使用精度值(由高到低)来分类 table,同样可以通过改变 sort 参数值来改变分类结果。

模型创建

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

adaboost = *create_model*('adaboost')

变量「adaboost」存储一个由*create_model*函数返回的训练模型对象,该对象是 scikit 学习估计器。可以通过在变量后使用标点(.)来访问训练对象的原始属性。参见下面的示例:

训练好的模型对象的属性。

PyCaret 有 60 多个开源即用型算法。

模型调优

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

tuned_adaboost = tune_model('ada')

在无监督模块中的 tune_model 函数,比如 pycaret.nlp,pycaret.clustering 和 pycaret.anomaly 可以和监督模块结合使用。举例而言,通过评估监督 ML 模型中的目标或者损失函数,PyCaret 的 NLP 模块可以用来调整准确度或 R2 等指标的数值。

模型集成

ensemble_model 函数用于集成训练好的模型。它只需要一个参数,即训练好的模型对象。此函数返回具有 k 折交叉验证分数和训练好的模型对象的表格。

# creating a decision tree model

dt = *create_model*('dt')# ensembling a trained dt model

dt_bagged = *ensemble_model*(dt)

该库默认使用 Bagging 方法用于模型集成,用户也可使用 ensemble_model 函数中的 method 参数将其转换为 Boosting。

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

模型绘制

训练好的机器学习模型的性能评估和诊断可以通过 plot_model 函数来完成,具体而言,将训练模型对象和 plot 类型作为 plot_model 函数中的字符串输入(string input)。

# 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')

此外,用户还可以使用 evaluate_model 函数在 notebook 的用户界面上看到可视化图。

*evaluate_model*(adaboost)

pycaret.nlp 模块中的 plot_model 函数可用于可视化文本语料库和语义主题模型。

模型解释

数据中的关系呈非线性是实践中常常出现的情况。这时总会看到基于树的模型要比简单的高斯模型的表现好得多。但这是以牺牲可解释性为代价的,因为基于树的模型无法像线性模型那样提供简单的系数。

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')

测试数据集上特定数据点的解释可以通过『reason』图来评估。如下图所示:在测试数据集上检查首个实例。

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

模型预测

到目前为止,所看到的结果仅基于训练数据集上 k 折交叉验证(默认 70%)。所以为了得到模型在测试或者 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)

此外,对于使用 stack_models 和 create_stacknet 函数创建的模型,predict_model 函数可以预测它们的序列链。不仅如此,借助于 deploy_model 函数,predict_model 函数还可以直接基于托管在 AWS S3 上的模型进行预测。

模型部署

我们可以使用以下方法让训练好的模型在未见过的数据集上生成预测:在训练模型的同一个 notebook 或 IDE 中使用 predict_model 函数。但是,在未见过的数据集上执行预测是一个迭代的过程。其中,基于用例的不同,预测可以分为实时预测和批量预测。

PyCaret 的 deploy_model 函数允许部署整个 pipeline,包括云端训练的模型。

*deploy_model*(model = rf, model_name ='rf_aws', platform ='aws',

authentication =  {'bucket':'pycaret-test'})

模型/实验保存

训练完成后,包含所有预处理转换和训练模型对象在内的整个 pipeline 能够以二进制 pickle 文件的格式保存。

# creating model

adaboost = *create_model*('ada')# saving model*

save_model*(adaboost, model_name = 'ada_for_deployment')

用户也能够以二进制文件的格式保存整个实验,包括所有中间输出(intermediary output)。

*save_experiment*(experiment_name ='my_first_experiment')

最后,通过 PyCaret 所有模块中可用的 load_model 和 load_experiment 函数,用户还可以下载保存的模型和实验。

【编辑推荐】

【责任编辑:张燕妮 TEL:(010)68476606】

点赞 0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/503965.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java if else重构_java – 如何重构这个有多个if / else语句的方法

我有一种感觉,这个if / else应该被重构,但我不确定我能做什么,或者我是否应该让它像它一样……private String someReportUrl(HttpServletRequest request, HttpServletResponse response) {String url;if (isBackToReportsSummary(request)) {url SUMMARY_PAGE;getReportsSum…

vue2.0 唤起百度地图app_开车选高德,出门靠百度,高德百度地图APP对比

高德和百度是在电子地图领域竞争的对手,但是,在同一领域他们的发展方向的侧重也存在差异。那么,他们究竟有什么不同呢?当然,他们的开发人员必须是不同的,肯定不用考虑。此外,在某些数据和功能上…

java beanutil 工具类_实现BeanFactoryAware来达到Spring静态方法获取Bean对象的BeanUtil工具类...

在容器初始化时注入Bean工厂,并提供一些列静态方法,用于运行期间任何地方都可以用过他来获许对应Beanpackage com.idaima.util;import org.springframework.beans.BeansException;import org.springframework.beans.factory.BeanFactory;import org.spri…

火力发电厂与变电站设计防火标准_真题—火力发电厂1

做真题,遇真题,解真题1、某燃煤火力发电厂,单机容量200MW,该发电厂火灾自动报警系统的下列设计方案中,正确的是()。A.运煤系统内的火灾探测器防护等级为IP65B.厂区设置集中报警系统C.消防控制室与集中控制室分别独立设…

bigdecimal 判断是否为数字_C语言判断字符串是否为回文

回文就是字符串中心对称&#xff0c;如“abcba”、“abccba”是回文&#xff0c;“abcdba”不是回文。/*判断字符串是否为回文*/ #include <stdio.h> int main(void) {int i,k;char line[10];/*输入字符串*/printf("Enter a string:");k0;while((line[k]getcha…

java文件学生_文件存储学生信息(JavaIO流)

package com;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.util.Scanner;/*** author Administrator*1.要求&#xff1a;有五个学生&#xff0c;每个学生有姓名、年龄 、成绩三个属性&a…

捷波朗STORM耳机设置中文_2020年 除了Airpods pro以外无线降噪蓝牙耳机如何选?五款热门入耳式蓝牙降噪耳机推荐...

双十二红包&#xff0c;每日三次&#xff0c;手慢无2020 年除了Airpods pro 以外&#xff0c;五款热门入耳式无线蓝牙降噪耳机简评近期&#xff0c;Apple推出的新款无线耳机Air pods pro引起了一波数码控的热议&#xff0c;大致分为两个立场&#xff0c;我个人专门去苹果店试听…

java如何画百分比圆环_canvas绘制百分比圆环进度条

开发项目&#xff0c;PM会跟踪项目进度&#xff1b;完成某个事情&#xff0c;也可以设置一个完成的进度。这里用canvas绘制一个简单百分比圆环进度条。看下效果&#xff1a;1. 动画方式2. 静默方式贴上代码&#xff0c;仅供参考/*** LBS drawRing* Date: 2015-04-24* * opts.pa…

python单链表操作、建立头指针为h的单链表_在一头指针为H的单链表中,若要向表头插入一个由指针p指向的结点,则应执行( )操作。 (5.0分)_学小易找答案...

【单选题】【简答题】什么叫消费者市场?【单选题】安全生产管理模式九个不中的“三不准”指 :【单选题】在一个单链表中,若要在p所指向的结点之后插入一个新结点,则需要相继修改( )个指针域的值。 (5.0分)【单选题】TCP坐标出厂时默认位于哪里?【多选题】在通常情况下,下列哪…

mysql填写账户远程_mysql账户添加远程访问

我们要将root账户设置为远程可访问mysql> show databases;--------------------| Database |--------------------| here || information_schema || mysql || performance_schema || sys |--------------------选择mysql数据库mysql> use mysql;Reading table informatio…

java密码框提示_[Java教程]如何实现在密码框如出现提示语

[Java教程]如何实现在密码框如出现提示语02015-12-25 13:00:14如何实现在密码框如出现提示语:有时候我们需要在登陆表单有一些提示语言&#xff0c;比如“请输入用户民”和“请输入密码”等语言&#xff0c;至于用户名好说&#xff0c;但是在密码框中出现“请输入密码”这样的语…

linux 休眠定时唤醒_Linux重启关机命令经验之谈

请关注本头条号&#xff0c;每天坚持更新原创干货技术文章如需学习视频&#xff0c;请查看本头条号简介&#xff0c;免费在线观看学习视频一般来说&#xff0c;Linux服务器都保存着重要文件和服务&#xff0c;不当使用将可能导致数据丢失甚至是灾难。同样&#xff0c;正确的关闭…

java formfile_基于Struts文件上传(FormFile)详解

Struts中FormFile用于文件进行上传1.在jsp文件中进行定义名字&#xff1a;头像:2.在Form表单中定义FormFile/** Generated by MyEclipse Struts* Template path: templates/java/JavaClass.vtl*/package com.yourcompany.struts.form;import javax.servlet.http.HttpServletReq…

空白世界地图打印版_考研准考证打印什么时候_中国研究生招生信息网官网

考研准考证打印什么时候_中国研究生招生信息网官网由广东研究生考试网考试快讯栏目由提供&#xff0c;更多关于考研准考证打印入口,广东研究生考试快讯的内容&#xff0c;请关注广东研究生考试频道/广东人事考试网&#xff01;2021考研人注意啦!2021考研准考证下载时间及入口12…

debian java7_Debian 7 和 Debian 8 用户怎样安装 Oracle Java 8

Oracle Java 8 稳定版本近期已发布&#xff0c;有很多新的特征变化。其中&#xff0c;有功能的程序支持通过“Lambda项目 ”&#xff0c;收到了一些安全更新和界面改进上的bug修复&#xff0c;使得开发人员的工作更容易。本文将告诉你如何在Debian 7 “Wheezy”和Debian 8 “Je…

python创建虚拟环境venv_Python 3 使用venv创建虚拟环境

Python 3.3以上使用venv来代替了原来Python2使用的virtualenv创建虚拟环境。虚拟环境的作用是使得不同项目的Python包之间不会相互干扰&#xff0c;避免了由此产生的各种问题。现在演示下如何在桌面创建一个虚拟环境C:\Users\dell\Desktop>mkdir python3VenvTestC:\Users\de…

jdbc java连接oracle_java连接oracle jdbc连接

Class.forName("oracle.jdbc.driver.OracleDriver");Connection ctDriver.Magager.getConnection("jdbc:oracle:thin:127.0.0.1:1521:orcl","scott","tiger");java连接oracle odbc桥连接&#xff1a;Class.forName("sun.jdbc.odb…

python获取终端输出流_Linux下用Python获取命令行输出的几个方案

Python在慢慢成为脑影像数据处理中的主流语言。而在做脑影像处理时&#xff0c;不免有时候需要用到一些别人开发好的工具包&#xff0c;而这些包并不都是python包。下面是学习啦小编收集整理的Linux下用Python获取命令行输出的几个方案&#xff0c;希望对大家有帮助~~Linux下用…

广州python平均薪资_爬取广州的python和Java薪资,为什么Python 高于Java(有代码)...

标签&#xff1a;小编不知道这个是不是属于那个啥&#xff0c;要看的赶紧看&#xff0c;说不定小编的号要被封了。用python爬取了某某某直聘网站&#xff0c;直聘Python和Java的招聘信息&#xff0c;比较了两个方向的发展前(钱)途 &#xff0c;主要是本科生。为了前(钱)途 冲啊…

hdu java_HDU-java实现1176

免费馅饼Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 58323 Accepted Submission(s): 20514Problem Description都说天上不会掉馅饼&#xff0c;但有一天gameboy正走在回家的小径上&#xff0c;忽然天上掉下…