本章评论生成式人工智能怎么能够主动化数据科学。生成式人工智能,特别是言语模型(LLMs),有潜力在各个范畴加快科学进展,尤其是经过供给对研讨数据的高效剖析和辅佐文献总述进程。当时许多归于主动化机器学习(AutoML)范畴的办法能够帮忙数据科学家进步生产力,使数据科学进程更具可重复性。在本章中,咱们首要评论生成式人工智能对数据科学的影响,然后概述数据科学中的主动化。

接下来,咱们将评论怎么运用代码生成和东西以多种办法答复与数据科学相关的问题。这能够经过进行模拟或用附加信息丰厚咱们的数据集的形式呈现。终究,咱们将把要点转移到对结构化数据集的探究性剖析上。咱们能够设置署理来运转SQL或在pandas中处理表格数据。咱们将看到怎么问询有关数据集的问题,关于数据的核算问题,或许恳求可视化。

在整个章节中,咱们将尝试运用LLMs进行数据科学的不同办法,你能够在本书的GitHub存储库中的data_science目录中找到,网址为github.com/benman1/gen… 本章的首要部分包含:

  1. 生成模型对数据科学的影响
  2. 主动化数据科学
  3. 运用署理答复数据科学问题
  4. 运用LLMs进行数据探究

在深化评论数据科学怎么主动化之前,让咱们首要评论生成式人工智能将怎么影响数据科学!

生成式模型对数据科学的影响

生成式人工智能(Generative AI)和诸如GPT-4之类的言语模型(LLMs)在数据科学和剖析范畴带来了重大变革。这些模型,特别是LLMs,能够以多种办法改造数据科学的所有进程,为研讨人员和剖析师供给了令人兴奋的机会。生成式AI模型,如ChatGPT,能够了解并生成相似人类的呼应,使其成为进步研讨生产力的有价值东西。

生成式AI在剖析和解说研讨数据方面发挥着至关重要的效果。这些模型能够帮忙进行数据探究,提醒隐藏的形式或相关性,并供给经过传统办法或许无法察觉的见地。经过主动化数据剖析的某些方面,生成式AI节省时刻和资源,使研讨人员能够会集精力处理更高层次的使命。

生成式AI能够帮忙研讨人员的另一个范畴是进行文献总述和辨认研讨空白。ChatGPT和相似的模型能够总结很多学术论文或文章的信息,供给对现有常识的简明概述。这有助于研讨人员更有效地确定文献中的空白,并引导他们更高效地进行研讨。咱们在第4章“构建功用强壮的助手”中现已评论了在这方面运用生成式AI模型的方面。

生成式AI在数据科学的其他用例包含:

  1. 主动生成组成数据: 生成式AI能够主动生成组成数据,用于练习机器学习模型。这关于那些无法获得很多真实世界数据的企业十分有帮忙。
  2. 辨认数据中的形式: 生成式AI能够用于辨认人类剖析师无法看到的数据中的形式。这关于企业希望从数据中获得新见地的状况十分有帮忙。
  3. 从现有数据创立新特征: 生成式AI能够用于从现有数据创立新特征。这关于企业希望进步其机器学习模型准确性的状况十分有帮忙。

依据麦肯锡(McKinsey)和毕马威(KPMG)等机构的最新陈述,AI的影响触及数据科学家将处理的使命、他们的作业办法以及能够履行数据科学使命的人员。首要影响范畴包含:

  1. AI的民主化: 生成模型使更多的人能够运用AI,经过简略的提示生成文本、代码和数据。这将AI的运用扩展到数据科学家之外的更多人群。
  2. 进步生产力: 经过主动生成代码、数据和文本,生成式AI能够加快开发和剖析作业流程。这使数据科学家和剖析师能够专心于更高价值的使命。
  3. 数据科学的立异: 生成式AI正在带来以新的、更立异的办法探究数据,并生成以传统办法无法完成的新假定和见地的才能。
  4. 职业的推翻: 生成式AI的新运用或许经过主动化使命或增强产品和服务来推翻职业。数据团队需求辨认高影响的运用场景。
  5. 仍存在的约束: 当时模型仍存在准确性约束、偏见问题和缺乏可控性。需求数据专家监督负职责的开发。

办理的重要性: 严厉的办理关于生成式AI模型的开发和品德运用至关重要,以保护利益相关者的信任。

数据科学技能的变化: 需求或许从编码专业常识转向数据办理、伦理、翻译事务问题和监督AI体系的才能。

关于数据科学民主化和立异的问题,更具体地说,生成式AI还影响了数据可视化的办法。曩昔,数据可视化通常是静态的、二维的。但是,生成式AI能够用于创立交互式和三维的可视化,有助于使数据愈加易于拜访和了解。这使人们更简略了解和解说数据,从而带来更好的决议计划。

再次着重,生成式AI正在带来的最大变化之一是数据科学的民主化。曩昔,数据科学是一个十分专业化的范畴,需求深化了解核算学和机器学习。但是,生成式AI使得技能专业常识较少的人能够创立和运用数据模型。这将数据科学的范畴打开给更广泛的人群。

LLMs和生成式AI在主动化数据科学中发挥着至关重要的效果,供给了多种好处:

  1. 自然言语交互: LLMs答应自然言语交互,运用户能够运用普通英语或其他言语与模型进行沟通。这使非技能用户能够运用日常言语与数据进行交互和探究,无需专业的编码或数据剖析常识。
  2. 代码生成: 生成式AI能够主动生成代码片段,履行探究性数据剖析(EDA)期间的特定剖析使命。例如,它能够生成SQL代码来检索数据、整理数据、处理缺失值或创立可视化。这个功用节省了时刻并削减了手动编码的需求。
  3. 主动陈述生成: LLMs能够生成主动陈述,总结EDA的关键发现。这些陈述供给有关数据集各个方面的见地,如核算摘要、相关性剖析、特征重要性等,运用户更简略了解和展现他们的发现。
  4. 数据探究和可视化: 生成式AI算法能够全面探究大型数据集,并生成提醒数据中潜在形式、变量之间联系、反常或反常的可视化。这有助于用户在不手动创立每个可视化的状况下全面了解数据集。

此外,咱们能够以为生成式AI算法应该能够从用户的交互中学习,并依据个别偏好或曩昔的行为调整其引荐。它经过持续的自适应学习和用户反应改进,供给更个性化和有用的洞悉力,在主动化EDA期间愈加适运用户偏好。

终究,生成式AI模型能够经过从现有数据会集学习形式(智能过错辨认)在EDA期间辨认数据中的过错或反常。它能够快速而准确地检测不一致性并突出潜在问题。

整体而言,LLMs和生成式AI能够经过简化用户交互、生成代码片段、高效地辨认过错/反常、主动陈述生成、促进全面的数据探究和可视化创立,以及适运用户偏好来增强主动化EDA。但是,虽然这些模型为增强研讨和帮忙文献总述进程供给了巨大的潜力,但它们不该被视为不可靠的信息源。正如咱们前面所看到的,LLMs经过类比作业,对推理和数学有困难。它们的优势在于创造力,而不是准确性,因而,研讨人员有必要进行批判性考虑,保证这些模型生成的成果准确、无偏和符合严厉的科学规范。

一个明显的比方是微软的Fabric,它包含由生成式AI驱动的谈天界面。这运用户能够运用自然言语提出与数据相关的问题,无需等候数据恳求队列,即可获得即时答案。经过运用相似OpenAI模型的LLMs,Fabric完成了对有价值洞悉的实时拜访。

在剖析产品中,Fabric以其全面的办法脱颖而出。它处理了安排剖析需求的各个方面,并为参加剖析进程的不同团队供给了针对人物的体会,如数据工程师、仓储专业人员、科学家、剖析师和事务用户。

经过在每一层次集成Azure OpenAI Service,Fabric运用生成式AI的力量来开释数据的悉数潜力。Microsoft Fabric中的诸如Copilot等功用供给了会话言语体会,答运用户创立数据流、生成代码或整个函数、构建机器学习模型、可视化成果,乃至开发自定义的会话言语体会。

ChatGPT(以及扩展中的Fabric)在生成不正确的SQL查询时经常呈现问题。当由剖析师运用并查看输出的有效性时,这没有问题,但作为非技能事务用户的自助剖析东西则或许是一场灾祸。因而,安排在运用Fabric进行剖析时有必要保证建立可靠的数据流程并采用数据质量办理实践。

虽然生成式AI在数据剖析中的或许性令人兴奋,但仍需谨慎。有必要经过榜首原理的推理和严厉的剖析来验证LLMs的可靠性和准确性。虽然这些模型在暂时剖析、研讨中的考虑和总结杂乱剖析方面展现了其潜力,但由于需求范畴专家验证,它们并不总是适用于非技能用户的自助剖析东西。

主动化数据科学

数据科学是一门将核算机科学、核算学和事务剖析结合起来,从数据中提取常识和洞悉力的范畴。数据科学家运用各种东西和技能来搜集、整理、剖析和可视化数据。然后,他们运用这些信息帮忙企业做出更好的决议计划。数据科学家的职责规划广泛,通常触及多个进程,具体人物和职业会有所不同。使命包含数据搜集、整理、剖析和可视化。数据科学家还担任构建猜测模型,以帮忙决议计划进程。所有说到的使命对数据科学至关重要,但或许耗时且杂乱。

主动化数据科学作业流的各个方面的主动化使数据科学家能够更专心于创造性问题处理,一起进步作业功率。最近的东西经过在常见作业流中启用更快的迭代和削减手动编码来使流程的不同阶段愈加高效。数据科学的一些使命与咱们在第6章《运用生成式AI开发软件》中谈到的软件开发人员的使命有所重叠,即编写和布置软件,虽然焦点更为狭隘,首要会集在模型上。

像KNIME、H2O和RapidMiner这样的数据科学渠道供给了一致的剖析引擎,用于预处理数据、提取特征和构建模型。集成到这些渠道的LLMs,如GitHub Copilot或Jupyter AI,能够依据自然言语提示生成用于数据处理、剖析和可视化的代码。Jupyter AI答应与虚拟助手进行对话,解说代码、辨认过错并创立笔记本。

文档中的截图显现了Jupyternaut谈天功用(Jupyter AI):

运用LangChain的生成式AI——数据科学中的LLMs

很明显,像那样在指尖上具有这样的谈天功用,能够用来发问、创立简略函数或更改现有函数,对数据科学家来说是一个福音。

整体而言,主动化数据科学能够加快剖析和机器学习运用程序的开发。它使数据科学家能够专心于流程的高价值和创造性方面。将数据科学民主化给事务剖析师也是主动化这些作业流的关键动机。在接下来的部分中,咱们将逐一调查不同的使命,并着重生成式AI怎么有助于改进作业流程,并在数据搜集、可视化和探究性数据剖析、预处理和特征工程以及终究的AutoML等范畴创造功率收益。让咱们更具体地看看这些范畴的每一个。

数据采集

主动化数据搜集是在无需人工干涉的状况下搜集数据的进程。主动化数据搜集能够成为企业的有力东西。它能够帮忙企业更快速、高效地搜集数据,并开释人力资源以便专心于其他使命。

在数据科学或剖析的背景下,咱们将ETL(抽取、转换和加载)称为不只仅是从一个或多个源(数据搜集)获取数据的进程,而且还预备数据以满足特定的用例。

有许多ETL东西,包含商业东西如AWS Glue、Google Dataflow、Amazon Simple Workflow Service(SWF)、dbt、Fivetran、Microsoft SSIS、IBM InfoSphere DataStage、Talend Open Studio,以及开源东西如Airflow、Kafka和Spark。在Python中,还有许多其他东西(无法列举悉数),比方用于数据提取和处理的pandas,乃至celery和joblib,它们能够用作ETL编排东西。

在LangChain中,与Zapier集成,Zapier是一种主动化东西,可用于衔接不同的运用程序和服务。这能够用于主动化从各种来源搜集数据的进程。LLMs供给了一种加快的办法来搜集和处理数据,特别拿手安排非结构化数据集。

最适合主动数据搜集的东西将取决于事务的具体需求。企业应考虑他们需求搜集的数据类型、需求搜集的数据量以及他们可用的预算。

可视化与探究性数据剖析(EDA)

探究性数据剖析(EDA)触及在履行机器学习使命之前手动探究和总结数据,以了解其各个方面。它有助于辨认形式、检测不一致之处、测验假定并获得洞悉力。但是,跟着大型数据集的呈现和对高效剖析的需求,主动化的EDA变得重要起来。

主动化EDA和可视化是指运用软件东西和算法主动剖析和可视化数据,削减人工干涉。这些东西供给了多种好处。它们能够加快数据剖析进程,削减在数据整理、处理缺失值、反常检测和特征工程等使命上所花费的时刻。这些东西还经过生成交互式可视化,更有效地探究杂乱数据集,供给对数据的全面概述。

在数据可视化中运用生成式AI为主动化EDA增添了新的维度,它依据用户提示生成新的可视化,使数据的可视化和解说变得愈加易于了解。

预处理和特征提取

主动化数据预处理能够包含诸如数据整理、数据集成、数据转换和特征提取等使命。它与ETL中的转换进程相关,因而在东西和技能上存在许多重叠。另一方面,主动化特征工程变得越来越重要,以充分发挥机器学习算法在杂乱实践数据上的才能。这包含从数据中删除过错和不一致性,并将其转换为与即将运用的剖析东西兼容的格局。

在预处理和特征工程进程中,LLMs主动化数据的整理、集成和转换。采用这些模型有望简化流程,从而经过在这些阶段最小化对灵敏信息的人工处理来改进隐私办理。虽然在预处理使命中进步了灵活性和功用,但在保证主动创立的特征的安全性和可解说性方面仍然存在应战,由于它们或许不像手动创立的特征那样透明。功率的进步不该危害经过主动化引进无意中的偏见或过错的查看需求。

AutoML

AutoML结构代表机器学习演进中的一个明显腾跃。经过简化完好的模型开发周期,包含数据整理、特征选择、模型练习和超参数调整等使命,AutoML结构在时刻和精力方面明显节省了数据科学家通常花费的本钱。这些结构不只进步了速度,还有或许进步机器学习模型的质量。

AutoML的基本思想在mljar AutoML库的GitHub存储库中经过以下图表进行了阐明(来源: github.com/mljar/mljar…

运用LangChain的生成式AI——数据科学中的LLMs

AutoML体系供给的价值关键在于它们对易用性和生产力增长的促进效果。在典型的开发环境中,这些体系使机器学习模型的快速辨认和投产成为或许,简化了了解和布置进程。这些结构的起源能够追溯到像Auto-WEKA这样的立异。作为前期广泛结构尝试之一,它是在Waikato大学开发的,用Java编写,以主动化Weka机器学习套件中表格数据的进程。

自Auto-WEKA发布以来,这一范畴现已在强壮的结构方面得到了广泛的开展,如auto-sklearn、autokeras、NASLib、Auto-PyTorch、TPOT、Optuna、AutoGluon和Ray(tune)。这些结构跨越各种编程言语,适用于各种机器学习使命。更现代的AutoML进步现已运用了神经结构查找技能,以包含ML管道的广泛部分,包含图画、视频和音频等非结构化数据类型。谷歌AutoML、Azure AutoML和H2O的产品是这场革命的前沿,供给了将机器学习可拜访性扩展到逾越专业数据科学家的个人的才能。

这些现代处理方案能够娴熟处理表格和时刻序列等结构化格局。经过进行精心规划的超参数查找,它们的功用能够到达或乃至超过手动干涉。像PyCaret这样的结构经过最小的代码一起练习多个模型,一起经过专门的项目(例如Nixtla的StatsForecast和MLForecast)专心于时刻序列数据。

AutoML结构的特征是多方面的:它们供给布置才能,其间某些处理方案支撑直接生产嵌入,尤其是基于云的处理方案;其他处理方案需求导出为与TensorFlow等渠道兼容的格局。处理的数据类型的多样性是另一个方面,会集重视表格数据集以及服务于各种数据类型的深度学习结构。一些结构着重解说性作为一个重要功用,特别是在触及到法规或可靠性的职业,如医疗保健和金融。在布置后进行监控是另一个操作功用,以保证随时刻持续的模型功用。

虽然近年来获得了进展,用户仍然面临与这些主动化体系相关的典型缺陷。“黑匣子”情景经常呈现,难以了解内部作业原理,这或许阻碍对AutoML模型中问题的调试。此外,虽然它们经过节省时刻和推动ML实践的民主化在没有广泛经历的人中使机器学习更易于拜访,但由于使命的固有杂乱性,它们在主动化ML使命方面的功效或许会受到约束。

跟着LLMs的加入,AutoML焕发了重生,由于它们为诸如特征选择、模型练习和超参数调整等使命带来了主动化。对隐私的影响是可观的;运用生成模型的AutoML体系能够创立组成数据,削减对个人数据存储库的依赖。在安全性方面,主动体系有必要规划具有故障安全机制,以防止过错在ML作业流的连续层之间传播。AutoML经过LLM集成供给的灵活性经过使非专业人士能够完成专业级其他模型调整,进步了竞赛功用。

就易用性而言,虽然带有集成LLMs的AutoML为模型开发流程供给了简化的界面,但用户仍然需求面对有关模型选择和评估的杂乱选择。

正如咱们将在接下来的几节中看到的,LLMs和东西能够明显加快数据科学作业流程,削减手动作业量,并开辟新的剖析机会。正如咱们在Jupyter AI(Jupyternaut chat)中看到的 – 以及在第6章,运用生成AI开发软件中看到的 – 运用生成AI(代码LLMs)创立软件能够经过进步功率来获得杰出的起点。这是咱们研讨在数据科学中运用生成AI的实践部分的好的起点。让咱们开始运用署理运转代码或调用其他东西来答复问题!

运用署理答复数据科学问题

运用相似LLMMathChain的东西能够履行Python以答复核算查询。咱们之前现已见过不同的署理和东西。

例如,经过衔接LLMs和东西,能够轻松核算数学幂并获得成果:

from langchain import OpenAI, LLMMathChain
llm = OpenAI(temperature=0)
llm_math = LLMMathChain.from_llm(llm, verbose=True)
llm_math.run("What is 2 raised to the 10th power?")

咱们应该看到相似于以下的输出:

> Entering new LLMMathChain chain...
What is 2 raised to the 10th power?
2**10
numexpr.evaluate("2**10")
Answer: 1024
> Finished chain.
[2]:'Answer: 1024'

虽然这些功用拿手供给直接的数值答案,但将其整合到传统的EDA作业流程中并不那么直接。其他链,如CPAL(CPALChain)和PAL(PALChain),能够处理更杂乱的推理应战,减轻生成模型发生不切实践内容的危险;但是,在实践世界中的实践运用仍然难以找到。

运用PythonREPLTool,咱们能够创立玩具数据的简略可视化或运用组成数据进行练习,这关于阐明或启动项目或许很好。这是LangChain文档中的一个示例:

from langchain.agents.agent_toolkits import create_python_agent
from langchain.tools.python.tool import PythonREPLTool
from langchain.llms.openai import OpenAI
from langchain.agents.agent_types import AgentType
agent_executor = create_python_agent(
    llm=OpenAI(temperature=0, max_tokens=1000),
    tool=PythonREPLTool(),
    verbose=True,
    agent_type=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
)
agent_executor.run(
    """Understand, write a single neuron neural network in PyTorch.
Take synthetic data for y=2x. Train for 1000 epochs and print every 100 epochs.
Return prediction for x = 5"""
)

这演示了运用PyTorch构建单神经元神经网络,运用组成数据进行练习并进行猜测 – 这些都是直接在用户的核算机上履行的。但是,要小心履行没有保障的Python代码或许存在的安全危险。

咱们得到了以下输出,其间包含一次猜测:

Entering new AgentExecutor chain...
I need to write a neural network in PyTorch and train it on the given data
Action: Python_REPL
Action Input:
import torch
model = torch.nn.Sequential(
    torch.nn.Linear(1, 1)
)
loss_fn = torch.nn.MSELoss()
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)
# Define the data
x_data = torch.tensor([[1.0], [2.0], [3.0], [4.0]])
y_data = torch.tensor([[2.0], [4.0], [6.0], [8.0]])
for epoch in range(1000):  # Train the model
    y_pred = model(x_data)
    loss = loss_fn(y_pred, y_data)
    if (epoch+1) % 100 == 0:
        print(f'Epoch {epoch+1}: {loss.item():.4f}')
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()
# Make a prediction
x_pred = torch.tensor([[5.0]])
y_pred = model(x_pred)
Observation: Epoch 100: 0.0043
Epoch 200: 0.0023
Epoch 300: 0.0013
Epoch 400: 0.0007
Epoch 500: 0.0004
Epoch 600: 0.0002
Epoch 700: 0.0001
Epoch 800: 0.0001
Epoch 900: 0.0000
Epoch 1000: 0.0000
Thought: I now know the final answer
Final Answer: The prediction for x = 5 is y = 10.00.

经过迭代练习显现在冗长的日志中,用户能够见证在时期内损失的逐渐削减,直到到达满意的猜测为止。虽然这展现了神经网络怎么随时刻学习和猜测,但在实践中扩展这种办法需求更杂乱的工程作业。

LLMs和东西能够在咱们想要运用类别或地理信息丰厚数据时发挥效果。例如,假如咱们的公司供给从东京飞往其他城市的航班,咱们想要知道客户与东京的间隔,咱们能够运用WolframAlpha作为东西。这是一个简略的示例:

from langchain.agents import load_tools, initialize_agent
from langchain.llms import OpenAI
from langchain.chains.conversation.memory import ConversationBufferMemory
llm = OpenAI(temperature=0)
tools = load_tools(['wolfram-alpha'])
memory = ConversationBufferMemory(memory_key="chat_history")
agent = initialize_agent(tools, llm, agent="conversational-react-description", memory=memory, verbose=True)
agent.run(
    """How far are these cities to Tokyo?
* New York City
* Madrid, Spain
* Berlin
""")

请保证您已设置了OPENAI_API_KEY和WOLFRAM_ALPHA_APPID环境变量,如第3章“开始运用LangChain”中所评论的。这是输出:

> Entering new AgentExecutor chain...
AI: The distance from New York City to Tokyo is 6760 miles. The distance from Madrid, Spain to Tokyo is 8,845 miles. The distance from Berlin, Germany to Tokyo is 6,845 miles.
> Finished chain.
'
The distance from New York City to Tokyo is 6760 miles. The distance from 
Madrid, Spain to Tokyo is 8,845 miles. The distance from Berlin, Germany to Tokyo is 6,845 miles.

经过将LLMs与WolframAlpha等外部东西结合运用,能够履行更具应战性的数据丰厚操作,例如核算城市之间的间隔,比方从东京到纽约,马德里或柏林。这样的集成能够极大地进步用于各种事务运用中的数据集的实用性。但是,这些示例处理相对简略的查询;在较大规划上布置这样的完成需求更广泛的工程战略,超出了上述评论的规划。

但是,咱们能够向署理供给数据集,这就是当咱们衔接更多东西时能够变得十分强壮的地方。让咱们问询并答复有关结构化数据集的问题!

LLMs(大型言语模型)在数据探究中的运用

数据探究是数据剖析中至关重要且基础的进程,使研讨人员能够全面了解其数据集并发现重要的见地。跟着像ChatGPT这样的LLMs的呈现,研讨人员能够运用自然言语处理的才能来促进数据探究。

正如咱们之前说到的,诸如ChatGPT之类的生成式AI模型具有了解和生成相似人类呼应的才能,使它们成为增强研讨生产力的有价值的东西。以自然言语发问并以易消化的办法获得答复,能够极大地推动剖析作业。

LLMs能够帮忙探究文本数据以及其他形式的数据,如数值数据集或多媒体内容。研讨人员能够运用ChatGPT的功用提出关于数值数据会集核算趋势的问题,乃至能够查询用于图画分类使命的可视化效果。

让咱们加载一个数据集并进行操作。咱们能够从scikit-learn快速获取一个数据集:

pythonCopy code
from sklearn.datasets import load_iris
df = load_iris(as_frame=True)["data"]

鸢尾花数据集是众所周知的玩具数据集,但它将帮忙咱们阐明运用生成式AI进行数据探究的才能。在以下示例中,咱们将运用一个DataFrame。咱们现在能够创立一个pandas DataFrame署理,看看用生成式AI履行简略使命有多简略!

pythonCopy code
from langchain.agents import create_pandas_dataframe_agent
from langchain import PromptTemplate
from langchain.llms.openai import OpenAI
PROMPT = (
    "If you do not know the answer, say you don't know.n"
    "Think step by step.n"
    "n"
    "Below is the query.n"
    "Query: {query}n"
)
prompt = PromptTemplate(template=PROMPT, input_variables=["query"])
llm = OpenAI()
agent = create_pandas_dataframe_agent(llm, df, verbose=True)

我现已包含了一些指示模型表达不确定性并遵从逐渐考虑进程的指示,目的是削减虚构信息。现在咱们能够针对DataFrame查询咱们的署理:

pythonCopy code
agent.run(prompt.format(query="What's this dataset about?"))

咱们得到了答复“This dataset is about the measurements of some type of flower”(这个数据集是关于某种类型的花的测量),这是正确的。

让咱们展现怎么获得一个可视化图:

pythonCopy code
agent.run(prompt.format(query="Plot each column as a barplot!"))

这是制作的图表:

运用LangChain的生成式AI——数据科学中的LLMs

这个图表并不完美。输出或许会有些扎手,这取决于llm模型参数和指示。在这种状况下,我运用了df.plot.bar(rot=0, subplots=True)。咱们或许想要引进更多的调整,例如面板之间的距离、字体大小或图例的放置,以使其看起来更美丽。

咱们还能够要求以可视办法查看列的散布,这将为咱们供给这个整齐的图表:

运用LangChain的生成式AI——数据科学中的LLMs

咱们能够要求图表运用其他绘图后端,比方Seaborn;但是请注意,这些有必要已装置。

咱们还能够问关于数据集的更多问题,比方哪一行在花瓣长度和花瓣宽度之间的差异最大。咱们得到了答案,中心进程如下(缩短):

df['difference'] = df['petal length (cm)'] - df['petal width (cm)']
df.loc[df['difference'].idxmax()]

调查:sepal length (cm) 7.7,sepal width (cm) 2.8,petal length (cm) 6.7,petal width (cm) 2.0,difference 4.7

考虑:我现在知道终究答案

终究答案:第122行花瓣长度和花瓣宽度之间的差异最大。

我以为这值得称赞,LLM!

咱们能够经过在提示中增加更多关于绘图的指示,比方绘图的大小,来扩展这个比方。

在Streamlit运用程序中完成相同的绘图逻辑有点困难,由于咱们需求运用相应的Streamlit函数中的绘图功用,例如st.bar_chart()。但是,这也是可行的。你能够在Streamlit博客(运用ChatGPT构建Streamlit和scikit-learn运用程序)中找到有关此内容的解说。

关于核算测验呢?

agent.run(prompt.format(query="Validate the following hypothesis statistically: petal width and petal length come from the same distribution."))

咱们得到这个答复:

Thought: 我应该运用核算测验来答复这个问题。
Action: python_repl_ast
Action Input: from scipy.stats import ks_2samp
Observation:
Thought: 我现在有答复这个问题所需的东西。
Action: python_repl_ast
Action Input: ks_2samp(df['petal width (cm)'], df['petal length (cm)'])
Observation: KstestResult(statistic=0.6666666666666666, pvalue=6.639808432803654e-32, statistic_location=2.5, statistic_sign=1)
Thought: 我现在知道终究答案
Final Answer: p值为6.639808432803654e-32表明这两个变量来自不同的散布。

这查看了核算测验!咱们能够用简略的英语提示向数据集提出关于数据的杂乱问题。

还有PandasAI库,它在暗地运用LangChain并供给相似的功用。这是文档中的一个比方,其间包含一个示例数据集:

import pandas as pd
from pandasai.llm import OpenAI
from pandasai.schemas.df_config import Config
from pandasai import SmartDataframe
df = pd.DataFrame({
    "country": ["United States", "United Kingdom", "France", "Germany", "Italy", "Spain", "Canada", "Australia", "Japan", "China"],
    "gdp": [19294482071552, 2891615567872, 2411255037952, 3435817336832, 1745433788416, 1181205135360, 1607402389504, 1490967855104, 4380756541440, 14631844184064],
    "happiness_index": [6.94, 7.16, 6.66, 7.07, 6.38, 6.4, 7.23, 7.22, 5.87, 5.12]
})
smart_df = SmartDataframe(df, config=Config(llm=OpenAI()))
print(smart_df.chat("Which are the 5 happiest countries?"))

这将给咱们供给相似于之前直接运用LangChain时所得到的成果。请注意,PandasAI不是本书的设置的一部分,因而假如想要运用它,您有必要单独装置它。

关于SQL数据库中的数据,咱们能够运用SQLDatabaseChain进行衔接。LangChain文档显现了这个比方:

from langchain.llms import OpenAI
from langchain.utilities import SQLDatabase
from langchain_experimental.sql import SQLDatabaseChain
db = SQLDatabase.from_uri("sqlite:///../../../../notebooks/Chinook.db")
llm = OpenAI(temperature=0, verbose=True)
db_chain = SQLDatabaseChain.from_llm(llm, db, verbose=True)
db_chain.run("How many employees are there?")

咱们首要衔接到数据库。然后,咱们能够用自然言语问关于数据的问题。这在咱们不了解数据库形式时特别有用。假如设置了use_query_checker选项,SQLDatabaseChain还能够查看查询并在SQL语句中发生语法过错时主动更正。

经过依照上述进程,咱们现已运用了LLMs在数据探究中令人形象深入的自然言语处理才能。经过加载一个数据集,比方来自scikit-learn的Iris数据集,咱们能够运用一个由LLM支撑的署理来以易于了解的日常言语查询有关数据的具体信息。创立了一个pandas DataFrame署理,使得进行简略的剖析使命和可视化恳求变得简略,展现了AI生成图表和特定数据洞悉的才能。

咱们不只能够口头问询数据集的性质,还能够指令署理生成可视化表示,如EDA的条形图和箱线图。虽然这些可视化或许需求额定的微调以进行美化,但它们为剖析奠定了基础。当深化研讨更微妙的恳求,比方辨认两个数据属性之间的差异时,署理巧妙地增加了新列,并找到了相关的数值差异,显现了其在得出可行性定论方面的实用性。

咱们的努力不只限于静态数据集,还扩展到动态的SQL数据库,LLM能够主动生成查询,乃至在对SQL语句的语法过错进行主动更正时供给帮忙。在形式不熟悉的状况下,这种功用尤为出色。

总结

本章首要对AutoML结构进行了审视,突显了这些体系对整个数据科学流程的价值,从数据预备到模型布置的每个阶段都能供给便当。然后,咱们考虑了LLMs集成怎么进一步进步生产力,并使数据科学对技能和非技能关连人员愈加易于触摸。

深化研讨代码生成,咱们发现与软件开发存在相似之处,正如第6章“运用生成式AI开发软件”中所评论的,调查LLMs生成的东西和函数怎么呼应查询或经过增强技能增强数据集。这包含运用像WolframAlpha这样的第三方东西,将外部数据点增加到现有数据会集。咱们的探究然后转向了运用LLMs进行数据探究,建立在第4章“构建强壮的助手”中具体介绍的摄取和剖析很多文本数据的技能基础上,那一章重视于问答。在这里,咱们的要点转向了结构化数据集,研讨了怎么经过LLM支撑的探究性进程有效地剖析SQL数据库或表格信息。

总结咱们的探究,很明显,诸如ChatGPT插件和Microsoft Fabric等渠道所展现的人工智能技能具有数据剖析的变革潜力。但是,虽然经过这些人工智能东西使数据科学家的作业变得愈加便捷和高效获得了明显进展,但当时的人工智能技能水平还未到达能够代替人类专家的程度,而是增强了他们的才能并拓宽了他们的剖析东西集。

在下一章中,咱们将专心于经过提示和微调来改进LLMs功用的条件技能。