×

SEO ChatGPT Code Interpreter

解锁数据分析新境界:ChatGPT引领Code Interpreter探索之旅

元智汇电子 元智汇电子 发表于2024-01-08 13:55:42 浏览113 评论0

抢沙发发表评论

image.png

OpenAI近期向所有Plus用户开放了Code Interpreter,这无疑是一个令人振奋的消息。我迫不及待地进行了初步测试,并结果喜出望外。得益于Python代码的支持,Code Interpreter在数据分析领域展现出了强大的潜力。无论是普通的Excel数据分析还是专业的数据分析,通过与ChatGPT的对话,都可以轻松完成,从而彻底改变了我们进行数据分析的方式。

为了全面展示Code Interpreter的能力,我特意选择了一个来自Kaggle的数据集。通过一系列任务,从简单的数据分析生成图表到复杂的机器学习建模,逐步深入探索了Code Interpreter的多才多艺。

无论你是日常使用Excel进行数据分析,还是熟练运用Python代码,都能从这个案例中了解如何充分利用Code Interpreter以及它在数据分析中的强大能力。

我选取的数据集涉及Netflix的8000多部电影和电视节目,包含导演、演员、评级、发布时间、观看时间、节目类型、节目描述等详细信息。

在接下来的内容中,我将首先介绍如何安装Code Interpreter,然后逐步引导它完成从简单到复杂的数据分析任务。最终,我将对Code Interpreter对数据分析领域的影响以及它本身的局限性进行总结。让我们共同探索这个数据分析新境界!


如何启用Code Interpreter:

为了使用ChatGPT的代码解释器(Code Interpreter),首先确保您已拥有ChatGPT Plus账户。登录ChatGPT后,点击左下角用户名旁边的三个点按钮,以打开ChatGPT的设置窗口。

image.png

image.png

在新窗口中,点击左侧的"Beta features",然后将右侧底部的Code Interpreter切换到启用状态。

image.png

关闭窗口后,将鼠标悬停在ChatGPT主界面上方的"GPT-4"按钮上,并在弹出的下拉菜单中选择"Code Interpreter"。

image.png

这样,您成功启用了Code Interpreter。

image.png


数据清理与预处理探秘

ChatGPT在处理数据时,由于无法直接上传文件,我们可以利用Code Interpreter的强大功能来实现文件上传和数据处理。这为数据分析提供了更为便捷的途径,克服了ChatGPT在文件上传方面的局限性。

激活了Code Interpreter后,通过点击聊天输入框左侧的加号,我们能轻松打开本地文件浏览器,直接上传文件。这项功能支持512M以内的文件上传,并可在上传前解压缩,足够处理大规模的数据文件。

image.png

我以Kaggle上下载的一个解压包为例,省去了手动解压的步骤。上传后,我即刻向Code Interpreter提出了数据分析任务。

ChatGPT回复的第一步是确认数据分析的一般步骤,包括数据收集、数据处理、探索性数据分析(EDA)、建模(如有必要)和解释。随后,它对我们提供的数据集进行了初步分析,给出了数据集的文件结构和每列的含义。

image.png

image.png


接下来,ChatGPT进行了数据处理的建议,列出了数据集中各列的缺失值情况。它为导演、演员和国家等列的缺失值提供了填充建议,同时对于日期、评级和观看时间等列的缺失值建议删除对应行。

为了展示Code Interpreter的处理过程,我要求ChatGPT显示其工作。它展示了用Python代码实现的解压文件和数据清理的过程,帮助我们更好地理解数据处理的底层逻辑。ChatGPT的代码非常清晰,并附有详细注释,使得即便不懂代码的人也能理解其执行步骤。

最终,Code Interpreter成功处理了所有缺失值,确保数据集不再包含任何空缺数据。我们随后可以顺利进行探索性数据分析(EDA),深入了解数据的分布和不同变量之间的关系,寻找有趣的模式和见解。在这一步,我向ChatGPT提出了关于数据集探索的问题,以引导下一步的分析。

通过Code Interpreter,我们不仅能够便捷地上传和处理数据,还能利用ChatGPT的智能分析能力进行更深层次的数据挖掘。这一流程简便而高效,为数据分析提供了全新的可能性。


深入探索数据:EDA视角多维解析

数据如同一幅拼图,而探索性数据分析(EDA)则是揭示拼图整体轮廓、找到关键部分、建立联系的第一步。在各行业中,EDA都发挥着关键作用,帮助初步熟悉数据集,发现关键特征,为进一步深入分析奠定基础。

Code Interpreter在进行EDA时,自动选择了四个关键方面:

  1. 类型分布(电影与电视节目):揭示Netflix上最普遍的内容类型。

  2. 逐年增加的内容:观察Netflix上内容随时间的变化趋势。

  3. 按国家划分的内容生产:了解哪些国家在Netflix上是主要的内容生产者。

  4. 评级分布:分析Netflix上内容的成熟度评级分布。

image.png

image.png

image.png

image.png

通过这些角度,我们迅速了解了数据集的概貌。不仅如此,Code Interpreter通过自动生成图表和提供详细解释,使得即便对数据分析不熟悉的人也能轻松理解分析结果。

进一步,我提出了两个额外的分析视角:

1. 分析电影的持续时间。

  • Code Interpreter通过统计数据和可视化电影时长的分布,清晰呈现了Netflix上电影时长的特征。这包括了最短、最长和平均电影时长,为我们提供了对电影长度的整体了解。

image.png

2. 展示节目类型和它们的数量之间的关系。

  • Code Interpreter对listed_in列进行拆分,计算每个节目类型的出现次数,并通过柱状图可视化展示了Netflix内容按类型的计数。这样的分析不仅揭示了最常见的内容类型,还提供了关于Netflix内容多样性的洞察。

image.png

这一系列EDA的结果帮助我们更深入地了解了数据集,同时也为进一步的数据挖掘和分析提供了指导。Code Interpreter在每个步骤都灵活运用了数据处理和可视化的技巧,使得整个探索过程既系统又富有洞察力。


自然语言处理应用:探索标题中的关键词

现在我们将Code Interpreter的注意力转向自然语言处理(NLP),看看它如何处理和分析文本数据。NLP专注于使计算机能够理解和与人类语言互动,类似于人们之间的交流方式。ChatGPT利用NLP技术,通过语言建模、句法和语义理解以及情感分析等方式进行人机对话。

通过Code Interpreter,我们使用NLTK库进行NLP任务,具体来说,分析标题中的最频繁词汇。这个任务可以通过计算单词频率来了解文本的主要主题或趋势。

我给予Code Interpreter以下任务:

分析标题中最频繁的词汇。

image.png

ChatGPT使用NLTK库执行了词频分析,然后输出了分析的过程和结果。它展示了最常见的20个单词,但也提到了由于权限限制而无法下载完整的英文停用词表的问题,并手动定义了一个基本的停用词表。

接着,我引导Code Interpreter手动排除一些停用词,同时要求以词云的形式展示结果。词云提供了一种直观的方式,通过单词的相对大小来呈现它们在文本中的频率。

image.png

最终的结果表明,“爱”、“世界”、“生活”、“故事”等词汇是Netflix标题中最常见的,暗示着这些主题在Netflix的内容中占有一席之地。

这一系列NLP任务展示了Code Interpreter在处理文本数据时的灵活性,使得即使对数据分析不熟悉的用户也能轻松地从文本中提取洞察。你还有其他想要在这个数据集中进行探索的吗?


时间序列分析:观察电影和电视节目类型随时间的变化

时间序列分析提供了一种深入了解数据随时间演变的模式和趋势的方法。在娱乐产业,这意味着了解电影和电视节目类型如何随着时间推移而变化,这可以揭示观众偏好和制作策略的趋势。

我的任务是让Code Interpreter通过绘制图表展示这些变化。

电影类型随时间的变化:

首先,我们将电影和电视剧分开,并拆分“listed_in”列,以便能够分析每年每种类型的频率。通过生成折线图,我们可以清晰地看到随着时间的推移前五种电影类型的变化。

image.png

观察到,“国际电影”、“剧情片”和“喜剧”的数量逐年显著增加,尤其是在2000年之后。相反,“纪录片”和“动作与冒险”类型相对稳定。

电视节目类型随时间的变化:

接下来,我们对电视节目进行相同的分析。同样,折线图清晰地展示了随时间变化的前五种电视节目类型。

image.png

“国际电视节目”、“电视剧”和“电视喜剧”的数量逐年显著增加,尤其是在2010年之后。与之相比,“犯罪电视节目”和“儿童电视节目”也有所增加,但幅度较小。

这些趋势反映了Netflix在内容制作上的演变,特别是对国际电影和戏剧类型的投入增加。这种时间序列分析不仅帮助我们理解过去的变化,而且为未来的决策提供了有价值的见解。

您对这个数据集还有其他想要探索的方面吗?


统计推断:检测发行时间与添加时间之间的关系

统计推断是一种基于有限数据样本得出结论并对总体进行预测的方法。通过假设检验和置信区间等统计技术,我们可以量化我们估计的不确定性。让我们使用这些方法来探索数据中“release_year”(发行年份)和“date_added”(添加时间)这两列之间是否存在显著的线性关系。

我的问题是:

执行相关性检测以查看“release_year”和“date_added”之间是否存在显著的线性关系。

回答:

首先,确保两个变量都是数值。 'release_year' 已经是数字,但 'date_added' 是一个日期时间对象。 我们需要从“date_added”中提取年份并将其用于相关性测试。

我们将使用皮尔逊相关系数来衡量两个变量之间线性关系的强度和方向。其取值范围在-1到1之间。接近1的值表示强正关系,接近-1的值表示强负关系,接近0的值表示没有线性关系。

计算“release_year”与该节目添加到 Netflix 的年份之间的皮尔逊相关系数后,发现其约为0.11。这表明这两个变量之间存在弱正线性关系。简而言之,我们可以说节目在临近上映年份时有轻微的趋势被添加到 Netflix,但这种关系并不是很强。其他因素,例如许可协议和内容策略,可能在决定何时将节目添加到 Netflix 时发挥着重要作用。


数据挖掘:揭示导演和节目类型的关联

在数据分析中,数据挖掘旨在从庞大而复杂的数据集中提取有用信息,发现潜在的关系或趋势,为更明智的决策提供指导。举例来说,在零售业中,数据挖掘可用于识别客户购买行为的模式,实现个性化营销并提高销售额。在医疗保健领域,它有助于分析患者记录,发现风险因素或预测疾病结果,从而实现更有效的医疗管理。

让我们通过数据挖掘的方式,揭示导演和节目类型之间是否存在潜在的关联。

我的问题是:

发现导演和节目类型之间的关联。

回答:

分析导演和节目类型之间的关联可以深入了解某些导演与特定内容类型的关系。为此,我们需要执行以下步骤:

拆分“导演”列和“listed_in”列,以便处理每个导演和每种节目类型。

按导演分组并统计每种类型的频率。

请注意,由于导演和节目类型的独特性可能很多,因此为了便于分析,我们将关注执导过最多节目的前20位导演。

以下是前20位导演与其节目类型之间的关联数据表。每个单元格表示导演在特定类型中的执导数量。

image.png

为了更直观地呈现这些数据,我们还生成了一张热图。该热图显示了前20位导演与其节目类型之间的关联,颜色强度表示导演在特定类型中的执导数量。深色单元格表示较多的演出次数。

image.png

通过热图,我们可以观察到一些明显的关联。例如,导演Suhas Kadav与“儿童和家庭电影”类型紧密相关,而Rajiv Chilaka与“儿童电视”类型相关。此外,导演凯茜·加西亚-莫利纳与“喜剧”相关,阿努拉格·卡什亚普与“惊悚片”相关。

请注意,一位导演可能涉足多个节目类型,这份分析仅考虑了根据他们执导的节目数量排名前20的导演。

如果您对数据集中的其他方面有兴趣,还有什么您想要探索的吗?


机器学习建模:构建基于内容的推荐系统

在数据分析中,机器学习建模是指通过训练计算机算法,使其能够自动学习模式并基于输入数据做出预测或决策的过程。这使得模型能够对新的、未见过的数据进行概括并做出准确的预测。对于这个数据集,我们可以探索构建基于内容的推荐系统,使用文本数据(如标题和描述)以及分类数据(如导演、演员、国家/地区和评级)。

我的问题是:

您可以为此数据集构建哪些机器学习模型?

回答:

机器学习模型的选择取决于您感兴趣的具体问题或任务。以下是一些建议:

  • 内容推荐: 如果您希望根据用户的观看历史向其推荐类似的内容,可以使用协作过滤模型(如矩阵分解)或基于内容的过滤模型(根据项目属性推荐类似的项目)。

  • 类型预测: 如果您想根据其他特征(如导演、演员、描述)来预测电影或电视节目的类型,可以使用监督学习模型,包括决策树、随机森林、支持向量机或神经网络等。

  • 情感分析: 如果您希望预测用户评论的情感,可以使用自然语言处理模型,如朴素贝叶斯、逻辑回归,甚至更复杂的模型,如循环神经网络 (RNN) 或 Transformer。

  • 趋势预测: 如果您有兴趣预测未来趋势(例如特定类型的电影或电视节目的数量),可以使用 ARIMA 或指数平滑等时间序列预测模型。

模型的有效性取决于数据的质量、数量以及特征工程和模型调整的步骤。请务必进行模型解释和评估,以避免过度拟合并确保模型能够很好地推广到未见过的数据。如果您有特定任务或问题感兴趣,请告诉我,我可以提供更详细的建议。

接下来,我们可以探索构建一个基于内容的推荐系统。通过使用文本和分类数据,我们可以执行预处理、特征提取、相似度分数计算和最终的推荐步骤。在这个例子中,我们使用了CountVectorizer技术将文本数据转换为数值格式,计算了余弦相似度分数,并成功地构建了一个推荐系统。

尽管在构建内容推荐系统方面,Code Interpreter展现了较好的表现,但在预测电影评级的任务上遇到了一些挑战。建议考虑更复杂的模型和编码方法,但由于沙盒环境的限制和可能的遗漏,最终结果并不理想。以下是对两个任务的概括:

构建内容推荐系统:

机器学习模型的选择取决于具体的任务。对于内容推荐系统,基于内容的方法是一个不错的选择。Code Interpreter利用了CountVectorizer对文本数据进行简单的特征提取,然后使用余弦相似度计算项目之间的相似度分数,从而实现了基于内容的推荐。尽管使用了简单的方法,推荐系统在提供相似项目方面似乎表现良好。

预测电影评级:

预测电影评级是一个更具挑战性的任务。Code Interpreter首先尝试了决策树分类器,但结果并不理想。接着尝试了随机森林分类器,虽然性能有所提高,但仍然存在改进的空间。在数据预处理过程中,遇到了处理高基数分类特征的问题,而在建模时由于环境限制和可能的遗漏,表现未达到理想水平。

建议进一步尝试更复杂的模型,例如支持向量机、神经网络等,并采用更先进的编码方法处理高基数分类特征。同时,注意数据集中类别的平衡以及选择适当的性能指标。


在Code Interpreter崭露头角之前,成为一名数据分析师似乎是一项高门槛的任务。

然而,随着Code Interpreter的问世,"人人都是数据分析师"这一口号逐渐变为现实。通过以上案例的测试,我们不难发现Code Interpreter的强大能力。尤其对于那些依赖Excel进行日常数据分析的人来说,Code Interpreter几乎是完美的搭档。通过上传Excel表格,用户可以通过对话方式指导ChatGPT进行数据分析,并轻松生成各种漂亮的图表。

对于专业的数据分析师或数据科学家而言,Code Interpreter同样提供了强大的支持。在这些领域,用户需要具备统计学知识,熟悉不同情景下的数据分析方法,以更有效地指导Code Interpreter完成复杂的工作。然而,对于涉及机器学习建模的更复杂数据分析任务,Code Interpreter可能显得有些力不从心。由于沙盒环境的限制,缺乏必要的代码库和计算资源,因此提供的是基本的建模思路。

总体而言,低代码在数据分析领域的兴起不可忽视。我们正逐渐减少亲自编写代码的需求,更多地是通过ChatGPT等人工智能工具,根据我们的指导来进行数据分析。通过这种方式,我们可以将更多时间用于深入了解业务、加强数学和统计学知识,并熟练掌握机器学习建模的各个环节。


尽管Code Interpreter在数据分析领域带来了革命性的影响,但仍存在一些限制:

  • Plus账号需求: Code Interpreter目前仅对Plus会员开放,这可能限制了其大规模的普及。即便拥有Plus账号,每三个小时50条会话的限制对于一些庞大项目的使用可能不太方便。

  • 无法联网: Code Interpreter使用的Python库都是在沙盒环境中内置的,无法通过联网下载一些未内置的库。此外,如果涉及新兴话题,由于ChatGPT缺乏实时知识,可能无法理解项目,从而影响分析的准确性。

  • 不稳定性: Code Interpreter对上传数据的记忆时间有限制,超过时间限制可能需要重新上传数据。由于模型本身的随机性,每次分析方法可能存在差异。

  • 中文支持不足: 在数据分析过程中,最好使用英文进行对话,否则可能出现显示异常或分析能力不如英文环境的情况。

  • 机器学习能力有限: 对于一般的数据分析任务,Code Interpreter表现良好,但涉及复杂的机器学习建模时可能会遇到一些困难。


总结:

Code Interpreter使我们能够通过对话轻松分析庞大而复杂的数据,强调的是指导人工智能工具处理复杂而繁重的工作,而非亲自编写代码。尽管目前存在一些限制,但随着其不断迭代,这些限制有望逐渐减少。Code Interpreter为每个人都有可能成为数据分析师的未来提供了更近一步的可能性。


群贤毕至

访客