使用人工智能代理进行数据探索:使用 SmolAgents 探索泰坦尼克号数据集
十年前,当我开始我的机器学习之旅时,和许多人一样,我是从泰坦尼克号数据集开始的。我清晰地记得进行第一次探索性数据分析(EDA)的兴奋,发现模式和关联。快进到今天,数据分析的格局已经以我无法想象的方式演变。在这个智能AI的时代,我们现在可以将大部分的EDA委托给智能代理。问题不再是我们能否自动化EDA?而是我们能将这些能力推向多远?
简短的回答是:相当远。借助由尖端AI模型驱动的多代理框架,仅通过提问就可以执行详细、动态的EDA。想象一下,与您的数据集进行对话式互动——请求洞察、澄清和可视化,就像与数据科学同事自然交谈一样。让我们探索这一变革性能力。
设置舞台
什么是 SmolAgents?: SmolAgents 是 Hugging Face 提供的一个多功能库,允许开发者仅用几行代码部署代理。尽管它简单,但在简化复杂工作流程方面非常有效。
以下是一个简单的工作流程,演示 SmolAgents 在探索性数据分析(EDA)中的强大功能:
## Step 1: Import necessary libraries
from dotenv import load_dotenv
from smolagents import CodeAgent, LiteLLMModel, tool, GradioUI
import pandas as pd
## Step 2: Load environment variables, including API keys, from a .env file
load_dotenv()
## Step 3: Define the Language Model (LLM). Here, we use Google's Gemini model
model = LiteLLMModel(model_id="gemini/gemini-1.5-flash",
api_key=os.environ["GOOGLE_API_KEY"])
这段代码首先导入了必要的库,包括用于 AI 代理功能的 smolagents
。环境变量(如 API 密钥)通过 load_dotenv
从 .env
文件中加载。使用的语言模型是 Google 的 Gemini 1.5 Flash,通过 LiteLLMModel
类实例化。
## Step 4: Define tools
## Tool 1: A custom tool for loading the Titanic dataset
@tool
def get_titanic_data() -> dict:
"""Returns titanic dataset in a dictionary format.
"""
df = pd.read_csv('data/Titanic-Dataset.csv')
return df.to_dict()
## Tool 2: A custom tool for saving a dataset as a CSV file
@tool
def save_data(dataset:dict, file_name:str) -> None:
"""Takes the dataset in a dictionary format and saves it as a CSV file.
Args:
dataset: dataset in a dictionary format
file_name: name of the file of the saved dataset
"""
df = pd.DataFrame(dataset)
df.to_csv(f'data/{file_name}.csv', index=False)
## Step 5: Define the Agent
## Using SmolAgents, we configure the agent with tools, the chosen LLM, and authorized library imports
agent = CodeAgent(tools=[get_titanic_data],
model=model,
additional_authorized_imports=['numpy', 'pandas', 'matplotlib.pyplot'])
定义了一个自定义工具 get_titanic_data
,用于从 CSV 文件加载 Titanic 数据集并将其作为字典返回以供进一步探索。然后将此工具集成到 CodeAgent
中,CodeAgent
是 SmolAgents 框架的一部分,它将工具、LLM 和授权的 Python 库结合在一起,以高效地执行探索性数据分析(EDA)。
## Step 6: Launch a user-friendly chat interface with a single line of code
GradioUI(agent).launch()
最后,GradioUI
类提供了一个用户友好的界面,用于与代理进行交互。只需一行代码,就可以启动基于 Gradio 的聊天界面。
提问
以下是我向代理提出的一些问题。
我问的第一组问题集中在理解泰坦尼克号数据集的结构。这些问题包括根据列名解释列内容、识别缺失值以及检测异常值。目的是处理缺失值、修复异常值并使用 save_data
工具保存清理后的数据。
接下来,我询问了特定特征可能如何影响生存率。例如,我探讨了票务等级或年龄是否对生存有影响,以及这些因素可能为何起作用。
最后,我将注意力转向预测建模。我询问了哪些新特征可以增强预测,并请代理构建一个预测模型以报告 F1 分数。
你的回合
如果你对 SmolAgents 的潜力感到好奇,为什么不试试自己呢?加载你最喜欢的数据集,开始提问,看看你能发现什么见解。智能代理的时代已经到来——这正在改变游戏规则。
如果你喜欢这篇文章,请关注我们!