做者:帅阿东,数据爱好者
Python数据科学出品
学习数据科学好久了,从数据探索、数据预处理、数据模型搭建和部署这些过程一直有些重复性的工做比较浪费时间,尤为当你有个新的想法想要快速尝试下效果的时候,效率很低。python
东哥最近发现一个开源的Python机器学习库,名字叫PyCaret
,这个轮子正好能够为了解决我刚才所描述的困扰,它的特色是以low-code
低代码量来快速解决从数据预处理到模型部署的整个流程。
用了一下感受确实有点香,所以也和你们分享一下。算法
PyCaret
是一个将咱们经常使用到的机器学习库进行封装了的轮子。微信
经常使用的都有啥呢?app
好比pandas
,numpy
作数据处理的,matplotlib
,seaborn
数据可视化的,sklearn
,xgboost
,catboost
,lightgbm
等各类模型的,总共有30个。在安装PyCaret
的时候会附带着一块儿都安装上。机器学习
封装这么多库干什么用?ide
PyCaret依赖了这么多的神库确定是要搞事情啊。没错,机器学习中的一些操做步骤均可在PyCaret
自动开发的pipeline
中进行复现。在 Pycaret 中所执行的全部操做均按顺序存储在 Pipeline 中,该 Pipeline 针对模型部署进行了彻底配置。函数
PyCaret就像是把全部都安排好了同样,咱们按照它定义的函数使用就能够了。不论是填充缺失值、转换类别数据、执行特征工程设计,仍是调参,Pycaret 都可以自动执行。 因此才能够实现用几行代码搞定从预处理到模型部署的整个流程。学习
并且pipeline
能够保存为二进制文件格式,支持在不一样环境中进行迁移。测试
PyCaret
支持6个模块,有监督
和无监督
模型的训练和部署,分别有分类、回归、聚类、异常检测、天然语言处理和关联规则挖掘。ui
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
像这种数据建模类的工做会涉及不少交互式的操做,因此东哥首推在Jupyter notebook
中运行代码。
PyCaret库的函数有五个大类,初始化、模型训练、模型集成、模型分析与模型部署,基本上覆盖了咱们正常建模的顺序,只不过预处理都在初始化中完成了。具体使用方法见后面实例。
PyCaret初始化包括了两部份内容,1、获取数据;2、创建环境。
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、模型绘制;2、模型解释。
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)门户生成。
# 建立模型 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粉丝,文章涵盖爬虫,数据分析、机器学习等大量干货和实战项目讲解,提供海量学习资源,期待你的关注,和我一块儿学习。 转载说明:未得到受权,禁止转载。