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 时会自动安装所有依赖项,过程非常简单,如下图所示:

点击播放 GIF 1.7M

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 学习估计器。可以通过在变量后使用标点(.)来访问训练对象的原始属性。参见下面的示例:

点击播放 GIF 0.5M

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

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)

点击播放 GIF 0.3M

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 函数,用户还可以下载保存的模型和实验。

机器之心 CVPR 2020 线上分享的第一期,我们邀请到北京大学智能科学系陈汉亭(论文一作)为我们分享主题《加法神经网络:在深度学习中我们是否真的需要乘法?》,欢迎读者报名学习。

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

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

相关文章

分布式事务框架_阿里分布式事务框架GTS开源啦!

点击上方“Java后端技术”,选择“置顶或者星标”每天带你看高清大图哦!整理:开源中国就在9号这天,阿里分布式事务框架GTS开源了一个免费社区版Fescar,看到了这个消息内心非常的激动!在微服务系统中&#xf…

python3 readexcel pandas问题,使用python中的pandas中的read_excel函数将日期保留为字符串...

Python 2.7.10Tried pandas 0.17.1 -- function read_excelTried pyexcel 0.1.7 pyexcel-xlsx 0.0.7 -- function get_records()在Python中使用pandas时,是否可以读取excel文件(格式:xls | xlsx)并将包含 date 或 date time 值的列保留为 strings 而不…

SqlServer开发利器—SQL Prompt5

智能提示 SQL Prompt5的智能提示比SqlServer自带的要好很多,而且可以设置让关键字自动大写,对于数据库中的对象可以很方便的看到对象的创建脚本,如下图: 格式化代码 有时候我们把从程序中跟踪到的代码或是从SQL跟踪器中跟踪到的代…

php 数据类型伪类型,PHP之伪类型与变量

本文档中使用的伪类型与变量伪类型(pseudo -types)是PHP文档里用于指示参数可以使用的类型和值,请注意,它们不是PHP语言里原生类型,所以不能把伪类型用于自定义函数里面的类型约束(typehint)。mixedmixed说明一个参数可以接受多种不同的(但不…

unity text不能刷新_Unity使用ComputerShader实时压缩RT!

背景computer shader最近突然变得异常火热,原神和UE开发者大会多次被人提到通过computershader对手机平台的优化。一方面得益于最近手机硬件的提升,对computer shader的支持和性能提升。另一方面,新出的游戏对于画面质量的要求越来越高&#…

SVN Could not open the requested SVN filesystem解决办法

如果TortoiseSVN的版本过高,而SVN服务器的版本过低有可能造成,创建的资源库无法访问(SVN Could not open the requested SVN filesystem)。因此版本要相符。当然为避免上面的问题也可以直接用命令来创建,在命令行窗口&…

zip转直链php,蓝奏网盘直链转换器

蓝奏网盘直链转换器是一款非常不错的网盘直链转换工具,能够帮助用户批量进行蓝奏云网盘链接转换,可以自定义设置转换线程数,让用户能够直接下载分享的文件,下载速度非常快,有需要的用户不要错过了,赶快来下…

hdu 1695

题目:http://acm.hdu.edu.cn/showproblem.php?pid1695 给出a b c d k 在 [a,b] [c,d]内各找一个数,使得gcd(x,y) k,也就是说 gcd(x / k, y / k) 1,所以就是在 [1,b / k] [1, d / k]中找互质的对数。容斥原理和欧拉函数的应用&a…

python流量监控_用python中的pcapy实现网络流量监控

我写了一个简单的网络流量监视器来获得B/s和/或总数据传输率(B)。然而,当我用ftp(使用Total Commander)传输一个文件来测试它时,我不能让它把Total transfer作为文件大小来衡量。它总是比实际尺寸小得多。我不确定我是不是做错了什么。。我设置的BPF过滤…

php cve-2014-9427漏洞,WEB应用漏洞-温州特种设备检测研究院.DOC

WEB应用漏洞-温州特种设备检测研究院附件3:重点网站技术检测报告重点网站技术检测报告网站属地:浙江温州网站名称:温州市特种设备检测研究院域名:_重点网站技术检测报告经技术检测发现,你单位网站(地址:)存…

c#左移、右移基础

转:http://www.cnblogs.com/songsz1/archive/2012/10/16/2725983.html转载于:https://www.cnblogs.com/piaopiao7891/archive/2012/10/16/2726358.html

oracle导出审计表,Oracle审计表AUD$处理方法

Oracle版本:11.2.0,其他版本要测试DBMS_AUDIT_MGMT能否成功1. 查询表,然后truncateselect count(*) from aud$;truncate table aud$;select count(*) from aud$;2.创建表空间create tablespace adttbsdatafile /oracle/OMT/admin/oradata/aud…

python转c报错no module named_python异常No module named 'win32com'

异常原因:python调用com组件操作office将word转pdf报错如下Traceback (most recent call last):File "D:/wordTest/wordTest.py", line 2, in from win32com import clientModuleNotFoundError: No module named win32comTraceback (most recent call last):File &qu…

如何清除tomcat缓存

用tomcat容器&#xff0c;大家可能会发现这样的问题&#xff0c;修改jsp文件后&#xff0c;但用IE打开 依然是以前的Jsp的页面。 出现这种现象的原因主要是tomcat缓存的原因。 解决办法如下: 在jsp文件头加上 <meta http-equiv"Expires" content"0"&…