• 全自动化机器学习建模!效果吊打初级炼丹师!


    💡 作者:韩信子@ShowMeAI
    📘 机器学习实战系列http://www.showmeai.tech/tutorials/41
    📘 本文地址http://www.showmeai.tech/article-detail/289
    📢 声明:版权所有,转载请联系平台与作者并注明出处
    📢 收藏ShowMeAI查看更多精彩内容

    自动化机器学习,也称为自动化 ML 或 AutoML,是自动化完成开发耗时且需要反复迭代的机器学习建模过程。它让数据科学家、分析师和开发人员轻松构建具有高规模、高效率和生产力的机器学习模型,同时保持模型质量。

    常规的机器学习模型开发应用,需要大量时间来构建和比较若干个不同模型。借助自动化机器学习,一些繁琐枯燥的迭代开发环境可以自动完成,提高了效率。

    Python 拥有不断增长的开源 AutoML 库生态系统。ShowMeAI在本篇中梳理了截止2022年,最流行和实用的 AutoML 库,其中也有不少企业级应用工具。ShowMeAI本次介绍的AutoML工具库包括:

    • PyCaret
    • H2O AutoML
    • TPOT
    • Auto-sklearn
    • FLAML
    • EvalML
    • AutoKeras
    • Auto-ViML
    • AutoGluon
    • MLBox

    💡 PyCaret

    PyCaret 是 Python 中的一个开源、低代码机器学习库,可自动执行机器学习工作流。它也是一个端到端的机器学习和模型管理工具,可以成倍地加快实验周期,提升工作开发效率。

    与其他开源机器学习库相比,PyCaret 有着明显的低代码特质,可仅用几行代码完成原本需要数百行代码完成的工作,尤其是对于密集的实验迭代过程可以大大提速。PyCaret 本质上是围绕多个机器学习库和框架封装而成,包括大家熟悉的scikit-learn、XGBoost、LightGBM、CatBoost、spaCy、Optuna、Hyperopt 和 Ray等。

    Pycaret的相关资料链接如下:

    💡 H2O AutoML

    H2O AutoML是另一个很有名的自动化机器学习库,可以帮助我们在有限的时间内自动训练和调优许多模型。

    H2O 的核心代码是用 Java 编写的。这些算法在 H2O 的分布式 Map/Reduce 框架之上实现,并利用 Java Fork/Join 框架进行多线程处理。数据被并行读取并分布在集群中,并以压缩方式以列格式存储在内存中。

    H2O AutoML 的设计理念是,希望尽量自动化,即用户只需要给定数据集和极少量的参数,即可开始建模和调优,并在指定的时间或者其他约束条件下,尽量找到最佳的模型。

    import h2o
    from h2o.automl import H2OAutoML
    
    # 初始化
    h2o.init()
    aml = H2OAutoML(max_models =25,
                    balance_classes=True,
                    seed = 1)
    
    # 自动建模训练
    aml.train(training_frame = X, y = 'y')
    lb = aml.leaderboard
    
    # 获取最佳模型
    best_model = aml.get_best_model()
    print(best_model)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    相关的文档可以在 📘这里 查阅。

    💡 TPOT

    TPOT自动化机器学习 (AutoML) 工具库构建在scikit-learn 之上,它使用 Gentic Programming (GP) 来有效地发现给定数据集的最佳模型流水线。

    TPOT 使用遗传编程来自动设计和优化一系列数据转换(特征处理)和机器学习模型,并努力最大限度提高给定监督学习数据集的效果。

    流程示意图如下:

    整个建模调优过程也非常简单,如下2行代码即可完成完整过程。

    # 初始化
    model = TPOTClassifier(generations=5, population_size=50, cv=cv, scoring='accuracy', verbosity=2, random_state=1, n_jobs=-1)
    
    # 自动化拟合与调优
    model.fit(X, y)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    关于TPOT的资料可以在它的 📘文档 和官方 📘GitHub 查看。

    💡 Auto-sklearn

    从名字可以看出来,Auto-sklearn 是一个基于sklearn的自动化机器学习工具包。它利用了贝叶斯优化、元学习和集成模型等方法来自动化建模与调优。

    使用方法和sklearn非常相似,熟悉sklearn的同学可以无障碍快速应用。示例代码如下:

    import autosklearn.classification
    # 构建自动化分类器
    cls = autosklearn.classification.AutoSklearnClassifier()
    # 拟合调优
    cls.fit(X_train, y_train)
    # 预估
    predictions = cls.predict(X_test)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    关于Auto-sklearn的资料可以在它的 📘文档 和官方 📘GitHub 查看。

    💡 FLAML

    FLAML 是微软推出的轻量级 Python 自动化机器学习库,可以自动、高效且经济地找到准确的机器学习模型。FLAML还有来自 Visual Studio 2022 中的 ML.NE 模型生成器的 .NET 实现。

    FLAML 可以快速找到具有低计算资源的高质量模型。它支持经典机器学习模型和深度神经网络。

    关于FLAML的资料可以在它的 📘文档 和官方 📘GitHub 查看。大家可以在ShowMeAI的教程文章 📂AutoML自动化机器学习建模 中查看FLAML的详细用法,简单的使用示例代码如下:

    from flaml import AutoML
    # 构建自动化学习器
    automl = AutoML()
    # 拟合调优
    automl.fit(X_train, y_train, task=”classification”)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    💡 EvalML

    EvalML这个AutoML工具库使用特定领域的目标函数来构建、优化和评估机器学习流水线。它结合了先进的数据处理与特征工程工具库 FeaturetoolsCompose,可以非常方便地构建端到端的监督机器学习解决方案。

    EvalML 支持多种监督学习任务/问题,如回归、分类(二元和多类)、时间序列分析(包括时间序列回归和分类)等。

    关于EvalML的资料可以在它的 📘文档 和官方 📘GitHub 查看。示例使用方法如下:

    from evalml.automl import AutoMLSearch
    # 初始化
    automl = AutoMLSearch(X_train=X_train, y_train=y_train, problem_type="binary", objective="F1")
    # 搜索调优
    automl.search()
    
    • 1
    • 2
    • 3
    • 4
    • 5

    💡 AutoKeras

    AutoKeras 是一个自动化建模库,主要聚焦在自动搜索 深度学习模型的架构和超参数, 并尽快获得性能最佳的深度学习模型。Auto-Keras的API接口和scikit-learn风格完全一致,容易上手。

    它包括用于文本、图像和结构化数据的分类和回归的构建块。选择高级架构后,Autokeras 会自动调整模型。

    关于AutoKeras的资料可以在它的 📘文档 和官方 📘GitHub 查看。示例使用方法如下:

    import autokeras
    # 初始化分类器
    search = autokeras.StructuredDataClassifier(max_trials=15)
    # 拟合与寻找最佳网络结构和超参数
    search.fit(x=X_train, y=y_train, verbose=0)
    # 预估
    y_pred = search.predict(X_new) 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    💡 Auto-ViML

    Auto-ViML(自动变量可解释机器学习)是一个开源 Python 库,可以训练多个模型并自动识别最佳超参数。它内置大量的数据预处理和可解释性功能:

    • 自动化数据处理与清洗:给定数据集(通常是Dataframe格式),Auto_ViML 会尽量自动化处理缺失值、格式化变量、添加变量等。
    • 特征选择:Auto-ViML自动选择特征变量,当我们特征维度特别高的时候,非常有用。

    关于Auto-ViML的资料可以在它的 📘文档 和官方 📘GitHub 查看。示例使用方法如下:

    from autoviml.Auto_ViML import Auto_ViML
    
    #包含所有参数的一个示例代码
    model, features, trainm, testm = Auto_ViML(
        train,
        target,
        test,
        sample_submission,
        hyper_param="GS",
        feature_reduction=True,
        scoring_parameter="weighted-f1",
        KMeans_Featurizer=False,
        Boosting_Flag=False,
        Binning_Flag=False,
        Add_Poly=False,
        Stacking_Flag=False,
        Imbalanced_Flag=False,
        verbose=0,
    )
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    💡 AutoGluon

    AutoGluon 是一个由 AWS 开源的为深度学习开发优化而生的 autoML 框架。除了结构化表格数据,它还支持图像分类、目标检测和自然语言处理任务。

    AutoGluon 的核心功能包括:

    • 自动化寻找性能最佳的深度学习架构和超参数。
    • 模型选择和自动超参数调优。
    • 自动化数据预处理。

    关于 AutoGluon 的资料可以在它的 📘文档 和官方📘GitHub 查看。示例使用方法如下:

    from autogluon.tabular import TabularDataset, TabularPredictor
    # 构建训练集与测试集表格数据
    train_data = TabularDataset('https://autogluon.s3.amazonaws.com/datasets/Inc/train.csv')
    test_data = TabularDataset('https://autogluon.s3.amazonaws.com/datasets/Inc/test.csv')
    # 自动拟合与优化
    predictor = TabularPredictor(label='class').fit(train_data=train_data)
    # 预估
    predictions = predictor.predict(test_data)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    💡 MLBox

    MLBox 是一个开源的 AutoML Python 库。覆盖如下的强大功能:

    • 特征选择、缺失值填充和异常值检测。
    • 更快效果更好的数据预处理。
    • 自动超参数优化。
    • 用于分类和回归的自动模型选择。
    • 模型预测与模型可解释性。

    关于MLBox的资料可以在它的 📘文档 和官方 📘GitHub 查看。示例使用方法如下:

    import mlbox as mlb
    # 数据自动化预处理
    data = mlb.preprocessing.Drift_thresholder().fit_transform(data)
    # 优化与拟合预估
    best = mlb.optimisation.Optimiser().evaluate(None, data)
    mlb.prediction.Predictor().fit_predict(best, data)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    参考资料

  • 相关阅读:
    尚硅谷MySQL学习笔记
    【ASM】字节码操作 工具类与常用类 Printer、ASMifier、Textifier 介绍
    NOIP2015跳石头【二分答案(最小值最大化) | 贪心】
    Linux 命令
    网工老大难经典提问之“IE要到期如何续证?”关于思科CCIE【重认证】常用方式,这次请务必保留好!
    基于QT5与opencascdae7.4的简易模型浏览器
    机械原理复习试题
    Wgpu图文详解(01)窗口与基本渲染
    算法学习:动态规划
    【暑期每日一题】洛谷 P7798 [COCI2015-2016#6] PUTOVANJE
  • 原文地址:https://blog.csdn.net/ShowMeAI/article/details/125712913