1. 首页
  2. 机器学习

适用于Python的自动机器学习(AutoML)库

适用于Python的自动机器学习(AutoML)库

AutoML提供了一些工具,可以在很少用户干预的情况下自动发现数据集的良好机器学习模型管道。

对于刚开始使用机器学习的领域专家或希望在预测性建模任务中快速获得良好结果的机器学习从业者而言,它是理想的选择。

开源库可用于将AutoML方法与Python中流行的机器学习库一起使用,例如scikit-learn机器学习库。

在本教程中,您将发现如何在Python中使用顶级开源AutoML库进行scikit学习。

完成本教程后,您将知道:

  • AutoML是用于自动快速发现性能良好的机器学习模型管道以进行预测建模任务的技术。
  • 用于Scikit-Learn的三种最受欢迎​​的AutoML库是Hyperopt-Sklearn,Auto-Sklearn和TPOT。
  • 如何使用AutoML库为Python中的预测性建模任务发现性能良好的模型。

本教程分为四个部分。他们是:

  1. 自动化机器学习
  2. Auto-Sklearn
  3. 基于树的管道优化工具(TPOT)
  4. Hyperopt-Sklearn

自动化机器学习

自动化机器学习或简称为AutoML,涉及为预测性建模任务自动选择数据准备,机器学习模型和模型超参数。

它指的是使半熟练的机器学习从业者和非专家可以快速找到适合其机器学习任务的良好预测模型管道的技术,而无需提供数据集,而只需进行很少的干预即可

该方法的中心是定义一个大型的分层优化问题,除了模型的超参数外,该问题还涉及识别数据转换和机器学习模型本身。

现在,许多公司都提供AutoML服务,通过该服务可以上传数据集,并可以通过Web服务(例如MLaaS)下载或托管模型管道。流行的例子包括来自Google,Microsoft和Amazon的服务产品。

此外,还可以使用实现AutoML技术的开源库,这些库着重于贝叶斯优化的版本,重点放在搜索空间中使用的特定数据转换,模型和超参数,以及用于导航或优化可能性的搜索空间的算法类型。是最常见的。

尽管有很多开源的AutoML库,但是在本教程中,我们将重点研究可以与流行的scikit-learn Python机器学习库结合使用的最佳库。

它们是:Hyperopt-Sklearn,Auto-Sklearn和TPOT。

我是否错过了您最喜欢的scikit-learn的AutoML库?
在下面的评论中让我知道。

我们将仔细研究每个库,为您评估和考虑哪个库​​可能适合您的项目提供基础。

Auto-Sklearn

Auto-Sklearn是使用scikit-learn机器学习库中的机器学习模型的AutoML开源Python库。

第一步是安装Auto-Sklearn库,可以使用pip来实现,如下所示:

安装完成后,我们可以导入该库并打印版本号以确认它已成功安装:

运行示例将打印版本号。您的版本号应该相同或更高。

接下来,我们可以演示如何在合成分类任务上使用Auto-Sklearn。

我们可以定义一个AutoSklearnClassifier类来控制搜索并将其配置为运行两分钟(120秒),并杀死任何需要花费30秒以上时间进行评估的模型。运行结束时,我们可以报告搜索的统计信息,并在保留数据集上评估性能最佳的模型。

下面列出了完整的示例。

考虑到我们对运行施加的严格限制,运行示例大约需要两分钟。

运行结束时,将打印摘要,显示对599个模型进行了评估,最终模型的估计性能为95.6%。

然后,我们在保留数据集上评估该模型,发现分类精度达到97%,这是相当熟练的。

基于树的管道优化工具(TPOT)

基于树的管道优化工具(简称TPOT)是用于自动机器学习的Python库。

TPOT使用基于树的结构来表示预测性建模问题的模型管道,包括数据准备和建模算法以及模型超参数。

第一步是安装TPOT库,可以使用pip来实现,如下所示:

安装完成后,我们可以导入该库并打印版本号以确认它已成功安装:

运行示例将打印版本号。您的版本号应该相同或更高。

接下来,我们可以演示在综合分类任务上使用TPOT。

这涉及配置TPOTClassifier实例,该实例具有用于进化搜索的种群大小和世代数,以及用于评估模型的交叉验证过程和度量。然后,该算法将运行搜索过程,并将发现得最好的模型管道保存到文件中。

下面列出了完整的示例。

运行该示例可能需要几分钟,并且您将在命令行上看到一个进度条。

效果最佳的模型的准确性将在此过程中进行报告。

鉴于搜索过程的随机性,您的具体结果会有所不同。

在这种情况下,我们可以看到性能最高的管道达到了约92.6%的平均准确度。

然后,性能最高的管道将保存到名为“ tpot_best_model.py ”的文件中。

打开此文件,您可以看到有一些通用代码可用于加载数据集和拟合管道。下面列出了一个示例。

然后,您可以检索用于创建模型管道的代码,并将其集成到您的项目中。

Hyperopt-Sklearn

HyperOpt是James Bergstra开发的用于贝叶斯优化的开源Python库。

它旨在针对具有数百个参数的模型进行大规模优化,并允许优化过程跨多个内核和多台机器进行扩展。

HyperOpt-Sklearn封装了HyperOpt库,并允许自动搜索数据准备方法,机器学习算法以及用于分类和回归任务的模型超参数。

既然我们熟悉HyperOpt和HyperOpt-Sklearn,让我们看一下如何使用HyperOpt-Sklearn。

第一步是安装HyperOpt库。

这可以使用pip软件包管理器来实现,如下所示:

接下来,我们必须安装HyperOpt-Sklearn库。

也可以使用pip进行安装,尽管我们必须通过克隆存储库并从本地文件运行安装来手动执行此操作,如下所示:

我们可以通过使用以下命令检查版本号来确认安装成功:

这将概述HyperOpt-Sklearn的安装版本,确认正在使用最新版本。

接下来,我们可以演示如何在综合分类任务上使用Hyperopt-Sklearn。

我们可以配置运行搜索的HyperoptEstimator实例,包括要在搜索空间中考虑的分类器,预处理步骤以及要使用的搜索算法。在这种情况下,我们将使用TPE或Parzen估计树,并执行50次评估。

搜索结束时,将评估并总结性能最佳的模型管道。

下面列出了完整的示例。

运行该示例可能需要几分钟。

搜索的进度将被报告,您将看到一些可以安全忽略的警告。

运行结束时,将在保持数据集上评估性能最佳的模型,并打印发现的管道以供以后使用。

考虑到学习算法和搜索过程的随机性,您的具体结果可能会有所不同。尝试运行该示例几次。

在这种情况下,我们可以看到所选模型在保持测试集上达到了约84.8%的精度。管道涉及没有预处理的SGDClassifier模型。

然后可以直接使用打印的模型,例如将代码复制粘贴到另一个项目中。

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站不拥有所有权,不承担相关法律责任。如发现有侵权/违规的内容, 联系QQ1841324605,本站将立刻清除。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

联系我们

服务热线:130-0886-1890

QR code