机器学习|自动化的机器学习:5个常用AutoML 框架介绍

机器学习|自动化的机器学习:5个常用AutoML 框架介绍

文章图片


AutoML 可以为预测建模问题自动找到数据准备、模型和模型超参数的最佳组合 , 本文整理了5个最常见且被熟知的开源AutoML 框架 。

AutoML框架执行的任务可以被总结成以下几点:

  • 预处理和清理数据 。
  • 选择并构建适当的特征 。
  • 选择合适的模型 。
  • 优化模型超参数 。
  • 设计神经网络的拓扑结构(如果使用深度学习) 。
  • 机器学习模型后处理 。
  • 结果的可视化和展示 。
在本文中 , 我们将介绍以下5 个开源 autoML 库或框架:
  • Auto-Sklearn
  • TPOT
  • Hyperopt Sklearn
  • Auto-Keras
  • H2O AutoML
1、Auto-SklearnAuto-sklearn 是一个开箱即用的自动化机器学习库 。auto-sklearn 以 scikit-learn 为基础 , 自动搜索正确的学习算法并优化其超参数 。通过元学习、贝叶斯优化和集成学习等搜索可以获得最佳的数据处理管道和模型 。 它可以处理大部分繁琐的工作 , 例如预处理和特征工程技术: One-Hot 编码、特征归一化、降维等 。
安装:
#pip
pip install auto-sklearn
#conda
conda install -c conda-forge auto-sklearn
因为进行了大量的封装 , 所以使用的方法sklearn基本一样 , 以下是样例代码:
import sklearn.datasets
import sklearn.metrics
import autosklearn.regression
import matplotlib.pyplot as plt
X y = sklearn.datasets.load_diabetes(return_X_y=True)
X_train X_test y_train y_test = sklearn.model_selection.train_test_split(X y random_state=1)
automl = autosklearn.regression.AutoSklearnRegressor(
   time_left_for_this_task=120
   per_run_time_limit=30
   tmp_folder='/tmp/autosklearn_regression_example_tmp'
)
automl.fit(X_train y_train dataset_name='diabetes')
2、TPOTTPOT(Tree-based Pipeline Optimization Tool)是一个 Python 自动化机器学习工具 , 它使用遗传算法优化对机器学习的流程进行优化 。 它也是基于 Scikit-Learn 提供的方法进行数据转换和机器学习模型的构建 , 但是它使用遗传算法编程进行随机和全局搜索 。 以下是TPOT 搜索流程:

安装:
#pip
pip insall tpot
#conda
conda install -c conda-forge tpot
样例代码:
from tpot import TPOTClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
import numpy as np

iris = load_iris()
X_train X_test y_train y_test = train_test_split(iris.data.astype(np.float64)
   iris.target.astype(np.float64) train_size=0.75 test_size=0.25 random_state=42)

tpot = TPOTClassifier(generations=5 population_size=50 verbosity=2 random_state=42)
tpot.fit(X_train y_train)
print(tpot.score(X_test y_test))
tpot.export('tpot_iris_pipeline.py')
3、HyperOpt-Sklearn:HyperOpt-Sklearn 是 HyperOpt 的包装器 , 可以将 AutoML 和 HyperOpt 与 Scikit-Learn 进行整合 , 这个库包含了数据预处理的转换和分类、回归算法模型 。 文档中介绍说:它专为具有数百个参数的模型进行大规模优化而设计 并允许跨多核和多台机器扩展优化过程 。
安装:
pip install hyperopt
样例代码:
from pandas import read_csv
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_absolute_error
from hpsklearn import HyperoptEstimator
from hpsklearn import any_regressor