在这篇文章中,将探索PyCaret,这是一个开源的、低代码的机器学习库,专为Python设计,由Moez Ali创建。PyCaret以其易用性和高效性,帮助数据科学家和开发者快速准备数据、训练和部署模型,尤其适合那些希望减少编码工作、专注于解决业务问题的用户。PyCaret与PowerBI、Tableau等工具集成,支持Jupyter、Google Colab、Azure Notebooks等多种笔记本环境。
PyCaret在商务智能领域有着广泛的应用。它允许团队创建端到端的机器学习实验,减少编码时间,专注于解决实际业务问题。无论是分类还是回归模型,PyCaret都能轻松应对。本文将以回归问题为例,展示使用PyCaret进行编码的简便性。将使用Kaggle上的房价数据集,该数据集适合初学者实践新学的机器学习概念。
本文旨在帮助初学者快速上手PyCaret的回归模块。将涵盖以下内容:
在Google Colab、Azure Notebooks或Kaggle上安装PyCaret,可以使用以下命令:
!pip install pycaret
在本地Jupyter笔记本中安装PyCaret,可以使用:
pip install pycaret
要使用PyCaret,需要满足以下条件:
回归分析起源于统计学,是一种估计一个或多个自变量(特征、预测器或协变量)与一个因变量(结果变量或目标)之间关系的过程。在机器学习中,回归分析的目标是预测连续值的结果,例如销售额、数量、温度等。
PyCaret的回归模块是一个监督式机器学习模块,用于使用各种算法和技术预测值或结果。它拥有超过25种算法和10种图表来分析模型性能。无论是集成学习、超参数调整还是高级调整如堆叠,PyCaret都是所有机器学习解决方案的一站式平台。
本文将使用流行的“房价”数据集,这是一个非常适合初学者应用新学的机器学习概念的数据集。该数据集包含超过81列和1400条记录,几乎涵盖了房产的所有方面。
import pandas as pd
test = pd.read_csv("test.csv")
train = pd.read_csv("train.csv")
print(train.shape)
print(test.shape)
print(train.head())
(注:由于列数众多,以上快照只包含部分列,后续的快照也是如此。)
train.describe()
train.info()
在PyCaret中,必须先调用setup()
函数来创建转换管道,准备数据以进行建模和部署。setup()
是PyCaret中执行任何其他函数之前必须调用的。这里有一个关于setup()
的重要摘录:
# 分离分类列
cat_f = ['MSZoning','Exterior1st','Exterior2nd', ...]
exp_reg101 = setup(data = train, target = 'SalePrice', categorical_features = cat_f,
ignore_features= ['Alley','PoolQC','MiscFeature', ...],
normalize = True, session_id = 123)
现在环境已经完全可用。
这里就是魔法发生的地方。只需一行代码,就可以在PyCaret中的所有可用模型上运行训练集。可以通过输入models()
来查看可用的模型。
# 所有可用的模型
models()
现在训练所有模型,并根据R2分数选择最佳模型:
best = compare_models(exclude = ['ransac'])
由于梯度提升回归器具有最高的R2分数,将使用该模型:
gbr = create_model('gbr')
现在调整模型:
tuned_gbr = tune_model(gbr)
print(tuned_gbr)
在确定模型之前,可以使用plot_model()
函数评估模型在不同方面的表现,例如残差图、预测误差、特征重要性等。
在plot_model()
下有超过10种图表可供选择,可以通过输入plot_model?
来查看。
残差图:
plot_model(tuned_gbr)
预测误差图:
plot_model(tuned_gbr, plot = 'error')
特征重要性图:
plot_model(tuned_gbr, plot = 'feature')
另一种分析模型的好方法是使用evaluate_model()
函数,它创建了一个交互式仪表板,用户可以从中选择所有可用的图表。用户可以轻松选择一个选项并查看他们想要的图表。例如,这里选择了“Cooks Distance”图表:
evaluate_model(tuned_gbr)
predict_model(tuned_gbr)
final_gbr = finalize_model(tuned_gbr)
print(final_gbr)
以下代码在DataFrame的末尾添加了一个名为“Label”的新列,用于存储预测值。
unseen_predictions = predict_model(final_gbr, data=test)
unseen_predictions.head()
已经完成了实验,并使用存储的模型final_gbr
来预测未见过的数据。但是,当有新数据需要预测时,否需要从头开始重新创建模型呢?答案显然是不。PyCaret的内置save_model()
允许将这个已经训练好的模型保存起来,以备将来使用。
save_model(final_gbr,'Final GBR Model 7Jul2021')
本文涵盖了从加载数据、预处理数据、训练模型、超参数调整,到最后的预测和保存训练模型的整个机器学习流程。所有这些操作都可以通过不到10条直观且易于记忆的命令完成。如果不使用PyCaret,重新创建整个过程将需要数百行代码,但这只是pycaret.regression
模块的基础。
下一篇文章将介绍使用PyCaret进行中级自动机器学习回归。一旦发布,可以阅读那篇文章,以及在以下链接的其他文章:
Sion | Author at analytics Vidhya