在Python中构建首个机器学习模型时,还记得那是一个相当繁琐的代码块。仍然记得构建集成模型需要多少行代码——那简直是一团乱麻,只有魔法师才能解开!
在构建可解释的机器学习模型时,尤其是在工业界(或者当想要向客户解释黑客马拉松结果时),编写高效的代码是成功的关键。这就是为什么强烈推荐使用PyCaret库。
如果PyCaret在作为机器学习新手的日子里就存在就好了!这是一个超级灵活且有用的库,在最近几个月中经常依赖它。坚信任何有志于成为数据科学或分析专业人士的人都将从使用PyCaret中受益匪浅。
将了解PyCaret到底是什么,如何在机器上安装它,然后将深入使用PyCaret构建可解释的机器学习模型,包括集成模型。有很多学习内容,让开始吧。
PyCaret
是一个Python中的开源机器学习库,它可以帮助从数据准备到模型部署。它易于使用,可以用几乎一行代码完成每个数据科学项目任务。
发现PyCaret非常方便。以下是两个主要原因:
这非常简单。可以直接使用pip
安装PyCaret的第一个稳定版本,v1.0.0。只需在Jupyter Notebook
中运行以下命令即可开始:
!pip3 install pycaret
问题陈述和数据集
在本文中,将解决一个分类问题。有一个银行数据集,包含客户年龄、经验、收入、教育以及是否拥有信用卡等特征。银行希望构建一个机器学习模型,帮助他们识别有更高可能性购买个人贷款的潜在客户。
数据集有5000行,保留了4000行用于训练模型,剩余的1000行用于测试模型。
可以通过以下链接找到本文中使用的全部代码和数据集:。
让开始使用Pandas
库读取数据集:
# 查看代码在Gist上
在开始PyCaret机器学习项目之前,第一步是设置环境。这是一个两步过程:
# 查看代码在Gist上
训练模型
在PyCaret中训练模型非常简单。只需要使用create_model
函数,它只需要一个参数——模型缩写作为字符串。这里,首先训练一个决策树
模型,需要传递“dt”,它将返回一个表格,其中包含用于分类模型的常见评估指标的k折交叉验证分数。
# 查看代码在Gist上
类似地,对于训练XGBoost模型,只需要传递字符串“xgboost”:
# 查看代码在Gist上
可以使用tune_model
函数调整机器学习模型的超参数,它只需要一个参数——模型缩写字符串(与在create_model
函数中使用的相同)。
PyCaret为提供了很多灵活性。例如,可以使用tune_model
函数中的fold
参数定义折数。或者可以使用n_iter
参数更改迭代次数。增加n_iter
参数肯定会增加训练时间,但会获得更好的性能。
让训练一个调整过的CatBoost模型:
# 查看代码在Gist上
在机器学习中,集成模型结合了多个模型的决策,以提高整体性能。
在PyCaret中,可以只用一行代码创建装袋、提升、混合和堆叠集成模型。
如果想深入了解集成模型,强烈推荐这篇文章:。
让在这里训练一个提升集成模型。它也将返回一个表格,其中包含用于分类模型的常见评估指标的k折交叉验证分数:
# 查看代码在Gist上
另一个非常著名的集成技术是混合。只需要将创建的模型传递给blend_models
函数的列表即可。
就是这样!在PyCaret中,只需要编写一行代码就可以完成大部分工作。
# 查看代码在Gist上
这是PyCaret库的另一个有用功能。如果不想逐个尝试不同的模型,可以使用compare_models
函数,它将训练并比较导入的模块库中所有可用模型的常见评估指标。
这个函数只在pycaret.classification
和pycaret.regression
模块中可用。
# 查看代码在Gist上
现在,在训练模型之后,下一步是分析结果。这尤其从业务角度来看是有用的,对吧?在PyCaret中分析模型也非常简单。只需一行代码,就可以做到以下几点:
plot_model
一样简单。可以绘制决策边界、精确度-召回曲线、验证曲线、残差图等。对于聚类模型,可以绘制肘部图和轮廓图。对于文本数据,可以绘制词云、二元和三元频率图等。绘制模型结果
可以通过提供模型对象作为参数和想要的图表类型来绘制模型结果。让绘制AUC-ROC曲线和决策边界:
# 查看代码在Gist上
让绘制训练模型的精确度-召回曲线和验证曲线:
# 查看代码在Gist上
如果不想单独绘制所有这些可视化图表,那么PyCaret库还有另一个惊人的功能——evaluate_model
。在这个函数中,只需要传递模型对象,PyCaret将为创建一个交互式窗口,让以所有可能的方式查看和分析模型:
# 查看代码在Gist上
非常酷!
解释复杂模型在大多数机器学习项目中非常重要。它有助于通过分析模型认为重要的内容来调试模型。在PyCaret中,这一步就像编写interpret_model
来获得Shapley值一样简单。
可以在这里阅读有关Shapley值的信息:。
# 查看代码在Gist上
让尝试绘制相关图:
# 查看代码在Gist上
最后,将对未见数据进行预测。为此,只需要传递将用于预测的模型和数据集。确保它与之前设置环境时提供的数据集格式相同。PyCaret构建了一个包含所有步骤的管道,并将未见数据传递到管道中,然后给结果。
让看看如何在未见数据上预测标签:
# 查看代码在Gist上
现在,一旦模型构建并测试完成,可以使用save_model
函数将其保存到pickle文件中。传递要保存的模型和文件名,就这样:
# 查看代码在Gist上
可以稍后加载此模型,并在未见数据上预测标签:
# 查看代码在Gist上
使用PyCaret确实这么简单。个人认为PyCaret在处理紧迫的时间线时非常有用。在不同类型的数据集上练习使用它——越是利用它,就越能真正掌握它的实用性!它甚至支持在AWS等云服务上部署模型,也只需要一行代码。
如果对本文有任何建议/反馈,请在下面的评论部分发布。期待听到使用PyCaret的经验。祝学习愉快!
Q1. PyCaret和pandas之间有什么区别?