”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > AI数据可视化的未来

AI数据可视化的未来

发布于2024-11-04
浏览:514

The future of AI data visualization

自从法学硕士出现以来,第一个用例/演示就是数据分析。现阶段,我们大多数人已经使用 ChatGPT、Claude 或其他一些人工智能来生成图表,但感觉人工智能在数据可视化中所扮演的角色仍然没有定论。我们会继续默认使用点击式图表吗? AI 会生成 100% 的图表吗?或者是未来的混合体,混合一些人工智能生成和一些点击?

作为人工智能和数据可视化领域的创始人,我发现这个话题几乎是存在的。成立于 2022 年后(即法学硕士真正进入现场后),我们必须决定如何处理图表。我们是否会投入大量的开发工作(和资金)来开发图表功能,或者这种情况会消失并成为法学硕士之前构建的所有工具的沉没成本吗?或者说未来是混合动力?我最近遇到了 Data Formulator,一个研究项目,它探索了人工智能和传统图表之间的一些非常有趣的交互,这让我重新认识了这个问题。

在这篇文章中,我将看看我们今天在文本到图表(或文本到可视化)方面的进展以及我们未来的发展方向。

文本到可视化的现状

就像所有人工智能领域一样,这篇文章可能不会过时。一些新的信息或模型将在未来 6 个月内出现,并彻底改变我们对此主题的看法。尽管如此,让我们来看看数据可视化和人工智能的各种状态。

纯粹的点击式图表

我不会在这一点上停留太多,因为大多数读者都很了解这一点。打开 Excel、Google Sheets 或 2023 年之前构建的任何其他数据工具,您将获得某种形式的数据。有时您单击将数据添加到轴,有时您拖放字段,但概念是相同的:适当地构建数据,然后按几个按钮生成图表。

在这种范例中,绝大多数数据清理和转换发生在绘制图表之前。您通常可以应用平均值、中位数、计数、最小值、最大值等聚合指标,但所有转换都相当初级。

100% AI 生成图表

人工智能生成的图表,或文本到可视化,自现代法学硕士出现以来才真正存在(如果我们深入研究,在那之前就已经有实验正在进行,但出于所有实际目的,我们可以专注于 2022 年后)法学硕士)。

OpenAI 的 ChatGPT 可以使用 Python 生成非交互式图表,或使用前端库生成一组有限的交互式图表(有关一些示例,请参阅 OpenAI Canvas)。与 OpenAI 的所有事物一样,Anthropic 有自己的类似概念并有 Artifacts。

这里值得注意的是,AI 生成的图表可以细分为两个系列:纯 Pythonic/后端生成的图表或后端和前端的混合。

ChatGPT 和 Claude 两者交替进行。训练人工智能来生成前端代码,并集成该前端代码来创建可视化,比仅仅依赖 Python、使用诸如plotly、matplotlib、seaborn 之类的库需要做更多的工作。另一方面,前端库使提供商和用户能够更好地控制图表的外观和感觉以及交互性。这就是为什么 LLM 提供商让 AI 生成基本图表(如条形图、折线图或散点图),但任何更复杂的图表(如桑基图或瀑布图)都会回归到 Python。

Fabi.ai 上的简短侧边栏:鉴于我们是一个数据分析平台,我们显然提供图表,尽管有一些点击式图表,但我们用户创建的绝大多数图表都是人工智能生成的。到目前为止,我们发现人工智能非常擅长生成图表,并且通过利用纯 Python 来绘制图表,我们已经能够训练人工智能生成几乎任何用户可以想象的图表。到目前为止,我们选择了准确性和灵活性,而不是点击功能和自定义 UI 设计。
混合:点击式范例中的人工智能生成
这就是关于人工智能文本到可视化的发展方向的争论开始变得有趣的地方。快进3年后,当有人在做分析时,如果他们使用AI,他们会让AI获得100%的控制权,还是会在混合环境中使用AI,只能在有限的范围内编辑图表?某些点击功能。

为了使这张图更加具体,请查看 Data Formulator。这是一个最近的研究项目,试图提供一个真正的混合环境,其中人工智能可以进行某些编辑,但用户可以根据需要接管并使用点击功能。

如果我们用汽车比喻来问这个问题:你相信未来的汽车不会有方向盘,还是你相信会有一个司机必须坐在那里集中注意力,偶尔采取行动结束了,类似于特斯拉自动驾驶功能目前的工作原理?

第一原则:我相信什么是真实的

事情的发展方向这个问题对 Fabi.ai 的我们来说非常重要,因为这可能会极大地影响我们做出的某些决策:我们是否投资在前端集成图表库?我们是否还在为点击功能而烦恼?作为一家在人工智能数据分析领域处于领先地位的成长型创新公司,我们需要考虑冰球的去向,而不是它目前所在的位置。

所以为了回答这个问题,我将使用一些第一性原理思维。

人工智能只会变得更好、更快、更便宜

从我第一次使用人工智能并且围绕速度和成本的抱怨开始,我就相信人工智能将继续变得更好、更快、更便宜。粗略地说,过去几年每个代币的成本每年下降 87%。不仅成本下降了,而且准确性和速度也大幅提高。

在接下来的 10 年里,我们将像回顾 80 年代和 90 年代的“超级计算机”一样回顾 2024 年的法学硕士,因为我们无论走到哪里,口袋里都装着超级计算机。

总而言之,任何支持或反对上述各种图表方法的论据都不能是人工智能生成图表太慢、太昂贵或不准确。换句话说,要相信点击式图表仍然以任何方式、形状或形式存在,您必须相信用户体验或用例中存在某些值得该功能的东西。

数据可视化的难点在于数据整理和清理

根据我的经验,在进行任何形式的涉及可视化的数据分析时,困难的部分不是图表。困难的部分是清理数据并以正确的格式准备好我要创建的图表。

假设我有一些具有以下字段的用户事件数据:

  • 事件 ID
  • 事件开始时间戳
  • 事件结束时间戳

现在假设我想按小时绘制平均事件持续时间来测量延迟。在我可以在电子表格或旧版图表工具中进行任何类型的图表之前,我必须:

  1. 计算结束时间减去开始时间(我可能必须先进行某种格式化)
  2. 按小时透视数据,这实际上很难做到

但是要求人工智能做到这一点,它会在一两秒内处理所有这些和图表:

# Calculate the event duration in hours
df['Event duration (hours)'] = (df['Event end datetime'] - df['Event start datetime']).dt.total_seconds() / 3600

# Extract the start hour from the start datetime
df['Start hour'] = df['Event start datetime'].dt.hour

# Group by start hour and calculate the average duration
average_duration_by_hour = df.groupby('Start hour')['Event duration (hours)'].mean().reset_index()

# Plot using Plotly
fig = px.bar(
    average_duration_by_hour, 
    x='Start hour', 
    y='Event duration (hours)',
    title='Average Event Duration by Hour',
    labels={'Event duration (hours)': 'Average Duration (hours)', 'Start hour': 'Hour of Day'},
    text='Event duration (hours)'
)

# Show the figure
fig.show()

这是最简单的例子之一。大多数时候,现实世界的数据要复杂得多。

AI 文本到可视化的未来:100% AI 生成的点击操作

此时,您可能已经知道我的倾向了。只要你能让你的数据集大致正确地包含分析所需的所有数据,人工智能就已经在操纵它并在眨眼之间绘制图表方面做得非常好。快进一年、两年或三年后,很难想象这不会成为标准。

也就是说,出现了一些有趣的混合方法,例如 Data Formulator。这种方法的理由是,也许我们的手和大脑能够更快地做出调整,而不是我们思考我们想要什么并足够清楚地解释它以便人工智能完成其工作。如果我询问“显示过去 12 个月内按月的总销售额”,并假设这应该是按地区划分的堆积条形图,我们可能会发现移动鼠标更容易。如果是这样的话,混合方法可能是最有趣的:让人工智能先尝试一下,然后点击几下,你就得到了你想要的东西。

无论是完整的人工智能方法还是混合方法,成功的关键在于用户体验。特别是对于混合方法,人工智能和人类交互必须完美地协同工作,并且对用户来说非常直观。

我很高兴看到这个领域的发展以及我们在未来 12 个月内文本到可视化的发展方向。

版本声明 本文转载于:https://dev.to/mfdupuis/the-future-of-ai-data-visualization-56oe?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 如何使用Python有效地以相反顺序读取大型文件?
    如何使用Python有效地以相反顺序读取大型文件?
    在python 反向行读取器生成器 == ord('\ n'): 缓冲区=缓冲区[:-1] 剩余_size- = buf_size lines = buffer.split('\ n'....
    编程 发布于2025-04-09
  • 版本5.6.5之前,使用current_timestamp与时间戳列的current_timestamp与时间戳列有什么限制?
    版本5.6.5之前,使用current_timestamp与时间戳列的current_timestamp与时间戳列有什么限制?
    在时间戳列上使用current_timestamp或MySQL版本中的current_timestamp或在5.6.5 此限制源于遗留实现的关注,这些限制需要对当前的_timestamp功能进行特定的实现。 创建表`foo`( `Productid` int(10)unsigned not n...
    编程 发布于2025-04-09
  • PHP阵列键值异常:了解07和08的好奇情况
    PHP阵列键值异常:了解07和08的好奇情况
    PHP数组键值问题,使用07&08 在给定数月的数组中,键值07和08呈现令人困惑的行为时,就会出现一个不寻常的问题。运行print_r($月)返回意外结果:键“ 07”丢失,而键“ 08”分配给了9月的值。此问题源于PHP对领先零的解释。当一个数字带有0(例如07或08)的前缀时,PHP将其...
    编程 发布于2025-04-09
  • 如何干净地删除匿名JavaScript事件处理程序?
    如何干净地删除匿名JavaScript事件处理程序?
    删除匿名事件侦听器将匿名事件侦听器添加到元素中会提供灵活性和简单性,但是当要删除它们时,可以构成挑战,而无需替换元素本身就可以替换一个问题。 element? element.addeventlistener(event,function(){/在这里工作/},false); 要解决此问题,请考虑...
    编程 发布于2025-04-09
  • 如何在Java中执行命令提示命令,包括目录更改,包括目录更改?
    如何在Java中执行命令提示命令,包括目录更改,包括目录更改?
    在java 通过Java通过Java运行命令命令可能很具有挑战性。尽管您可能会找到打开命令提示符的代码段,但他们通常缺乏更改目录并执行其他命令的能力。 solution:使用Java使用Java,使用processBuilder。这种方法允许您:启动一个过程,然后将其标准错误重定向到其标准输出。...
    编程 发布于2025-04-09
  • 对象拟合:IE和Edge中的封面失败,如何修复?
    对象拟合:IE和Edge中的封面失败,如何修复?
    To resolve this issue, we employ a clever CSS solution that solves the problem:position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%)...
    编程 发布于2025-04-09
  • 如何使用组在MySQL中旋转数据?
    如何使用组在MySQL中旋转数据?
    在关系数据库中使用mySQL组使用mySQL组进行查询结果,在关系数据库中使用MySQL组,转移数据的数据是指重新排列的行和列的重排以增强数据可视化。在这里,我们面对一个共同的挑战:使用组的组将数据从基于行的基于列的转换为基于列。 Let's consider the following ...
    编程 发布于2025-04-09
  • 为什么尽管有效代码,为什么在PHP中捕获输入?
    为什么尽管有效代码,为什么在PHP中捕获输入?
    在php ;?>" method="post">The intention is to capture the input from the text box and display it when the submit button is clicked.但是,输出...
    编程 发布于2025-04-09
  • 如何使用替换指令在GO MOD中解析模块路径差异?
    如何使用替换指令在GO MOD中解析模块路径差异?
    在使用GO MOD时,在GO MOD 中克服模块路径差异时,可能会遇到冲突,其中3个Party Package将另一个PAXPANCE带有导入式套件之间的另一个软件包,并在导入式套件之间导入另一个软件包。如回声消息所证明的那样: go.etcd.io/bbolt [&&&&&&&&&&&&&&&&...
    编程 发布于2025-04-09
  • 如何在其容器中为DIV创建平滑的左右CSS动画?
    如何在其容器中为DIV创建平滑的左右CSS动画?
    通用CSS动画,用于左右运动 ,我们将探索创建一个通用的CSS动画,以向左和右移动DIV,从而到达其容器的边缘。该动画可以应用于具有绝对定位的任何div,无论其未知长度如何。问题:使用左直接导致瞬时消失 更加流畅的解决方案:混合转换和左 [并实现平稳的,线性的运动,我们介绍了线性的转换。这...
    编程 发布于2025-04-09
  • 如何从Google API中检索最新的jQuery库?
    如何从Google API中检索最新的jQuery库?
    从Google APIS 问题中提供的jQuery URL是版本1.2.6。对于检索最新版本,以前有一种使用特定版本编号的替代方法,它是使用以下语法:获取最新版本:未压缩)While these legacy URLs still remain in use, it is recommended ...
    编程 发布于2025-04-09
  • 如何配置Pytesseract以使用数字输出的单位数字识别?
    如何配置Pytesseract以使用数字输出的单位数字识别?
    Pytesseract OCR具有单位数字识别和仅数字约束 在pytesseract的上下文中,在配置tesseract以识别单位数字和限制单个数字和限制输出对数字可能会提出质疑。 To address this issue, we delve into the specifics of Te...
    编程 发布于2025-04-09
  • 如何解决由于Android的内容安全策略而拒绝加载脚本... \”错误?
    如何解决由于Android的内容安全策略而拒绝加载脚本... \”错误?
    Unveiling the Mystery: Content Security Policy Directive ErrorsEncountering the enigmatic error "Refused to load the script..." when deployi...
    编程 发布于2025-04-09
  • HTML格式标签
    HTML格式标签
    HTML 格式化元素 **HTML Formatting is a process of formatting text for better look and feel. HTML provides us ability to format text without us...
    编程 发布于2025-04-09
  • 如何将来自三个MySQL表的数据组合到新表中?
    如何将来自三个MySQL表的数据组合到新表中?
    mysql:从三个表和列的新表创建新表 答案:为了实现这一目标,您可以利用一个3-way Join。 选择p。*,d.content作为年龄 来自人为p的人 加入d.person_id = p.id上的d的详细信息 加入T.Id = d.detail_id的分类法 其中t.taxonomy =...
    编程 发布于2025-04-09

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3