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

AI數據視覺化的未來

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

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]刪除
最新教學 更多>
  • 如何在Java字符串中有效替換多個子字符串?
    如何在Java字符串中有效替換多個子字符串?
    在java 中有效地替換多個substring,需要在需要替換一個字符串中的多個substring的情況下,很容易求助於重複應用字符串的刺激力量。但是,對於大字符串或使用許多字符串時,這可能是降低的。 利用正則表達式Example UsageConsider a scenario where ...
    程式設計 發佈於2025-05-21
  • 大批
    大批
    [2 數組是對象,因此它們在JS中也具有方法。 切片(開始):在新數組中提取部分數組,而無需突變原始數組。 令ARR = ['a','b','c','d','e']; // USECASE:提取直到索引作...
    程式設計 發佈於2025-05-21
  • 解決MySQL插入Emoji時出現的\\"字符串值錯誤\\"異常
    解決MySQL插入Emoji時出現的\\"字符串值錯誤\\"異常
    Resolving Incorrect String Value Exception When Inserting EmojiWhen attempting to insert a string containing emoji characters into a MySQL database us...
    程式設計 發佈於2025-05-21
  • 如何使用Python有效地以相反順序讀取大型文件?
    如何使用Python有效地以相反順序讀取大型文件?
    在python 中,如果您使用一個大文件,並且需要從最後一行讀取其內容,則在第一行到第一行,Python的內置功能可能不合適。這是解決此任務的有效解決方案:反向行讀取器生成器 == ord('\ n'): 緩衝區=緩衝區[:-1] ...
    程式設計 發佈於2025-05-21
  • Async Void vs. Async Task在ASP.NET中:為什麼Async Void方法有時會拋出異常?
    Async Void vs. Async Task在ASP.NET中:為什麼Async Void方法有時會拋出異常?
    在ASP.NET async void void async void void void void void的設計無需返回asynchroncon而無需返回任務對象。他們在執行過程中增加未償還操作的計數,並在完成後減少。在某些情況下,這種行為可能是有益的,例如未期望或明確預期操作結果的火災和...
    程式設計 發佈於2025-05-21
  • 在GO中構造SQL查詢時,如何安全地加入文本和值?
    在GO中構造SQL查詢時,如何安全地加入文本和值?
    在go中構造文本sql查詢時,在go sql queries 中,在使用conting and contement和contement consem per時,尤其是在使用integer per當per當per時,per per per當per. [&​​&&&&&&&&&&&&&&&默元組方法在...
    程式設計 發佈於2025-05-21
  • 為什麼PYTZ最初顯示出意外的時區偏移?
    為什麼PYTZ最初顯示出意外的時區偏移?
    與pytz 最初從pytz獲得特定的偏移。例如,亞洲/hong_kong最初顯示一個七個小時37分鐘的偏移: 差異源利用本地化將時區分配給日期,使用了適當的時區名稱和偏移量。但是,直接使用DateTime構造器分配時區不允許進行正確的調整。 example pytz.timezone(&#...
    程式設計 發佈於2025-05-21
  • PHP未來:適應與創新
    PHP未來:適應與創新
    PHP的未來將通過適應新技術趨勢和引入創新特性來實現:1)適應云計算、容器化和微服務架構,支持Docker和Kubernetes;2)引入JIT編譯器和枚舉類型,提升性能和數據處理效率;3)持續優化性能和推廣最佳實踐。 引言在編程世界中,PHP一直是網頁開發的中流砥柱。作為一個從1994年就開始發展...
    程式設計 發佈於2025-05-21
  • 如何在JavaScript對像中動態設置鍵?
    如何在JavaScript對像中動態設置鍵?
    在嘗試為JavaScript對象創建動態鍵時,如何使用此Syntax jsObj['key' i] = 'example' 1;不工作。正確的方法採用方括號: jsobj ['key''i] ='example'1; 在JavaScript中,數組是一...
    程式設計 發佈於2025-05-21
  • Go語言垃圾回收如何處理切片內存?
    Go語言垃圾回收如何處理切片內存?
    在Go Slices中的垃圾收集:詳細的分析在GO中,Slice是一個動態數組,引用了基礎陣列。使用切片時,了解垃圾收集行為至關重要,以避免潛在的內存洩漏。 考慮使用slice使用slice的以下實現:字符串{ R:=(*Q)[0] *q =(*q)[1:len(*q)] 返...
    程式設計 發佈於2025-05-21
  • 為什麼我會收到MySQL錯誤#1089:錯誤的前綴密鑰?
    為什麼我會收到MySQL錯誤#1089:錯誤的前綴密鑰?
    mySQL錯誤#1089:錯誤的前綴鍵錯誤descript [#1089-不正確的前綴鍵在嘗試在表中創建一個prefix鍵時會出現。前綴鍵旨在索引字符串列的特定前綴長度長度,可以更快地搜索這些前綴。 了解prefix keys `這將在整個Movie_ID列上創建標準主鍵。主密鑰對於唯一識...
    程式設計 發佈於2025-05-21
  • JavaScript計算兩個日期之間天數的方法
    JavaScript計算兩個日期之間天數的方法
    How to Calculate the Difference Between Dates in JavascriptAs you attempt to determine the difference between two dates in Javascript, consider this s...
    程式設計 發佈於2025-05-21
  • 如何在Chrome中居中選擇框文本?
    如何在Chrome中居中選擇框文本?
    選擇框的文本對齊:局部chrome-inly-ly-ly-lyly solument 您可能希望將文本中心集中在選擇框中,以獲取優化的原因或提高可訪問性。但是,在CSS中的選擇元素中手動添加一個文本 - 對屬性可能無法正常工作。 初始嘗試 state)</option> < o...
    程式設計 發佈於2025-05-21
  • 解決Spring Security 4.1及以上版本CORS問題指南
    解決Spring Security 4.1及以上版本CORS問題指南
    彈簧安全性cors filter:故障排除常見問題 在將Spring Security集成到現有項目中時,您可能會遇到與CORS相關的錯誤,如果像“訪問Control-allo-allow-Origin”之類的標頭,則無法設置在響應中。為了解決此問題,您可以實現自定義過濾器,例如代碼段中的MyFi...
    程式設計 發佈於2025-05-21
  • 如何將PANDAS DataFrame列轉換為DateTime格式並按日期過濾?
    如何將PANDAS DataFrame列轉換為DateTime格式並按日期過濾?
    將pandas dataframe列轉換為dateTime格式示例:使用column(mycol)包含以下格式的以下dataframe,以自定義格式:})指定的格式參數匹配給定的字符串格式。轉換後,MyCol列現在將包含DateTime對象。 date date filtering > = ...
    程式設計 發佈於2025-05-21

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

Copyright© 2022 湘ICP备2022001581号-3