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

AI数据可视化的未来

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

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]删除
最新教程 更多>
  • 如何防止 Pandas 在保存 CSV 时添加索引列?
    如何防止 Pandas 在保存 CSV 时添加索引列?
    避免使用 Pandas 保存的 CSV 中的索引列使用 Pandas 进行修改后保存 csv 文件时,默认行为是包含索引列。为了避免这种情况,可以在使用 to_csv() 方法时将索引参数设置为 False。为了详细说明,请考虑以下命令序列:pd.read_csv('C:/Path/to/file....
    编程 发布于2024-11-09
  • 除了“if”语句之外:还有哪些地方可以在不进行强制转换的情况下使用具有显式“bool”转换的类型?
    除了“if”语句之外:还有哪些地方可以在不进行强制转换的情况下使用具有显式“bool”转换的类型?
    无需强制转换即可上下文转换为 bool您的类定义了对 bool 的显式转换,使您能够在条件语句中直接使用其实例“t”。然而,这种显式转换提出了一个问题:“t”在哪里可以在不进行强制转换的情况下用作 bool?上下文转换场景C 标准指定了四种值可以根据上下文转换为 bool 的主要场景:语句:if、w...
    编程 发布于2024-11-09
  • 大批
    大批
    方法是可以在对象上调用的 fns 数组是对象,因此它们在 JS 中也有方法。 slice(begin):将数组的一部分提取到新数组中,而不改变原始数组。 let arr = ['a','b','c','d','e']; // Usecase: Extract till index p...
    编程 发布于2024-11-09
  • 在 Go 中使用 WebSocket 进行实时通信
    在 Go 中使用 WebSocket 进行实时通信
    构建需要实时更新的应用程序(例如聊天应用程序、实时通知或协作工具)需要一种比传统 HTTP 更快、更具交互性的通信方法。这就是 WebSockets 发挥作用的地方!今天,我们将探讨如何在 Go 中使用 WebSocket,以便您可以向应用程序添加实时功能。 在这篇文章中,我们将介绍: WebSoc...
    编程 发布于2024-11-09
  • Bootstrap 4 Beta 中的列偏移发生了什么?
    Bootstrap 4 Beta 中的列偏移发生了什么?
    Bootstrap 4 Beta:列偏移的删除和恢复Bootstrap 4 在其 Beta 1 版本中引入了重大更改柱子偏移了。然而,随着 Beta 2 的后续发布,这些变化已经逆转。从 offset-md-* 到 ml-auto在 Bootstrap 4 Beta 1 中, offset-md-*...
    编程 发布于2024-11-09
  • 如何修复 macOS 上 Django 中的“配置不正确:加载 MySQLdb 模块时出错”?
    如何修复 macOS 上 Django 中的“配置不正确:加载 MySQLdb 模块时出错”?
    MySQL配置不正确:相对路径的问题在Django中运行python manage.py runserver时,可能会遇到以下错误:ImproperlyConfigured: Error loading MySQLdb module: dlopen(/Library/Python/2.7/site-...
    编程 发布于2024-11-09
  • 如何从 ASP.NET Core Web API 控制器返回文件?
    如何从 ASP.NET Core Web API 控制器返回文件?
    在 ASP.NET Core Web API 中处理文件下载尝试从 ASP.NET Web API 控制器返回文件时,您可能会遇到以下问题:响应被视为 JSON。要解决此问题,了解在 ASP.NET Core 中下载文件的正确方法至关重要。要在 ASP.NET Core Web API 中返回文件,...
    编程 发布于2024-11-09
  • 如何将移动站点限制为横向并禁用自动旋转?
    如何将移动站点限制为横向并禁用自动旋转?
    增强移动网站体验:强制横向方向并禁用自动旋转在设计移动响应能力时,某些方向可能会对用户产生重大影响经验。此问题寻求一种解决方案,将移动网站限制为横向并禁用自动旋转。CSS 解决方案实现此目的的一种方法是通过 CSS 媒体查询。通过为横向和纵向创建单独的样式表,您可以根据设备的方向控制站点的行为方式。...
    编程 发布于2024-11-09
  • Mac OS X 上的 Python 项目创建
    Mac OS X 上的 Python 项目创建
    介绍 PyFabricate 是一款 Mac OS X 应用程序,可简化 Python 项目的创建。 自从我创作它以来,显然它是我认为 Python 项目应该是什么样子的一个固执己见的版本。 此外,我还有一个特定的工具集,可以用来编写 Python Mac OS X 应用程序。...
    编程 发布于2024-11-09
  • 如何修复 PHP 中的“尝试获取非对象的属性”错误?
    如何修复 PHP 中的“尝试获取非对象的属性”错误?
    解决 PHP 中的“尝试获取非对象的属性”错误使用 PHP 时,您可能会遇到错误“尝试获取非对象的属性”获得非物体的财产。”当尝试访问尚未正确初始化或为 null 的对象的属性时,通常会发生此错误。在提供的代码的情况下,问题在于从数据库获取侧菜单数据。 mysql_fetch_object() 函数...
    编程 发布于2024-11-09
  • ## 如何修改 Python 源代码,同时保留格式和注释?
    ## 如何修改 Python 源代码,同时保留格式和注释?
    使用 AST 修改 Python 源代码解析、修改和写回 Python 源代码对于突变测试等任务来说是一项很有价值的任务。虽然标准 Python 模块提供了解析和编译代码的方法,但它们缺乏修改和重写源代码的能力。为了满足这一需求,一些库提供了解决方案:lib2to3: 由 Pythscope 和 2...
    编程 发布于2024-11-09
  • 如何使用 JavaScript 根据另一个下拉列表中的选择填充一个下拉列表?
    如何使用 JavaScript 根据另一个下拉列表中的选择填充一个下拉列表?
    使用 JavaScript 根据另一个下拉列表中的选择填充一个下拉列表当面临根据另一个下拉列表中的选择动态更新一个下拉列表中的选项的任务时,它是对于避免不必要的复杂性(例如数据库查询)至关重要。让我们探索一个简单的基于 JavaScript 的解决方案,无需 AJAX 调用即可完成此任务。为了说明此...
    编程 发布于2024-11-09
  • 如何从具有不同数组长度的字典创建 Pandas DataFrame?
    如何从具有不同数组长度的字典创建 Pandas DataFrame?
    从条目长度不均匀的字典创建 DataFrame在 Python 中,可以从每个条目保存一个 Numpy 数组的字典创建 DataFrame。然而,当条目之间的数组长度不同时,就会出现挑战。默认情况下,Pandas 需要统一长度的数组,从而导致类似“ValueError: arrays must al...
    编程 发布于2024-11-09
  • 为什么在 Java 中使用相同的种子时会得到相同的随机数?
    为什么在 Java 中使用相同的种子时会得到相同的随机数?
    具有固定种子的Java随机数:为什么输出相同?在您的代码中,您定义了一种使用以下命令生成随机数的方法指定的种子。但是,您会注意到,当您提供相同的种子时,所有 100 个生成的数字都是相同的。此行为是预期的,因为在 Random 构造函数中使用相同的种子会产生可预测的数字序列。种子是初始化随机数生成器...
    编程 发布于2024-11-09
  • jQuery Chaining 如何简化开发并提高代码效率?
    jQuery Chaining 如何简化开发并提高代码效率?
    理解 jQuery 中的对象和方法链接在 jQuery 中,链接允许在单个语句中串联多个 jQuery 方法。这使开发人员能够简化代码并轻松执行复杂的操作。链接的基本原理涉及每个 jQuery 方法的返回值。当调用 jQuery 方法时,它通常返回一个表示所选元素的 jQuery 对象。这允许在同一...
    编程 发布于2024-11-09

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

Copyright© 2022 湘ICP备2022001581号-3