wshuyi的个人博客分享 /u/wshuyi

博文

如何用 ChatGPT 帮你自动分析数据?

已有 2655 次阅读 2023-5-14 16:51 |系统分类:澳门黄金赌城

误判

好几天之前,我就在 ChatGPT 选单里看到了 Code Interpreter。它正在灰度测试中 —— 先给一部分用户试用,如果反响不错并做了一定改进,就能推广给更多用户。

可惜当时我没能正确理解它的含义,犯了一个大错误 —— 望文生义。我以为 Code Interpreter 是指「代码解释器」,也就是给代码添加注释进行讲解的。可那不是 ChatGPT 早就有了的功能吗?干嘛还专门弄个新的模式出来呢?

后来经朋友提醒我才发现,Code Interpreter 的功能不是「解释代码」,而是执行代码。在这个模式下,你可以上传文件作为输入,让 Code Interpreter 编写代码对输入文件做处理,并且在自带的虚拟环境中执行。根据代码内容的不同,它可以利用文本、数字、图形、表格等方式给你展示结果,甚至还可以给你一个下载链接,把你指定的输出以文件形式下载回本地。

当我意识到这一点时,真可以用「惊讶」和「懊恼」来形容。我迫不及待尝试后,赶紧写作本文,告诉你这个功能。以免你跟我一样望文生义,重蹈覆辙。

下面我用一个实际的例子给你演示。

实例

首先我们需要一个演示数据集。这里我选择了一个名为 loans.csv 的贷款安全数据集。它是一张表格,属于简单结构数据,其中包含若干行,每一行代表一条贷款记录;而每列则代表某一相关属性特征,例如贷款等级,房屋拥有情况,贷款时长等信息。

最后一列 safe_loans 代表贷款成功或失败,也即这次放款是否安全。其中 -1 代表不安全。1 代表贷款安全回收。

首先我们需要将数据集上传到 Code Interpreter 中。上传按钮很不显眼,在输入框的旁边。

上传后,Code Interpreter 会自动进行分析,并为每列数据提供解释。

我点击了 "show work" 来看看究竟 Code Interpreter 是如何分析出上述结果的。

原来,Code Interpreter 直接编写了 Python 代码,读取了上传后的 loans.csv 文件,然后执行 head () 命令,打印出来前 5 行,根据列名称和具体显示的数据综合分析信息,然后做了回答。

提示

数据已经准备好,我们现在可以开始输入提示语了。我觉得使用英文与 Code Interpreter 对话很别扭,因此我提出:

请用中文翻译上面的内容,并且对于专业术语加以简单明了的解释。谢谢

你可能会纳闷儿,老师你干嘛要这么客气呢?不就是个机器……🤫,别瞎说。礼多人不怪,AI 也一样。你跟它客气,它回答起来也会比较认真。在《人工智能这么强,我直接把工作都交给它可以吗?》一文中,我给你解释过具体的证据。

闲言少叙,这是 Code Interpreter 返回的结果。

你看,用中文回答是不是感觉好多了?对比一下你就会发现,这里的「可循环信贷利用率」等专业术语,都已有具体解释了。Code Interpreter 还在最后提出「告诉我您希望对这些数据进行哪种分析或任务」。

此时,你可以要求 Code Interpreter 做一些简单分析,并要求绘制图表(如分布图)。但对于我而言,这样的机械操作实在太无趣了 —— 每个步骤都需要我来提示,那我还要你这 AI 干啥?

计划

因此,我的下一个提示语,是这样的:

能否根据目前的数据集,思考它可以做哪些分析?请一步步思考,并且给我你有信心的答案。谢谢

注意这一段提示语中的两个技巧,你可以尝试吸收:「一步步思考」是尝试启动大语言模型的思维链;「有信心的答案」是指设定阈值,避免 ChatGPT 天马行空随意乱答。

这是 Code Interpreter 的反馈结果。

Code Interpreter 列出了可能的分析类型。

第一步是描述性分析,比如基本数量分布等。

第二步是相关性分析,总结其他变量间的相关性。

第三步是建立预测模型,其中提到了决策树,随机森林和逻辑回归等方法。也提到必须将之分为训练及测试数据集,且要「使用测试级来评估模型性能」。这种意识非常棒,已经超出了机器学习常见入门水平。

第四步就有点儿莫名奇妙了,虽然 Code Interpreter 提出使用支持向量机 (SVM)、朴素贝叶斯等几个新模型,但要做的事情和第三步是重复的。

好在,我们使用 AI 作为助手,而不是枪手。我们大可以将第四种分析类型省略,只让Code Interpreter将前三个步骤做一下。这里为了方便展示,我让 AI 一次只做一个步骤。下面是执行各个步骤的效果。

结果

第一步,描述性分析。Code Interpreter 给出了这个数据集的一些基本统计信息。包括记录数量、最常见的贷款等级、平均被雇佣不足一年人员数量、平均雇佣年限、平均债务收入、最常见贷款期限数量等。

第二步,相关性分析。Code Interpreter 识别出属于不同变量之间的正负相关关系。例如,短期雇佣与雇佣年限是相反的概念,因此 short_emp emp_length_num 之间存在负相关性;债务收入比高的贷款申请者往往会使用循环信贷,因此 dti  revol_util 之间存在正相关性;而 safe_loans 和一些其他变量之间存在负相关性,这意味着对那些高债务收入比的人贷款,可能不太安全。

Code Interpreter还不忘提醒咱们,这些相关性不意味着因果关系,尚需要考虑更多变量的交互和非线性关系。如果是我的学生回答此题,仅仅最后这一句,就会让我非常欣慰。

第三步,构建预测模型。

Code Interpreter 中规中矩地进行了数据预处理。

我看了一下具体执行的代码:

之后是模型的训练和性能测试环节。

点开 show work,对应的代码是这样:

之后,Code Interpreter 自动进行了结果的汇总输出与阐释。

该模型在测试数据集上的准确率为61.7%。虽然不高,但Code Interpreter指出相对于随机预测的准确率50%,还是要好一些。有意思的是,它还自动提出了如何对准确率进行提升。例如超参数优化、特征工程、使用其他模型等。特别地,Code Interpreter提出需要不仅仅关注准确率,还要考虑模型可解释性、训练和预测时间等其他指标。

非常好!不过你是说,让我自己去逐一尝试上述提升策略?那怎么可能?!Code Interpreter 既然你画了道儿,就得你来走嘛。

于是我这样提问:

你能否实施改进策略,并且在同样的测试集上进行测试?谢谢

这是 Code Interpreter 的回答。

你看?AI 开始认真干起来了不是?

这是 Code Interpreter 一通改进之后的结果:

从61.7%提升到了64.9%,准确率高吗?我觉得谈不上。但是这是一个非常有意思的开端,意味着Code Interpreter可以自动帮助我们执行提升准确率的策略,而且获得了成效。

小结

我想跟你谈谈尝试 Code Interpreter 之后的感受。我想用「惊艳」二字来形容。具体来说,就是「分析得当,执行流畅」。

咱们应该思考一下 Code Interpreter 出现的意义。曾几何时,很多小伙伴拿到宝贵的一手数据,却不知道如何分析。在几年前,你会看到很多不同学科的人一窝蜂跑去学习 Python。因为在彼时,只有学会了 Python 或者 R 后,你才可能对数据进行功能丰富且合理可行的分析。很多人因为不具备相关的技术能力,往往坐拥金山,但就是不知道怎么挖掘。

要学完 Python 或者 R 的初级操作,你至少需要学一门课程,或者啃一本教材。但是现在,你只需要和 Code Interpreter 对话,就能把这样的分析结果保质保量快速做出来,甚至比数据分析师基础入门水平都要靠谱,不亦乐乎?

ChatGPT 的 Code Interpreter,目前还在 Alpha 阶段。功能非常初级,时常遇到环境更新导致的不稳定,还有各种限制。例如说你可以让它帮你绘制统计图,英文显示都很好,但所有中文显示都是这个样子:

你当然可以让 Code Interpreter 自己去改进。但是它折腾一通,也只能给你展示这种无奈:

但是,我们有理由相信,这些问题随着技术产品的迭代改进,都会逐步解决的。

你在数据分析的过程中,使用过其他的 AI 产品吗?有什么可以推荐给大家的?欢迎留言,咱们一起交流讨论。

祝(自动)数据分析愉快!

如果你觉得本文有用,请点赞

如果本文可能对你的朋友有帮助,请转发给他们。

欢迎关注我的专栏,以便及时收到后续的更新内容。

延伸阅读




https://blog.szjingmu.com/blog-377709-1387949.html

上一篇:如何用 AI 练英语口语?
下一篇:如何用 ChatGPT 做数据进阶可视化?(三维交互图与动图视频)
收藏 IP: 218.68.105.*| 热度|

3 郑永军 农绍庄 杨锦忠

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-3-29 21:16

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部