惊人的!分享一个数据科学工具PyCaret,几行代码从数据处理到模型部署,与部署这些过程的重复性工作相比,简直是浪费时间,尤其是当你有新想法想快速尝试效果时,效率很低。东哥最近发现了一个名为PyCaret的开源Python机器学习库。这个轮子正好可以解决我刚才描述的问题。其特点是低代码、低代码量,快速解决从数据预处理到模型部署的问题。整个过程。用了一段时间,感觉真的很香,特分享给大家。什么是PyCaret?PyCaret是一个轮子,封装了我们常用的机器学习库。常用的有哪些?比如数据处理的pandas,numpy,数据可视化的matplotlib,seaborn,sklearn,xgboost,catboost,lightgbm等模型,一共有30个模型。安装PyCaret时,会一起安装。打包那么多库有什么用?PyCaret依赖这么多神库一定是在做些什么。是的,机器学习中的一些操作步骤可以在PyCaret自动开发的pipeline中复现。在Pycaret中执行的所有操作都按顺序存储在一个管道中,该管道已完全配置用于模型部署。PyCaret似乎已经安排好了一切,我们可以根据它定义的功能来使用它。无论是填充缺失值、转换分类数据、执行特征工程还是调整参数,Pycaret都可以自动完成。这就是为什么可以用几行代码完成从预处理到模型部署的整个过程。此外,管道可以以二进制文件格式保存,支持不同环境的迁移。PyCaret支持的模型算法PyCaret支持6个模块,训练和部署有监督和无监督模型,包括分类、回归、聚类、异常检测、自然语言处理和关联规则挖掘。PyCaret安装pipinstallpycaret同理,命令行pipinstall即可安装。为了避免这些安装的依赖和你之前安装的有冲突,建议创建一个Python虚拟环境来安装PyCaret,减少不必要的麻烦,比如使用python3virtualenv或者conda。以conda为例。#新建一个虚拟环境condacreate--nameyourenvnamepython=3.7#激活condaactivateyourenvname#安装pipinstallpycaret不行的话也可以试试源码安装。pipinstallC:/path_to_download/pycaret-version.tar.gz如何使用PyCaret?像这种数据建模的工作涉及到很多交互操作,所以东哥首先推荐在Jupyternotebook中运行代码。PyCaret库中的函数分为五类,初始化、模型训练、模型集成、模型分析、模型部署,基本涵盖了我们正常建模的顺序,除了预处理是在初始化中完成的。具体用法见以下示例。1.初始化PyCaret初始化包括两部分,1.获取数据;2.建立环境。1.获取数据PyCaret自带海量数据集,几万个样本,几百个特征,绝对够我们练习的。例如:frompycaret.datasetsimportget_datadata=get_data('juice')2.搭建环境这一步是必须的。首先,我们必须选择使用哪个模块,分类、回归、聚类或其他。比如我们要用classification分类模型。frompycaret.datasetsimportget_datadiabetes=get_data('diabetes')#Initializationfrompycaret.classificationimport*clf1=setup(data=diabetes,target='Classvariable')上面的setup函数建立了基础环境,其中参数约束数据集和目标变量。除了以上两个设置参数外,还有N多个参数可以控制。所有预处理步骤都将应用于setup()。PyCaret有20多个函数可以应用于ML相关的数据准备,例如样本划分、数据预处理、缺失值处理、one-hot编码、归一化以及特征工程、特征选择等。比如你要使用normalization,那么只要设置normalize为True即可,其他都是一样的。clf1=setup(data=pokemon,target='Legendary',normalize=True)如果你想使用其他的,只需在设置中添加它们。至于处理的先后顺序,我们不用管,pipeline已经自动搞定了。另外,PyCaret的优点之一是:Pipeline可以保存为二进制文件,方便在环境间迁移,比如大规模运行或者方便部署到生产环境。2.模型训练模型训练包括三个部分,模型比较、模型创建和模型调优。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.blendmodel#blend_models混合特殊模型blender=blend_models(estimator_list=[dt,catboost,lightgbm])3.stackmodel#为stackingridge=create_model('ridge')lda=create_model('lda')gbc创建一个模型=create_model('gbc')xgboost=create_model('xgboost')#stackingmodelstacker=stack_models(estimator_list=[ridge,lda,gbc],meta_model=xgboost)4.模型分析模型分析主要可以做两件事:1.模型图;2.模型解释。1.模型绘制我们需要分析什么模型指标,传入函数即可,比如分析adaboost模型的AUC指标。#创建逻辑回归模型adaboost=create_model('adaboost')plot_model(adaboost,plot='auc')#AUCplotplot_model(adaboost,plot='boundary')#DecisionBoundaryplot_model(adaboost,plot='pr')#PrecisionRecallCurveplot_model(adaboost,plot='vc')#ValidationCurve如果你不想单独绘制所有这些可视化,PyCaret库还有另一个惊人的函数evaluate_model。在这个函数中,你只需要传递模型对象,PyCaret就会创建一个交互窗口,供你以各种可能的方式查看和分析模型:2.模型解释解释复杂模型在大多数机器学习项目中非常重要。通过分析模型认为重要的内容,它有助于模型调整。在PyCaret中,这一步很简单,只需要写interpret_model就可以得到Shapley值。#创建模型xgboost=create_model('xgboost')interpret_model(xgboost)#summaryplotinterpret_model(xgboost,plot='correlation')#correlationplot测试数据集上特定数据点的解释可以通过原因图进行评估。下图:检查测试数据集上的第一个实例。interpret_model(xgboost,plot='reason',observation=0)5.模型部署模型调整后,应使用predict_model函数在测试集上测试模型。1.模型预测#创建模型rf=create_model('rf')#预测测试集rf_holdout_pred=predict_model(rf)以上是模型测试集的预测。如果没有看到新的数据预测,PyCaret提供了一个迭代来预测结果,在predict_model函数中指定数据,如下。2.模型完成后,可以部署最终确认模型finalize_model。#finalizeamodelfinal_rf=finalize_model(rf)3.模型部署此函数将管道和经过训练的模型保存为最终用户应用程序的二进制pickle文件。或者,可以使用PyCaret将模型部署在云上。在云上部署模型就像编写deploy_model一样简单。例如,对于AWS用户,在将模型部署到AWSS3('aws')之前,必须使用命令行界面配置环境变量。要配置AWS环境变量,请在python命令行中输入awsconfigure。以下信息是必需的,可以使用Amazon控制台帐户的身份和访问管理(IAM)门户生成这些信息。AWS访问密钥IDAWS访问密钥默认区域名称(可以在AWS控制台的全局设置下看到)默认输出格式(必须留空)#创建模型lr=create_model('lr')#完成模型final_lr=finalize_model(lr)#deploymodeldeploy_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/老头,临走前怎么不喜欢呢?关注我的原微信公众号公众号PythonDataScience,专注于编写基于Python的数据算法、机器学习和深度学习。保证让你看完有所收获,不信打我。后台回复“干货”,给你Python入门、机器学习、数据挖掘等丰富的项目资源。关于作者作者:大家好,我是帅阿东。原本是机械专业的他,凭借自己的努力成功转行做数据分析。目前,他在一家大型银行担任风控建模职位。他创立了“Python数据科学”公众号,拥有近10万粉丝。文章涵盖爬虫、数据分析、机器学习等,大量干货和实战项目讲解,提供大量学习资源。期待您的关注,和我一起学习。转载说明:未经授权,禁止转载。
