评论
由 Moez Ali,PyCaret 创始人及作者
我们很高兴地宣布 PyCaret,一个开源的 Python 机器学习库,用于在低代码环境中训练和部署监督学习和无监督学习模型。PyCaret 让你可以在选择的笔记本环境中,从准备数据到部署模型,只需几秒钟。
与其他开源机器学习库相比,PyCaret 是一个替代的低代码库,可以用少量代码替代数百行代码。这使得实验速度快且高效。PyCaret 实质上是几个机器学习库和框架的 Python 包装器,如 scikit-learn、 XGBoost、 Microsoft LightGBM、 spaCy 等。
PyCaret 是简单且 易于使用的。PyCaret 中执行的所有操作都顺序存储在一个管道中,该管道完全为部署而编排。无论是填补缺失值、转换分类数据、特征工程还是超参数调整,PyCaret 都能自动完成。要了解更多关于 PyCaret 的信息,请观看这个 1 分钟的视频。
PyCaret 1.0.0 发布公告 — 一个开源、低代码的 Python 机器学习库
PyCaret 1.0.0 的第一个稳定版本可以使用 pip 安装。使用命令行界面或笔记本环境,运行以下代码单元以安装 PyCaret。
pip install pycaret
如果你使用 Azure notebooks 或 Google Colab,请运行以下代码单元以安装 PyCaret。
!pip install pycaret
当你安装 PyCaret 时,所有依赖项会自动安装。 点击这里 查看完整依赖项列表。
在这个分步教程中,我们将使用**‘diabetes’** 数据集,目标是根据血压、胰岛素水平、年龄等多个因素预测患者结果(0 或 1)。数据集可在 PyCaret 的 github 仓库 中找到。直接从仓库导入数据集的最简单方法是使用来自pycaret.datasets模块的get_data函数。
from **pycaret.datasets** import **get_data**
diabetes = **get_data**('diabetes')
从 get_data 输出
???? PyCaret 可以直接与pandas 数据框配合使用。
PyCaret 中任何机器学习实验的第一步是通过导入所需的模块并初始化setup( )来设置环境。此示例中使用的模块是 pycaret.classification.
一旦导入模块,**setup()**通过定义数据框(‘diabetes’)和目标变量(‘Class variable’)来初始化。
from **pycaret.classification** import ***** exp1 = **setup**(diabetes, target = 'Class variable')
所有预处理步骤都在setup()中应用。PyCaret 提供了超过 20 个功能来准备机器学习数据,基于在setup函数中定义的参数创建转换管道。它自动协调所有依赖关系于管道中,因此您无需手动管理测试或未见数据集上的转换的顺序执行。PyCaret 的管道可以轻松地在不同环境之间转移,以进行大规模运行或轻松部署到生产环境。以下是 PyCaret 在首次发布时提供的预处理功能。
PyCaret 的预处理能力
数据预处理步骤,如缺失值填充、分类变量编码、标签编码(将是或否转换为 1 或 0)和训练-测试-拆分,在初始化 setup() 时会自动执行。 点击这里 了解更多有关 PyCaret 预处理能力的信息。
这是在监督机器学习实验中(分类 或 回归)推荐的第一步。该函数训练模型库中的所有模型,并使用 k 折交叉验证(默认 10 折)比较常见的评估指标。使用的评估指标有:
-
**分类模型:**准确率、AUC、召回率、精确度、F1、Kappa
-
**回归模型:**MAE, MSE, RMSE, R2, RMSLE, MAPE
**compare_models**()
compare_models() 函数的输出
默认情况下,指标使用 10 折交叉验证进行评估。可以通过更改 ***fold ***参数的值来进行更改。
默认情况下,表格按‘Accuracy’(从高到低)值排序。可以通过更改 ***sort ***参数的值进行更改。
在 PyCaret 的任何模块中创建模型就像编写create_model一样简单。它只需要一个参数,即作为字符串输入传递的模型名称。该函数返回一个包含 k 折交叉验证分数和一个训练过的模型对象的表格。
adaboost = **create_model**('ada')
变量 ‘adaboost’ 存储了由create_model函数返回的训练模型对象,这是一个 scikit-learn 估计器。可以通过在变量后使用*句点( . )*来访问训练对象的原始属性。见下例。
训练模型对象的属性
???? PyCaret 提供了超过 60 种开源现成的算法。 点击这里 查看 PyCaret 中可用的所有估计器/模型的完整列表。
tune_model 函数用于自动调整机器学习模型的超参数。PyCaret 使用随机网格搜索在预定义的搜索空间中进行。这一函数返回一个包含 k 折交叉验证分数和一个训练模型对象的表格。
tuned_adaboost = tune_model('ada')
???? tune_model 函数在无监督模块如 pycaret.nlp、pycaret.clustering和 pycaret.anomaly中可以与监督模块一起使用。例如,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’方法进行集成,通过在 method 参数中使用‘Boosting’可以进行更改。
???? PyCaret 还提供了 blend_models 和 stack_models 功能,用于集成多个训练后的模型。
使用plot_model 函数可以对训练好的机器学习模型进行性能评估和诊断。它接受一个训练模型对象和类型为字符串的绘图类型作为输入。
# 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')
点击这里 了解更多关于 PyCaret 中不同可视化的信息。
或者,你可以使用evaluate_model 函数通过用户界面在笔记本中查看图表。
**evaluate_model**(adaboost)
???? plot_model 函数在pycaret.nlp 模块中可用于可视化文本语料库和语义主题模型。 点击这里 了解更多信息。
当数据中的关系是非线性时,这在现实生活中很常见,我们通常会看到基于树的模型比简单的高斯模型表现更好。然而,这也意味着失去了可解释性,因为树基模型不像线性模型那样提供简单的系数。PyCaret 使用 SHAP (SHapley Additive exPlanations 函数来实现interpret_model。
# create a model
xgboost = **create_model**('xgboost')# summary plot
**interpret_model**(xgboost)# correlation plot
**interpret_model**(xgboost, plot = 'correlation')
测试数据集中某个数据点的解释(也称为 reason 参数)可以使用 'reason' 图进行评估。在下面的示例中,我们检查的是测试数据集中的第一个实例。
**interpret_model**(xgboost, plot = 'reason', observation = 0)
迄今为止,我们看到的结果仅基于训练数据集上的 k-fold 交叉验证(默认为 70%)。为了查看模型在测试/持出数据集上的预测和性能,使用 predict_model 函数。
# create a model
rf = **create_model**('rf')# predict test / hold-out dataset
rf_holdout_pred **= predict_model**(rf)
predict_model 函数也用于预测未见过的数据集。现在,我们将使用与训练相同的数据集作为 代理 来进行新未见数据集的预测。在实际应用中,predict_model 函数会迭代使用,每次都使用一个新的未见数据集。
predictions = **predict_model**(rf, data = diabetes)
predict_model 函数还可以预测使用 stack_models 和 create_stacknet 函数创建的一系列模型。
predict_model 函数还可以直接从托管在 AWS S3 上的模型进行预测,使用 deploy_model 函数。
利用训练好的模型对未见过的数据集生成预测的一种方法是使用与模型训练相同的笔记本/IDE 中的 predict_model 函数。然而,对未见数据集进行预测是一个迭代过程;根据使用情况,预测的频率可以从实时预测到批量预测。PyCaret 的 deploy_model 函数允许将包括训练模型在内的整个流程从笔记本环境部署到云端。
**deploy_model**(model = rf, model_name = 'rf_aws', platform = 'aws',
authentication = {'bucket' : 'pycaret-test'})
训练完成后,包含所有预处理转换和训练模型对象的整个流程可以保存为二进制 pickle 文件。
# creating model
adaboost = **create_model**('ada')# saving model **save_model**(adaboost, model_name = 'ada_for_deployment')
你还可以将包括所有中间输出在内的整个实验保存为一个二进制文件。
**save_experiment**(experiment_name = 'my_first_experiment')
load_model 和 load_experiment 函数可以用于加载保存的模型和保存的实验,这些函数在 PyCaret 的所有模块中都可用。
在下一个教程中,我们将展示如何在 Power BI 中使用训练好的机器学习模型,以在实际生产环境中生成批量预测。
请参见我们这些模块的初学者级别的笔记本:
我们正在积极改进 PyCaret。我们的未来开发计划包括一个新的 时间序列预测 模块、与 TensorFlow 的集成以及 PyCaret 可扩展性的重大改进。如果你想分享你的反馈并帮助我们进一步改进,可以 填写此表单 或在我们的 GitHub 或 LinkedIn 页面留言。
自 1.0.0 版本首次发布以来,PyCaret 现已提供以下模块供使用。点击下面的链接查看文档和工作示例。
如果你喜欢 PyCaret,请在我们的 GitHub 仓库上给我们 ⭐️。
想了解更多 PyCaret 的信息,请关注我们的 LinkedIn 和 Youtube。
Bio: Moez Ali 是一名数据科学家,也是 PyCaret 的创始人和作者。
原文。经许可转载。
相关:
-
机器学习堆栈中的一个关键缺失部分
-
通过公共 API 共享你的机器学习模型
-
轻松使用 torchlayers 构建 PyTorch 模型
1. Google 网络安全证书 - 快速进入网络安全职业生涯。
2. Google 数据分析专业证书 - 提升你的数据分析技能
3. Google IT 支持专业证书 - 支持你组织的 IT 需求