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

AI数据可视化的未来

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

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]删除
最新教程 更多>
  • 如何使用“ JSON”软件包解析JSON阵列?
    如何使用“ JSON”软件包解析JSON阵列?
    parsing JSON与JSON软件包 QUALDALS:考虑以下go代码:字符串 } func main(){ datajson:=`[“ 1”,“ 2”,“ 3”]`` arr:= jsontype {} 摘要:= = json.unmarshal([] byte(...
    编程 发布于2025-07-12
  • Go web应用何时关闭数据库连接?
    Go web应用何时关闭数据库连接?
    在GO Web Applications中管理数据库连接很少,考虑以下简化的web应用程序代码:出现的问题:何时应在DB连接上调用Close()方法?,该特定方案将自动关闭程序时,该程序将在EXITS EXITS EXITS出现时自动关闭。但是,其他考虑因素可能保证手动处理。选项1:隐式关闭终止数...
    编程 发布于2025-07-12
  • 为什么PYTZ最初显示出意外的时区偏移?
    为什么PYTZ最初显示出意外的时区偏移?
    与pytz 最初从pytz获得特定的偏移。例如,亚洲/hong_kong最初显示一个七个小时37分钟的偏移: 差异源利用本地化将时区分配给日期,使用了适当的时区名称和偏移量。但是,直接使用DateTime构造器分配时区不允许进行正确的调整。 example pytz.timezone(...
    编程 发布于2025-07-12
  • 如何在GO编译器中自定义编译优化?
    如何在GO编译器中自定义编译优化?
    在GO编译器中自定义编译优化 GO中的默认编译过程遵循特定的优化策略。 However, users may need to adjust these optimizations for specific requirements.Optimization Control in Go Compi...
    编程 发布于2025-07-12
  • 为什么PHP的DateTime :: Modify('+1个月')会产生意外的结果?
    为什么PHP的DateTime :: Modify('+1个月')会产生意外的结果?
    使用php dateTime修改月份:发现预期的行为在使用PHP的DateTime类时,添加或减去几个月可能并不总是会产生预期的结果。正如文档所警告的那样,“当心”这些操作的“不像看起来那样直观。 ; $ date->修改('1个月'); //前进1个月 echo $ date->...
    编程 发布于2025-07-12
  • 如何在Java中正确显示“ DD/MM/YYYY HH:MM:SS.SS”格式的当前日期和时间?
    如何在Java中正确显示“ DD/MM/YYYY HH:MM:SS.SS”格式的当前日期和时间?
    如何在“ dd/mm/yyyy hh:mm:mm:ss.ss”格式“ gormat 解决方案: args)抛出异常{ 日历cal = calendar.getInstance(); SimpleDateFormat SDF =新的SimpleDateFormat(“...
    编程 发布于2025-07-12
  • 在UTF8 MySQL表中正确将Latin1字符转换为UTF8的方法
    在UTF8 MySQL表中正确将Latin1字符转换为UTF8的方法
    在UTF8表中将latin1字符转换为utf8 ,您遇到了一个问题,其中含义的字符(例如,“jáuòiñe”)在utf8 table tabled tablesset中被extect(例如,“致电。为了解决此问题,您正在尝试使用“ mb_convert_encoding”和“ iconv”转换受...
    编程 发布于2025-07-12
  • 您可以使用CSS在Chrome和Firefox中染色控制台输出吗?
    您可以使用CSS在Chrome和Firefox中染色控制台输出吗?
    在javascript console 中显示颜色是可以使用chrome的控制台显示彩色文本,例如红色的redors,for for for for错误消息?回答是的,可以使用CSS将颜色添加到Chrome和Firefox中的控制台显示的消息(版本31或更高版本)中。要实现这一目标,请使用以下模...
    编程 发布于2025-07-12
  • 如何使用node-mysql在单个查询中执行多个SQL语句?
    如何使用node-mysql在单个查询中执行多个SQL语句?
    Multi-Statement Query Support in Node-MySQLIn Node.js, the question arises when executing multiple SQL statements in a single query using the node-mys...
    编程 发布于2025-07-12
  • 为什么使用固定定位时,为什么具有100%网格板柱的网格超越身体?
    为什么使用固定定位时,为什么具有100%网格板柱的网格超越身体?
    网格超过身体,用100%grid-template-columns 为什么在grid-template-colms中具有100%的显示器,当位置设置为设置的位置时,grid-template-colly修复了?问题: 考虑以下CSS和html: class =“ snippet-code”> g...
    编程 发布于2025-07-12
  • 在Python中如何创建动态变量?
    在Python中如何创建动态变量?
    在Python 中,动态创建变量的功能可以是一种强大的工具,尤其是在使用复杂的数据结构或算法时,Dynamic Variable Creation的动态变量创建。 Python提供了几种创造性的方法来实现这一目标。利用dictionaries 一种有效的方法是利用字典。字典允许您动态创建密钥并分...
    编程 发布于2025-07-12
  • 如何实时捕获和流媒体以进行聊天机器人命令执行?
    如何实时捕获和流媒体以进行聊天机器人命令执行?
    在开发能够执行命令的chatbots的领域中,实时从命令执行实时捕获Stdout,一个常见的需求是能够检索和显示标准输出(stdout)在cath cath cant cant cant cant cant cant cant cant interfaces in Chate cant inter...
    编程 发布于2025-07-12
  • 在细胞编辑后,如何维护自定义的JTable细胞渲染?
    在细胞编辑后,如何维护自定义的JTable细胞渲染?
    在JTable中维护jtable单元格渲染后,在JTable中,在JTable中实现自定义单元格渲染和编辑功能可以增强用户体验。但是,至关重要的是要确保即使在编辑操作后也保留所需的格式。在设置用于格式化“价格”列的“价格”列,用户遇到的数字格式丢失的“价格”列的“价格”之后,问题在设置自定义单元格...
    编程 发布于2025-07-12
  • 为什么我在Silverlight Linq查询中获得“无法找到查询模式的实现”错误?
    为什么我在Silverlight Linq查询中获得“无法找到查询模式的实现”错误?
    查询模式实现缺失:解决“无法找到”错误在银光应用程序中,尝试使用LINQ建立错误的数据库连接的尝试,无法找到以查询模式的实现。”当省略LINQ名称空间或查询类型缺少IEnumerable 实现时,通常会发生此错误。 解决问题来验证该类型的质量是至关重要的。在此特定实例中,tblpersoon可能需...
    编程 发布于2025-07-12

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

Copyright© 2022 湘ICP备2022001581号-3