ChatGPT这样的大语言模型能够通过对话让用户进行非常复杂的大数据分析,带来了数据分析领域的变革。无论是使用ChatGPT自己的代码解释器,还是使用安装了Noteable等第三方插件的ChatGPT,你都可以用简单的描述告诉ChatGPT你想要做什么,然后ChatGPT就会帮你分析数据,生成可视化表格,并告诉你分析的结果。
我在之前的两篇文章中使用了同一个数据集—Kaggle上的一个关于Netflix上8000多部电影和电视的数据—分别交给ChatGPT的Code Interpreter (代码解释器)以及Noteable ChatGPT插件进行数据分析。
这两个分析都从简单的探索性数据分析过渡到复杂的机器学习建模,几乎用了同样的Prompt,但分析的结果是不同的。
这篇文章将比较ChatGPT的代码解释器和Noteable插件的相同和不同,它们各自的优劣势,帮助你决定哪一个才更适合你。
ChatGPT代码解释器和Noteable插件的简介
ChatGPT 代码解释器是 ChatGPT 的内置功能,目前处于测试阶段。 它允许 ChatGPT 解释自然语言指令并将其翻译为 Python 中的可执行代码。 该代码在沙盒环境中运行,可以访问常见的 Python 数据分析库,如 Pandas、Matplotlib、NumPy 和 Scikit-Learn。
Noteable 是一个第三方插件,可将 ChatGPT 连接到 Noteable 基于云的笔记本平台 (云平台本身是免费的)。 它允许用户通过与 ChatGPT 对话来创建 Jupyter 风格的笔记本,利用 Noteable 的内置笔记本功能,如代码单元、Markdown 注释、版本控制、实时协作等。
两者的相同之处
基于ChatGPT Plus
无论是使用代码解释器或者Noteable插件,首先要有一个ChatGPT Plus付费账号。
用户是通过ChatGPT4的自然语言能力把分析任务转化为实际的代码来处理数据。它们共享了ChatGPT4的自然语言的强大能力,能够很准确地理解你交给它们的任务。
它们能够利用ChatGPT4的思维链把复杂的任务进行拆分来提高数据分析的能力。在我分别用ChatGPT代码解释器和Noteable插件分析Kaggle数据集的的第一步,都提交了一个相同的Prompt:
作为专业的数据分析师,请遵循标准的数据分析流程。让我们一步一步来。
提交了这个Prompt以后,虽然两者执行的具体过程略有不同,但是基本流程都是相同的:都是先进行初步的数据处理,比如处理缺失值,然后进行探索性数据分析。
两者都会基于自然语言能力,对数据分析的结果进行解说。他们对数据分析任务的理解也都是基于ChatGPT4,通过ChatGPT4对数据分析的目标进行解读。
比如我用同一个Prompt分别问代码解释器和Noteable插件:
您可以为此数据集构建哪些机器学习模型?
两者的回答几乎是相同的。代码解释器这样回答:
机器学习模型的选择取决于您感兴趣的具体问题或任务。以下是一些潜在的任务以及可以使用的相应模型:
内容推荐:如果您有兴趣根据用户的观看历史记录向用户推荐类似的内容,则可以使用协作过滤模型(如矩阵分解)或基于内容的过滤模型(根据项目属性推荐类似的项目)。
类型预测:如果您想根据其他特征(如导演、演员、描述)来预测电影或电视节目的类型,您可以使用监督学习模型。 这些可能包括决策树、随机森林、支持向量机或神经网络。
情绪分析:如果您想预测用户评论的情绪,您可以使用自然语言处理模型,如朴素贝叶斯、逻辑回归,甚至更复杂的模型,如循环神经网络 (RNN) 或 Transformer。
趋势预测:如果您有兴趣预测未来趋势(例如特定类型的电影或电视节目的数量),您可以使用 ARIMA 或指数平滑等时间序列预测模型。
请注意,这些模型的有效性在很大程度上取决于数据的质量和数量,以及特征工程和模型调整步骤。 此外,应仔细进行模型解释和评估,以避免过度拟合并确保模型能够很好地推广到未见过的数据。
如果您有兴趣的特定任务或问题,请告诉我,我可以提供更详细的建议。
配备Noteable插件的ChatGPT这样回答:
鉴于数据集的性质,以下是一些可以构建的机器学习模型:
- 基于内容的推荐系统:使用有关电影和电视节目的信息,例如“导演”、“演员”、“国家/地区”、“评级”、“时长”和“描述”,我们 可以构建一个基于内容的推荐系统,推荐与给定电影或电视节目类似的内容。
- 文本分类/情感分析:如果我们有电影和电视节目的用户评论,我们可以使用“描述”和“标题”特征来构建文本分类模型来预测评论的情感。
- 时间序列分析/预测:如果我们有关于每部电影或电视节目添加时间的更详细数据(例如每日数据),我们可以执行时间序列分析以了解随时间变化的趋势并可能预测未来的添加 。
- 分类或回归模型:如果我们有一个特定的目标变量,例如预测电影或电视节目的“收视率”或“发行年份”,我们可以分别构建分类或回归模型。 然而,考虑到当前的数据集,这些模型可能不是非常有意义或有用。
请注意,这些模型的有效性和可行性将取决于是否拥有正确的数据并定义清晰的问题陈述。 您是否有想要进一步探索的特定机器学习模型或问题陈述?
基于ChatGPT4的理解和拆分数据分析任务虽然有很多好处,比如对于上下文的理解,但是也存在一些缺点。ChatGPT4的训练数据是过时的,可能无法应对许多领域的快速发展,包括技术、时事以及语言本身的不断演变。它对机器学习的理解可能也已经过时,无法训练最新的机器学习模型或算法。
像ChatGPT4这样的人工智能模型虽然可以模拟人类的理解,但并不能像人类那样真正理解它们所处理的数据,所以有时还是需要人工的干预才能输出最高质量的分析。
调用Python语言处理数据
在ChatGPT出现以前,Python是进行大数据分析最受欢迎的语言。它的语法简单,易于阅读和理解,非常解决自然语言,可以让数据分析师更聚焦于要解决的问题而非代码本身。
ChatGPT Code Interpreter把很多Python库集成到一个无法联网的封闭的沙盒环境里,其中包含了很多用于数据分析的库。
当你给代码解释器分配数据分析任务时,它会用它的自然语言能力把任务最终转化为Python代码来处理数据。如果你点击ChatGPT的回复里的”Show work”按钮时,就可以打开一个黑色的代码框,里面展示了Python代码。懂Python代码的人可以通过分析代码更清楚底层的分析过程。
Noteable ChatGPT插件也是调用Python代码来处理数据的。当你用它执行数据分析任务时,ChatGPT会通过API将用于数据分析的Python代码写到Noteable云平台的数据笔记本里。数据笔记本就是一个在线的Jupyter Notebook,它本身就内置了很多用于数据分析的Python库。
基本的数据分析
在基本的数据分析方面,比如探索性数据分析(EDA) 和数据可视化方面,ChatGPT代码解释器和Noteable插件都游刃有余。它们都内置了大多数用于数据分析的Python库,这些库适用于大多数数据分析的场景。
在之前的两篇文章里,我用同一个Kaggle数据集进行基础的数据分析,两者分析结果都很出色,并且大致相同。我都让它们遵循标准的数据分析流程,自己设置探索性数据分析的角度。
两者都分析了Netflix上电视和电影这两种类型的数量,生产电视或电影内容数量排名前十的国家,以及Neltflix上内容的评级分布。默认情况下,它们都生成了基本相似的柱状图,当然它们都支持其他各种类型的图表。
两者的不同之处
运行代码的环境
ChatGPT代码解释器上传数据,生成并运行代码,输出结果都是在ChatGPT内部。要分析的数据上传到ChatGPT代码解释器的沙盒环境中,这个环境和外界相隔离,无法通过联网获取外部的数据或者代码库。
上传的文件只在当前的会话才有效,并且经过很长时间的话,上传的文件就不再有效了。ChatGPT生成的代码是无法编辑的,只能通过跟ChatGPT对话的方式重写代码。对于懂代码的人来说不是一种非常高效的方式。
ChatGPT代码解释器也无法连接数据库,只能上传CSV或者Excel来获取数据源。也无法通过联网获取其他Python库,限制了一部分能力。
和代码解释器不同的是,Noteable ChatGPT 插件只是ChatGPT和Noteable沟通的桥梁。Noteable本身是独立于ChatGPT的。上传的数据保存在Noteable的云平台里,而非ChatGPT。上传的数据不会随着ChatGPT的会话消失而消失。除了上传数据,还可以在线连接各种数据库来获取数据源。
Noteable本身是一个数据分析的云平台,所有的代码保存在Noteable的数据笔记本里。这个数据笔记本相当于在线的Jupyter Notebook,ChatGPT会通过API把Python代码写到这个笔记本上。用户可以在Noteable平台上编辑,修改代码或者添加注释,还可以把笔记本分享给他人。一边通过自然语言让ChatGPT生成代码,一边在Noteable平台上检查和修改代码并和团队成员互相协作,这样的方式更加灵活和高效。
当你用ChatGPT分配数据分析的任务时,如果内置的Python库不够,ChatGPT会调动Noteable在线下载其他Python库,大大拓展了ChatGPT的能力。除了在线下载Python库,还可以让Noteable通过Python的各种用于网络爬虫的库爬取网页获取数据,或者执行API请求来获取数据。
计算资源
ChatGPT的沙盒环境里的计算资源是有限制的。通过在沙盒环境运行代码的方式,推测出的内存大概在1.7GB,实际的内存可能会因操作系统的内存管理策略的不同而不同。沙盒环境的CPU架构是x86_64
,有16个核心,而且是没有GPU的。
用Noteable ChagGPT进行数据分析使用的计算资源并不是来自于ChatGPT,而是Noteable云平台。你可以在笔记本的界面设置你想要的计算资源,默认提供的免费计算资源是1个CPU,4GB内存。
付费用户还可以使用其他计算资源:
- Medium: 2 vCPU, 7.5 GB 内存
- Large: 4 vCPU, 15.0 GB 内存
- Extra Large: 7.5 vCPU, 29.0 GB 内存
- Small (GPU): 2 vCPU, 10.0 GB 内存
- Medium (GPU): 6 vCPU, 26.0 GB 内存
即使是免费的Noteable用户享有的计算资源的配置也是高于代码解释器的,付费用户还可以使用更高的配置,甚至是GPU。GPU(图像处理单元) 越来越多地用于数据分析领域,特别是在需要处理大量数据的任务中,例如机器学习和深度学习,它的并行处理能力可以显著加快计算速度。
功能
使用Noteable ChatGPT插件可以同时利用ChatGPT和Noteable云平台两者的能力。
Noteable 具有实时协作、版本控制、以多种格式导出笔记本、执行定时任务等功能。Code Interpreter 缺乏这些功能。
实时协作: Notable 允许多个用户同时编辑笔记本。 更改会实时反映,并可使用单元锁定来防止冲突。 还有集成的聊天和@提及功能,可以在上下文中进行讨论。
版本控制: Notable 跟踪笔记本的完整修订历史记录。 它将每个更改捕获为快照,其中包含时间、用户等元数据。只需单击一下即可恢复到任何先前版本。
导出笔记本: 笔记本可以以多种格式从 Notable 导出,如 HTML、PDF、Python 脚本、Markdown 等。 这个功能使用户可以和他人共享分析的结果。
执行定时任务: 笔记本可以根据 cron 表达式按照定义的计划运行,定时自动执行重复的任务,并通过电子邮件提供报告。
其他功能: Notable 提供与数据库、对象存储和 Web API 的数据连接,以进行实时数据访问。 它还具有内置的 SQL 查询编辑器。 支持使用空间、项目和文件夹进行组织。 可以使用用户、角色和权限进行精细化管理。
这些功能使 Notable 成为使用 ChatGPT 生成的笔记本的强大平台。 内置的协作、版本控制、调度和导出功能为团队提供了在对话时代开发、共享数据洞察和分析工作流程并采取行动的新方法。
高级数据分析
文章的前面介绍了ChatGPT代码解释器和Noteable插件在基本的数据分析方面平分秋色。但是在高级的数据分析能力上,差异就比较大了。
我在之前的分别介绍它们的两篇文章里,都让它们对那个Netflix的数据集中的标题分析词频并生成词云。由于Code Interpreter所在的沙盒环境只包含最基本的停止词的语料包,它分析词频时并没有排除’&’, ‘-‘, ‘with’, ‘i’ 等对于分析词频毫无意义的停止词。
我们都知道跟NLP(自然语言处理)相关的有很多Python库,比如NLTK,它本身也包含很多语料包,Code Interpreter无法下载Python库和相关的包,所以它在自然语言处理方面的能力是有限的。
Noteable ChatGPT插件则不同。
当我让它分析标题中最频繁的词并生成一个词云时,它主动下载了 wordcloud
Python库,很快就生成了符合需求的词云。
代码解释器在机器学习建模方面的劣势也很明显。
在建立预测电影评级的过程中,它先尝试了简单的决策树分类器,但是由于加权平均精度、召回率和 F1 分数都不太理想,又尝试了随机森林分类器。然而效果并不理想,需要更复杂的编码方法来创建更高级的模型,这些已经超出Code Interpreter的能力了。
反观Noteable ChatGPT插件,它只花了几步就完成了随机森林模型的训练。更复杂的支持向量机(SVM)模型也完成了训练,虽然花了2个半小时的时间。但是如果付费用户使用更高的配置,比如GPU时,时间会大大缩短。代码解释器本身沙盒环境的限制是无法使用GPU的。
两者各自的优劣势
ChatGPT Code Interpreter
优势
- 上手快,不需要安装插件和创建其他账户
- 对于小型的数据分析项目来说非常方便快捷
- 处理常规的数据分析任务比如EDA和数据可视化表现出色
劣势
- 沙盒环境限制,无法下载Python库,无法联网
- 数据只存在于当前会话中,长时间过后数据就不可用了
- 只能上传CSV, Excel等文件,无法连接数据库
- 算力有限,无法胜任高强度的建模
- 功能有限,没有版本控制和团队协作功能
- 无法和其他ChatGPT插件配合使用
Noteable ChatGPT 插件
优势
- 基于云端笔记本的更加灵活的环境,可以联网,下载Python库
- 数据保存在Noteable云端,独立于ChatGPT存在
- 可以连接各种数据库
- 可以爬取网页,使用API
- 付费用户有多种计算资源可选,包括GPU
- 常规的数据分析任务不在话下,复杂的机器学习建模也不在话下
- 内置聊天,协作和分享功能,还可以导出笔记本
- 可以和其他ChatGPT插件配合使用
劣势
- 另外需要一个Noteable的账户,上手麻烦
- 对于小型的数据分析项目来说比较慢
- 免费的Noteable用户只能使用最基础的1vCPU, 4GB内存的配置
数据分析究竟该用哪个
ChatGPT代码解释器直接集成到ChatGPT中,上手快,更适合处理小型的数据分析任务。如果你只是进行临时性的,快速的数据分析,推荐使用代码解释器。代码解释器适合大多数使用Excel进行简单的数据分析的人。
然而,为了进行更稳健、可重复的数据分析,Noteable更可取。 它基于云端笔记本的配置、额外的计算资源、协作功能以及集成外部数据的能力使其更适合现实世界的数据科学工作流程。对于专业的数据分析师和数据科学家,推荐使用Noteable。
对于高级建模和分析,Noteable具有明显的优势。 但在过渡到Noteable更丰富的环境之前,Code Interpreter可以作为一个简单的原型设计工具。
总结来说:
- 代码解释器—非常适合简单的临时分析
- Noteable—更适合高级分析和工作流
两者都有自己的定位,具体取决于你的需求和分析水平。 但Noteable插件通过 ChatGPT解锁了更强大、灵活和协作的数据分析功能。
结语
Code Interpreter和Noteable等由 ChatGPT 支持的工具为通过自然语言进行数据分析提供了一种易于使用的新范式。 随着底层人工智能模型的不断改进,这些接口将变得更加强大,并且对于数据驱动的组织来说更加不可或缺。
未来,我们可以期待对话式人工智能、强大的计算环境和智能仪表板的更多融合,使广大用户能够独立地从数据中提取更多见解。
随着人工智能增强人类智能并彻底改变数据科学领域,激动人心的时代即将到来!
PS: 如果本文对您有帮助,辛苦帮我点个赞哦🙏🏽