」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > AI數據視覺化的未來

AI數據視覺化的未來

發佈於2024-11-04
瀏覽:919

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]刪除
最新教學 更多>
  • 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
  • 如何從 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
  • 大批
    大批
    方法是可以在物件上呼叫的 fns 數組是對象,因此它們在 JS 中也有方法。 slice(begin):將陣列的一部分提取到新數組中,而不改變原始數組。 let arr = ['a','b','c','d','e']; // Usecase: Extract till index ...
    程式設計 發佈於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 原始碼使用AST 修改Python 原始碼解析、修改和寫回Python 原始碼對於突變測試等任務來說是一項很突變測試等任務來說是一項很有價值的任務。雖然標準 Python 模組提供了解析和編譯程式碼的方法,但它們缺乏修改和重寫原始程式碼的能力。 為了滿足這一需求,一些庫...
    程式設計 發佈於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
  • 在 Go 中使用 WebSocket 進行即時通信
    在 Go 中使用 WebSocket 進行即時通信
    构建需要实时更新的应用程序(例如聊天应用程序、实时通知或协作工具)需要一种比传统 HTTP 更快、更具交互性的通信方法。这就是 WebSockets 发挥作用的地方!今天,我们将探讨如何在 Go 中使用 WebSocket,以便您可以向应用程序添加实时功能。 在这篇文章中,我们将介绍: WebSoc...
    程式設計 發佈於2024-11-09
  • 為什麼在 Java 中使用相同的種子時會得到相同的隨機數?
    為什麼在 Java 中使用相同的種子時會得到相同的隨機數?
    具有固定種子的Java隨機數:為什麼輸出相同? 在您的程式碼中,您定義了一種使用以下命令產生隨機數的方法指定的種子。但是,您會注意到,當您提供相同的種子時,所有 100 個產生的數字都是相同的。 此行為是預期的,因為在 Random 建構函式中使用相同的種子會產生可預測的數字序列。種子是初始化隨機數...
    程式設計 發佈於2024-11-09
  • jQuery Chaining 如何簡化開發並提高程式碼效率?
    jQuery Chaining 如何簡化開發並提高程式碼效率?
    理解 jQuery 中的物件和方法連結在 jQuery 中,連結允許在單一語句中串聯多個 jQuery 方法。這使開發人員能夠簡化程式碼並輕鬆執行複雜的操作。 連結的基本原理涉及每個 jQuery 方法的回傳值。當呼叫 jQuery 方法時,它通常會傳回一個表示所選元素的 jQuery 物件。這允許...
    程式設計 發佈於2024-11-09
  • Hono.js 基準測試:Node.js、Deno 和 Bun — 哪個最快?
    Hono.js 基準測試:Node.js、Deno 和 Bun — 哪個最快?
    Deno 2.0 剛剛發布,並聲稱比 Bun 和 Node.js 更快,同樣,Bun 也聲稱更快。這引起了我的興趣,所以我決定測試它們的性能,看看它們在現實場景中的比較。 為了公平比較,我需要選擇一個與所有三種 JavaScript 執行時間環境(Node.js、Deno 和 Bun)相容的框架。...
    程式設計 發佈於2024-11-09
  • 何時應該使用 Tkinter 的 Entry Get 函數來有效檢索輸入?
    何時應該使用 Tkinter 的 Entry Get 函數來有效檢索輸入?
    Tkinter Entry 的Get 函數:深入探討其功能和用法在Tkinter 中,Entry 小部件通常用於收集用戶輸入以進一步收集使用者輸入然而,與Entry 關聯的get() 函數通常無法產生所需的結果,這可能會讓開發人員感到困惑。本文深入探討 get() 的概念,全面了解其執行與應用。 理...
    程式設計 發佈於2024-11-09
  • 如何克服 PHP 中日期表示的 2038 限制?
    如何克服 PHP 中日期表示的 2038 限制?
    PHP 中的日期表示:克服2038 年限制雖然PHP 的原生日期函數在2038 年有一個截止日期,但還有其他方法處理超出此限制的日期。其中一種方法是僅儲存年、月和日,而忽略小時、分鐘、秒和毫秒部分。 透過丟棄這些附加時間部分,可以顯著擴展可表示日期的範圍。這是因為這些元件中的每一個都佔用了 PHP ...
    程式設計 發佈於2024-11-09

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3