做者|LAKSHAY ARORA
编译|VK
来源|Analytics Vidhyapython
PyCaret是一个超级有用的Python库,用于在短期内执行多个机器学习任务git
学习如何依赖PyCaret在几行代码中构建复杂的机器学习模型github
我创建的第一个机器学习模型是一个至关麻烦的代码块。我仍然记得构建一个集成模型,它须要许多行代码,它十分须要一个向导来解开这些混乱的代码!app
当涉及到构建可解释的机器学习模型时,尤为是在行业中,编写高效的代码是成功的关键。因此我强烈建议使用PyCaret库。机器学习
我但愿PyCaret在个人刚学习机器学习的日子里出现!这是一个很是灵活和有用的库,我在最近几个月已经至关依赖。我坚信任何有志成为数据科学或分析专业人士的人都会从使用PyCaret中受益不浅。函数
咱们将看到PyCaret究竟是什么,包括如何在你的机器上安装它,而后咱们将深刻研究如何使用PyCaret来构建可解释的机器学习模型,包括集成模型。性能
什么是PyCaret?为何要使用它?学习
安装PyCaret测试
熟悉PyCaret编码
使用PyCaret训练咱们的机器学习模型
使用PyCaret构建集成模型
分析模型
作出预测
保存并加载模型
PyCaret是Python中一个开源的机器学习库,它能够帮助你从数据准备到模型部署。它很容易使用,你能够用一行代码完成几乎全部的数据科学项目任务。
我发现PyCaret很是方便。如下是两个主要缘由:
PyCaret是一个代码库,它使你的工做效率更高。你能够在代码上花更少的时间,作更多的实验
它是一个易于使用的机器学习库,将帮助你执行端到端的机器学习实验,不管是输入缺失值、编码分类数据、特征工程、超参数调整,仍是构建集成模型
这是最直接的。能够直接使用pip安装PyCaret的第一个稳定版本v1.0.0。只需在Jupyter Notebook中运行如下命令便可开始:
!pip3 install pycaret
在本文中,咱们将解决一个分类问题。咱们有一个银行数据集,包括客户年龄、经验、收入、教育程度,以及他/她是否有信用卡。该行但愿创建一个机器学习模型,帮助他们识别购买我的贷款可能性更高的潜在客户。
数据集有5000行,咱们保留了4000行用于训练模型,剩下的1000行用于测试模型。你能够在这里找到本文中使用的完整代码和数据集。
https://github.com/lakshay-arora/PyCaret-Example
让咱们从使用Pandas库读取数据集开始:
# 导入panda以读取CSV文件 import pandas as pd # 读取数据 data_classification = pd.read_csv('datasets/loan_train_data.csv') # 查看数据的顶行 data_classification.head()
在PyCaret中启动机器学习项目以前的第一步是设置环境。这只是一个两步的过程:
# 导入分类模块 from pycaret import classification # 设置环境 classification_setup = classification.setup(data= data_classification, target='Personal Loan')
咱们都准备好探索PyCaret了!
用PyCaret训练一个模型很是简单。你只须要使用create_model函数,该函数只接受一个参数(模型缩写为字符串)。
在这里,咱们将首先训练一个决策树模型,咱们必须经过“dt”,它将返回一个表,其中包含用于分类模型的经常使用评估指标的k倍交叉验证分数。
如下是用于监督学习的评估指标:
你能够查看PyCaret的文档页以了解更多缩写。
https://pycaret.org/create-model/
# 创建决策树模型 classification_dt = classification.create_model('dt')
一样,为了训练XGBoost模型,只须要传递字符串“XGBoost”:
# 构建xgboost模型 classification_xgb = classification.create_model('xgboost')
咱们能够经过使用tune_model函数来调整机器学习模型的超参数,该函数接受一个参数,模型缩写字符串(与咱们在create_model函数中使用的相同)。
PyCaret为咱们提供了不少灵活性。例如,咱们可使用tune_model函数中的fold参数定义折叠次数。或者咱们可使用n_iter参数更改迭代次数。增长nòiter参数将明显增长训练时间,提供更好的性能。
让咱们训练一个CatBoost模型:
# 构建和调优catboost模型 tune_catboost = classification.tune_model('catboost')
机器学习中的集成模型未来自多个模型的决策结合起来,以提升总体性能。
在PyCaret中,咱们能够用一行代码建立bagging、boosting、blending和stacking集成模型。
让咱们在这里训练一个集成模型。它还将返回一个表,其中包含经常使用评估指标的k折交叉验证分数:
# boosting boosting = classification.ensemble_model(classification_dt, method= 'Boosting')
另外一个很是著名的合成技术是blending。你只须要传递在blend_models函数列表中建立的模型。
# blending blender = classification.blend_models(estimator_list=[classification_dt, classification_xgb])
就这样!你只须要用PyCaret编写一行代码就能够完成大部分工做。
这是PyCaret库的另外一个有用功能。若是不想逐个尝试不一样的模型,可使用compare models函数,它将为全部可用模型训练和比较通用的评估度量。
此函数仅在pycaret.classification以及 pycaret.regression模块中。
# 比较不一样分类模型的性能 classification.compare_models()
如今,在训练模型以后,下一步是分析结果。从商业角度来看,这特别有用,对吧?分析PyCaret中的模型也很简单。只需一行代码,你就能够执行如下操做:
能够经过提供模型对象做为参数和所需的打印类型来打印模型结果。绘制AUC-ROC曲线和决策边界:
# AUC-ROC 图 classification.plot_model(classification_dt, plot = 'auc') # 决策边界 classification.plot_model(classification_dt, plot = 'boundary')
绘制训练模型的精确召回曲线和验证曲线:
# Precision Recall 曲线 classification.plot_model(classification_dt, plot = 'pr') # 验证曲线 classification.plot_model(classification_dt, plot = 'vc')
若是你不想单独绘制全部这些可视化效果,那么PyCaret库还有另外一个惊人的功能——evaluate_model。在这个函数中,你只须要传递model对象,PyCaret将建立一个交互式窗口,供你以全部可能的方式查看和分析模型:
# 评估模型 classification.evaluate_model(classification_dt)
在大多数机器学习项目中,解释复杂模型是很是重要的。它经过分析模型认为何是重要的来帮助调试模型。在PyCaret中,这一步与编写解释模型以获取Shapley值同样简单。
# 解释模型:SHAP classification.interpret_model(classification_xgb)
让咱们尝试绘制相关图:
# 解释模型:相关性 classification.interpret_model(classification_xgb,plot='correlation')
最后,咱们将对看不见的数据进行预测。为此,咱们只须要传递咱们将用于预测和数据集的模型。确保它的格式与咱们以前设置环境时提供的格式相同。
PyCaret构建一个包含全部步骤的管道,并将未看到的数据传递到管道中,并给出结果。
让咱们看看如何预测数据的标签:
# 读取测试数据 test_data_classification = pd.read_csv('datasets/loan_test_data.csv') # 作出预测 predictions = classification.predict_model(classification_dt, data=test_data_classification) # 查看预测 predictions
如今,一旦构建并测试了模型,咱们就可使用save_model函数将其保存在pickle文件中。传递要保存的模型和文件名,即:
# 保存模型 classification.save_model(classification_dt, 'decision_tree_1')
咱们能够稍后加载此模型并预测数据上的标签:
# 加载模型 dt_model = classification.load_model(model_name='decision_tree_1')
它真的很容易使用。我我的发现PyCaret对于在时间紧迫的状况下快速生成结果很是有用。
在不一样类型的数据集上练习使用它——你会越充分利用它,就越能真正掌握它的实用性!它甚至只须要一行代码就能够在AWS等云服务上支持模型部署。
原文连接:https://www.analyticsvidhya.com/blog/2020/05/pycaret-machine-learning-model-seconds/
欢迎关注磐创AI博客站:
http://panchuang.net/
sklearn机器学习中文官方文档:
http://sklearn123.com/
欢迎关注磐创博客资源汇总站:
http://docs.panchuang.net/