Py学习  »  机器学习算法

Autogluon—你值得了解的自动化机器学习库

灵活胖子的科研进步之路 • 7 月前 • 121 次点击  

Autogluon—你值得了解的自动化机器学习库

官网首页
官网首页
  • 官网地址:https://auto.gluon.ai/stable/index.html#

你是否曾觉得,自己花在调整超参数上的时间比真正做数据科学的时间还多?我就有过这种感受。作为一名处理表格数据的数据科学家,我一直在寻找能简化工作流程、腾出时间用于更具创造性任务的工具。这正是我接触到Autogluon的原因——它是亚马逊AWS开发的一款功能极强且易用的自动化机器学习(AutoML)库。该库能端到端处理整个模型选择和调优过程,让你专注于最核心的事情:特征工程、探索不同时间范围以及开发新的分析方法。

如果你想深入了解,Autogluon的官方文档是极佳的资源,但我也准备了一份简洁摘要和实用入门指南,帮你快速上手。

测试环境
测试环境

本文分为三个部分:

  1. 深入介绍Autogluon,涵盖你需要了解的所有核心功能
  2. 指导你完成安装流程,包括创建虚拟环境以确保顺利启动
  3. 提供回归、分类甚至时间序列预测的实用示例和入门代码

如果你已经厌倦了手动调优模型,想要提升数据科学工作效率,那就继续往下读吧!

关于Autogluon,你需要知道的一切

既然我们已经明确了Autogluon是什么以及它的价值所在,接下来就深入探讨它的优势、劣势,以及有效使用它的关键注意事项。

为什么Autogluon是你的终极自动化机器学习解决方案?

Autogluon通过简化机器学习流程、支持快速实验,彻底改变了我们处理机器学习的方式,无论是初学者还是资深从业者,它都是理想选择。下面详细说说为什么你应该考虑在机器学习任务中使用Autogluon:

极致简洁:让模型训练变得轻松

Autogluon的突出优势在于其直观的API。只需几行代码,你就能基于自己的数据训练出高性能模型。这种简洁性让数据科学家和领域专家能够专注于更高层次的问题解决,而不必陷入模型构建的繁琐细节中。

例如,在表格数据上训练模型只需以下简单代码:

from autogluon.tabular import TabularPredictor

predictor = TabularPredictor(label='target_column').fit(train_data)

全方位工具集,满足多样需求

Autogluon设计用于自动处理多种任务,让你在更短时间内完成更多工作:

  • 智能模型选择:Autogluon会评估多种算法,包括XGBoost、LightGBM等树基模型以及神经网络。它能智能选择最适合你数据的最优性能模型,无需你手动探索不同选项。
  • 自动化超参数调优:自动化机器学习从未如此简单!Autogluon会自动优化超参数,让模型发挥最佳性能,无需你进行复杂的搜索。
  • 基础特征工程:虽然你可以自行应用高级技术,但Autogluon会处理基础的特征工程工作,确保你的数据已准备好用于建模。
  • 强大的集成学习:Autogluon擅长将多个模型组合成稳健的集成模型,融合每个模型的优势,最终实现更高精度的预测。这通过装袋法、堆叠法或加权集成法实现。
  • 无缝数据处理:Autogluon支持多种数据类型,尤其擅长处理表格数据集。它还支持对时间相关数据进行时间序列预测。

性能卓越,成果斐然

Autogluon的输出结果通常与手动调优的模型相当,甚至更优。它就像一个性能强劲的工具,既能与最先进的模型媲美,又能为你节省时间和精力。

灵活可扩展,适配高级用户

尽管Autogluon开箱即用、极易上手,但它也为想要自定义流程的用户提供了高级功能。无论你是想调整模型参数,还是整合自己的数据预处理步骤,都可以自由定制。

开源社区驱动的开发模式

Autogluon是开源项目,这意味着它能受益于活跃的社区支持和持续更新。这确保你始终能获取最新功能、漏洞修复以及自动化机器学习领域的前沿创新。

提升效率,助力创新

Autogluon旨在成为加速你工作流程的工具。无论是快速原型设计、探索不同算法,还是构建稳健的机器学习管道,它都能帮助你快速获得结果,同时避免重复劳动。

增强可解释性,洞察模型本质

虽然自动化机器学习模型有时会给人“黑箱”的感觉,但Autogluon提供了多种解读和理解结果的方式:

  • 可以探索不同模型的特征重要性,了解哪些特征对预测结果影响最大。
  • 可以查看用于集成学习的折外预测(out-of-fold predictions),深入洞察训练过程。
  • 通过高级选项,能够探索单个模型的细节和超参数。

开始使用Autogluon:安装与设置

准备好进入Autogluon的实践环节了吗?本部分将指导你完成安装流程和虚拟环境创建,确保你顺利开启Autogluon之旅。

创建虚拟环境(强烈推荐)

创建虚拟环境是所有Python项目的最佳实践,尤其是在使用机器学习库时。它能隔离项目的依赖项,避免与其他项目发生冲突,并确保可复现性。具体操作如下:

  1. 使用venv(推荐Python 3用户使用):
python3 -m venv autogluon_env  # Creates a virtual environment named "autogluon_env" 
source autogluon_env/bin/activate  # Activates the environment (Linux/macOS) 
autogluon_env\\Scripts\\activate   # Activates the environment (Windows)
  1. 使用virtualenv(若venv不可用):
pip install virtualenv  # Install virtualenv if you don't have it 
virtualenv autogluon_env   # Creates the virtual environment 
source autogluon_env/bin/activate  # Activate (Linux/macOS) 
autogluon_env\\Scripts\\activate  # Activate (Windows)

安装Autogluon

激活虚拟环境后,使用pip即可轻松安装Autogluon:

pip install autogluon # Installs the core Autogluon library for tabular data

重要说明:

  • 依赖项:Autogluon有多个依赖项,pip会自动为你安装。
  • 特定版本:若需安装特定版本的Autogluon,可在安装时指定:pip install autogluon.tabular==0.8.2(将版本号替换为你需要的版本)。
  • 问题排查:若遇到安装问题,请参考Autogluon官方文档(链接)获取排查技巧。常见问题可能包括依赖项冲突或特定Python版本不兼容。
  • 可选安装:Autogluon支持与其他库集成以处理特殊任务。例如,若计划处理图像数据,可能需要安装autogluon.vision。更多可选安装信息请查阅官方文档。

测试安装结果

安装完成后,建议验证Autogluon是否正常工作。你可以在Python脚本或交互式会话中导入该库:

import autogluon.tabular
print("Autogluon installed successfully!"# A simple confirmation message`

若未出现任何错误,则说明安装成功!

实战Autogluon:常见任务入门代码

现在你已经安装好了Autogluon,让我们通过一些实用示例,带你上手常见的数据科学任务:回归、分类和时间序列预测。

1. 回归任务

from autogluon.tabular import TabularPredictor
from sklearn.datasets import fetch_california_housing
from sklearn.model_selection import train_test_split
import pandas as pd

# 加载sklearn中的数据集(回归示例)
data = fetch_california_housing(as_frame=True)
df = data.frame  # 转换为pandas数据框
df['target'] = data.target  # 重命名目标列

# 划分训练集和测试集
train_data, test_data = train_test_split(df, test_size=0.2, random_state=42)

# 指定目标变量
label = 'target'# 若使用其他数据集,请相应调整

# 初始化并训练Autogluon预测器(不含深度学习模型)
predictor = TabularPredictor(label=label).fit(
    train_data,
    hyperparameters={'GBM': {}, 'RF': {}, 'CAT': {}, 'XGB': {}, 'XT': {}}  # 指定要训练的模型
)

# 在测试集上进行预测
predictions = predictor.predict(test_data.drop(columns=[label]))

# 评估模型性能
leaderboard = predictor.leaderboard(test_data)
print(leaderboard)

# (可选)保存预测结果
predictions.to_csv('predictions.csv', index=False)
最终获得的预测值
最终获得的预测值
每个单独模型的结果
每个单独模型的结果

代码解释:

  • 导入TabularPredictor类。
  • 本示例使用sklearn的数据集,你也可以从CSV文件中读取数据。
  • 通过label参数指定目标变量,告知Autogluon需要预测的列。
  • 初始化TabularPredictor并使用fit()方法训练模型。在fit()方法中,我们指定了超参数和模型名称,你也可以完全移除这些参数,Autogluon会根据默认设置训练更多模型。
  • 加载测试数据并使用predict()方法进行预测。
  • 展示如何使用 predictor.leaderboard()评估模型性能,该方法会显示训练过的模型排名及对应的性能指标。
  • 包含可选代码,将预测结果保存为CSV文件。

2. 分类任务

from autogluon.tabular import TabularPredictor
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
import pandas as pd

# 加载分类数据集(鸢尾花数据集)
data = load_iris(as_frame=True)
df = data.frame
df['class_label'] = data.target  # 重命名目标列,适配Autogluon

# 划分训练集和测试集
train_data, test_data = train_test_split(df, test_size=0.2, random_state=42, stratify=df['class_label'])

# 指定目标变量
label = 'class_label'

# 初始化并训练预测器(不含深度学习模型)
predictor = TabularPredictor(label=label, eval_metric='accuracy').fit(
    train_data,
    hyperparameters={'GBM': {}, 'RF': {}, 'CAT': {}, 'XGB': {}, 'XT': {}}  # 指定要训练的模型
)

# 在测试集上进行预测
predictions = predictor.predict(test_data.drop(columns=[label]))

# 评估模型性能
leaderboard = predictor.leaderboard(test_data)
print(leaderboard)

# (可选)保存预测结果
predictions.to_csv('predictions.csv', index=False)
每个模型的情况
每个模型的情况
最终预测标签情况
最终预测标签情况

代码解释:

  • 结构与回归任务非常相似。
  • 关键区别在于目标变量(label)现在代表类别标签。
  • fit()方法中引入了eval_metric参数。对于分类任务,你需要使用合适的指标,如准确率(accuracy)、F1分数(f1_auc)等。若未指定eval_metric,Autogluon会根据目标列的性质(二分类或多分类)自动确定。

3. 时间序列预测

from autogluon.timeseries import TimeSeriesPredictor
import pandas as pd
import numpy as np

# Generate a synthetic time series dataset
date_range = pd.date_range(start='2020-01-01', periods=100, freq='D')  # 100 daily timestamps
series_id = ['A'] * 100# Single time series (if multiple, modify accordingly)
target_values = np.sin(np.linspace(010100)) + np.random.normal(00.1100)  # Example pattern

# Create a DataFrame following AutoGluon time series format
df = pd.DataFrame({'item_id': series_id, 'timestamp': date_range, 'target': target_values})

# Split into train and test (e.g., last 10% as test)
split_idx = int(len(df) * 0.9)
train_data = df.iloc[:split_idx]
test_data = df.iloc[split_idx:]
# Initialize and train the predictor
predictor = TimeSeriesPredictor(target='target', prediction_length=10).fit(train_data)

# Make predictions (for the forecast horizon)
predictions = predictor.predict(test_data)

# Evaluate the model
leaderboard = predictor.leaderboard(test_data)
print(leaderboard)

# Save predictions (optional)
predictions.to_csv('predictions.csv', index=False)
是有点慢,另外需要从hugging face下载模型,注意环境
是有点慢,另外需要从hugging face下载模型,注意环境

代码解释:

  • 上述代码执行时间较长,因为我们未指定具体模型。
  • 使用TimeSeriesPredictor类。
  • 时间序列数据需要特定格式。Autogluon要求数据框包含时间索引列和代表目标变量的列。
  • prediction_length参数至关重要,它指定了你想要预测未来的时间步数。
  • 时间序列的评估指标与其他任务不同(例如,平均绝对百分比误差(MAPE)、时间序列均方根误差(RMSE)等)。

补充说明

除了分类、回归和时间序列预测,Autogluon还能完成许多其他任务,例如多模态任务(包括目标检测、图像分类等)。

数据类型
任务类型
Autogluon多模态能力
图像
分类、回归
基础模型、Hugging Face模型、timm模型
文本
分类、回归、语义匹配、命名实体识别
基础模型、Hugging Face模型
表格数据
分类、回归
传统机器学习模型
多模态
目标检测、图像分割
MMDetection、基础模型微调(仅需3行代码)

来源:https://auto.gluon.ai/stable/tutorials/multimodal/index.html

如果您对真实世界研究/因果推断/生信分析/影像组学/人工智能算法感兴趣可以通过下方的微信加我的交流群

助教微信-程老师
助教微信-程老师

欢迎关注我的视频号-定期直播免费文献分享会

扫码添加我的视频号
扫码添加我的视频号

我的小红书-分享最新方法学进展

我的下红书
我的下红书

欢迎关注我的B站账号-公开课及文献分享视频会更新至此

我的B站
我的B站

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/189827