PyCaret 是由 Moez Ali 创建并于2020年4月发布的 Python 开源低代码机器学习库。它实际上是一个低代码库,使得用户可以通过极少量的代码创建完整的机器学习管道。PyCaret 是基于通用 Python 机器学习库(如 scikit-learn 和 XGBoost)构建的封装器。
PyCaret 提供了一种简洁且实用的语法。例如,我们可以使用一行代码比较18个分类模型。本文将引导您使用 PyCaret 完成分类任务,并解释每个步骤的细节。
首先,我们需要安装 PyCaret:
python
!pip install pycaret
如果您使用 Google Colab 作为开发环境,并希望在笔记本中显示交互式可视化效果,需要执行以下代码:
python
from pycaret.utils import enable_colab
enable_colab()
我们将使用“Telco客户流失”数据集,可以从 Kaggle 获取。导入 numpy
和 pandas
后,我们可以将数据集读取到 pandas
数据框中:
```python import numpy as np import pandas as pd
df = pd.read_csv("/content/Customer-churn.csv") print(df.shape) # 输出 (7043, 21) ```
数据集包含7043个观测值(行)和21列。其中,“CustomerID”没有任何信息价值,因为它只是分配给每个客户的随机标识符。“TotalCharges”列是“tenure”和“MonthlyCharges”列的乘积,因此我们不需要这一列。我们需要删除这两列:
python
df.drop(['customerID', 'TotalCharges'], axis=1, inplace=True)
我们的任务是使用提供的特征预测客户是否会流失(即离开公司)。为了简化说明,我们省略了探索性数据分析(EDA)过程,本文主要关注 PyCaret 的使用方式。
首先,我们需要设置 PyCaret 环境:
```python from pycaret.classification import *
expclf = setup(data=df, target='Churn', sessionid=111) ```
在本例中,数据类型是正确的,因此我们只需按 Enter 键继续。setup
函数需要以下参数:
data
: 数据框的名称target
: 目标列的名称(因变量)session_id
: 一个随机数,用作当前操作的随机种子执行 setup
函数后,我们将获得一系列关于环境和参数设置的信息。
接下来,我们可以使用 compare_models
函数快速评估 PyCaret 模型库中所有模型的性能。这个函数训练所有模型,并根据六种常见的分类指标对其进行评估。
python
best_models = compare_models(n_select=15, sort='Accuracy')
这行代码可以让我们比较18个模型在六种不同度量标准下的表现。默认情况下,模型按准确性排序,但可以通过 sort
参数进行更改。评估采用10折分层交叉验证。
接下来,我们选择一个算法进行进一步优化。为了简化,我们选择了逻辑回归模型:
python
logreg = create_model('lr')
create_model
函数用于创建选定的模型。我们只需传递模型的缩写即可。对于逻辑回归模型,我们创建了一个初步版本。
调整超参数是提升模型性能的关键步骤之一。PyCaret 提供了 tune_model
函数,可以在预定义的搜索空间内调整超参数:
python
tuned_logreg = tune_model('lr')
plot_model
函数提供了进一步分析模型性能的工具。它可以生成多种图表,如 ROC 曲线、混淆矩阵和特征重要性图。
python
plot_model(logreg, plot='auc')
plot_model(logreg, plot='confusion_matrix')
plot_model(logreg, plot='feature_importance')
predict_model
函数用于对测试集进行预测。默认情况下,它会对测试集进行预测,但也可以提供新的观测值进行预测。
python
predictions = predict_model(logreg, data=new_data)
一旦我们对训练集和测试集的性能满意,可以使用 finalize_model
函数在整个数据集上重新训练模型,以便在部署前应用所有数据:
python
final_logreg = finalize_model(logreg)
最后,我们可以使用 save_model
和 load_model
函数保存和加载训练好的模型:
python
save_model(final_logreg, 'final_logreg_model')
loaded_model = load_model('final_logreg_model')
通过以上步骤,我们可以使用大约10行代码创建和评估一个高质量的模型。PyCaret 提供了一系列方便的功能,如 setup
、compare_models
、create_model
或 tune_model
、plot_model
、predict_model
、save_model
和 load_model
,使得机器学习流程更加高效和便捷。
感谢您的阅读。如果您有任何反馈意见,请随时告知。