ChatGPT在数据科学应用中的优势与不足

2024年01月30日 由 daydream 发表 422 0

ChatGPT在数据科学方面非常有用,但你必须仔细检查它的所有输出。对于某些任务来说,它非常出色,可以快速且准确地完成。对于其他一些任务,它的表现还算可以,你需要多次提示它。


微信截图_20240130134219


优点:自动化数据探索


你可以将你的数据集附加到ChatGPT消息中,通过给出几个简单的指令,ChatGPT就可以为你探索数据。


例如,我可以从这个数据项目中获取一个数据集。我给出的指令是:


“使用附带的数据进行描述性统计分析。包括以下内容:


  • 汇总基本统计量(平均值、中位数、标准差等)。
  • 识别缺失值并提出处理它们的策略。”


它返回的摘要如下所示。它对每个变量都进行相同的计算。


年龄:


  • 平均年龄:28.79岁
  • 标准差:6.94岁
  • 范围:18至50岁


数据集没有发现缺失值。


如果你还需要这些计算的Python代码,你可以要求它写出来。


要加载数据集,请使用以下代码。

aerofit_data = pd.read_csv(file_path)


对于基本统计信息,它给出了这个。

basic_stats = aerofit_data.describe()


你还可以用这段代码检查缺失值。

missing_values = aerofit_data.isnull().sum()


优点:创建可视化图表


进一步地,我可以要求ChatGPT可视化关键变量的分布,并检测潜在的离群值和异常值。


它为关键变量:年龄、收入和里程数创建了直方图和箱线图。它发现了收入和里程数分布中可能的离群值。


微信截图_20240130144931微信截图_20240130144939


它还解释了这些可视化图表。因此,它注意到收入的分布是右偏的,这表明大多数客户的收入处于较低端,而较少的客户有显著更高的收入。箱线图表明高端有一些离群值。


微信截图_20240130144945微信截图_20240130144951


对于里程数分布也有相同的解释:右偏且高端有离群值。


考虑到数据的性质,它建议这些离群值不一定是错误,而是代表特定的客户群体。关于偏态分布,它建议进行转换(例如,对数转换)以使数据正态化。


当然,你也可以要求它编写这些可视化的Python代码。

 

优点:验证数据对特定统计测试的适用性


我可以使用相同的数据并询问ChatGPT它是否适用于逻辑回归。如果不适合,我应该如何转换它使其合适?


它回答说我的数据主要适用于连续数据的叙述性和推论性分析。


以下是为逻辑回归转换数据的建议方法。


创建二元结果:通过基于Usage变量的中位数分割,将客户分类为“高使用量”或“低使用量”。此外,二元结果可以是“购买跑步机”与“不购买跑步机”。


检查多重共线性:使用相关矩阵或方差膨胀因子(VIF)来检查多重共线性。如果有多重共线性,可以移除或合并相关的变量。


特征缩放:虽然对于逻辑回归模型拟合来说,特征缩放不是必需的,但它对收敛有益。特别是对于规模显著不同的特征尤其如此。


处理非线性:对于不满足线性假设的变量,可以使用诸如对数或平方根之类的转换。


样本大小:数据集必须足够大,以适应预测变量的数量。


数据预处理:建议处理离群值和分类变量(通过独热编码或标签编码)。另外,它还建议处理缺失值,但这对我的数据不适用,因为没有缺失值。


优点:自动化数据科学项目的部分或全部


ChatGPT实际上在数据科学项目的每个阶段都很有帮助。你可以提示它编写一个网络爬虫代码。你可以指导它探索和准备你的数据,以适用于机器学习算法。它还可以为你提供选择正确算法、数据集分割、A/B测试和性能提升算法的代码。最后,你还可以要求ChatGPT编写模型部署的代码。


尽管ChatGPT能做所有这些,但很可能你不会立即得到一个完全符合你需求的代码。因此,你必须理解你想要实现的目标并检查代码。你可能不得不提示ChatGPT进行代码修正,并提供更多关于要更改什么的指令。


优点:代码转换和学习


ChatGPT可以帮助那些仍在学习新编程语言的用户。想象一下,你是一个SQL大师,解决这个面试问题上没有问题。然而,你想将Python添加到你的技能中。ChatGPT可以在这方面帮助你。你可以复制SQL代码并要求ChatGPT将其转换为Python。


所以,SQL代码是这样的。

SELECT 
company,
profit
FROM
(
SELECT
*,
rank() OVER (
ORDER BY
profit DESC
) as rank
FROM
(
SELECT
company,
sum(profits) AS profit
FROM
forbes_global_2010_2014
GROUP BY
company
) sq
) sq2
WHERE
rank <= 3;

 

ChatGPT根据上面的SQL代码编写了Python代码,但它运行不正确。所以我批评ChatGPT没有写出正确的代码。我要求它再试一次,因为输出与SQL代码的结果不同。它再次尝试并返回了正确的结果。

import pandas as pd

# Assuming 'forbes_global_2010_2014' is a pandas DataFrame with columns 'company' and 'profits'
# Since we don't have the actual data, this code assumes that the DataFrame is already loaded

# Step 1: Group by company and sum the profits
company_profits_sum = forbes_global_2010_2014.groupby('company')['profits'].sum().reset_index()

# Step 2: Rank the companies by profit in descending order
company_profits_sum['rank'] = company_profits_sum['profits'].rank(ascending=False, method='max')

# Step 3: Filter the top 3 companies
top_companies = company_profits_sum[company_profits_sum['rank'] <= 3]

# Final selection of columns
result = top_companies[['company', 'profits']].sort_values('profits', ascending=False)

result # This will display the top 3 companies by profit

 

正如你所见,你得到了一个带有注释的好代码,每个代码块之前都有注释。为了提高你的学习效果,你可以要求它解释这段代码。这样,你将更深入地了解每一行代码的作用及其运作方式。

 

差劲:统计和数学计算


当我说差劲时,我指的是非常差劲!它甚至使用正确的公式和插入正确的值,但不知怎地,即使是很简单的计算也搞得一团糟。


看看这个。我要求它解决这个问题:“假设你公平地掷一个六面骰子10次。掷出两个1、三个2、一个3、零个4、三个5和一个6的概率是多少?”


它以这种方式计算概率。


微信截图_20240130145229


当计算阶乘时,它就会出错。


当我要求它无需进一步解释就纠正计算时,它再次计算并得出了概率为0.0001389。我简直不敢相信自己的眼睛!它可以使用完全相同的公式和值,但得出了仍然错误的不同的结果!


我又让它纠正计算,它终于给出了正确的结果:0.0008336。


必须承认的是,这些错误是由ChatGPT 3.5犯下的。我问ChatGPT 4同样的问题,它第一次就给出了正确的计算结果。你也可以使用一些数学插件来确保安全。

 


结论


从以上这些中得出的主要教训是,ChatGPT可以是一位非常好的仆人。它可以在编写代码、调试、分析和可视化数据方面提供帮助。然而,永远不要完全信任它,也不要未经仔细审查就接受它所写的东西。


检查它编写的代码和计算。毕竟,你是一名数据科学家,而ChatGPT不是!你可能无法在第一次尝试时从ChatGPT那里获得所需的结果。但是,给它更精确的指示并尝试多次可能会得到所需的结果。


文章来源:https://www.kdnuggets.com/what-i-learned-from-using-chatgpt-for-data-science
欢迎关注ATYUN官方公众号
商务合作及内容投稿请联系邮箱:bd@atyun.com
评论 登录
热门职位
Maluuba
20000~40000/月
Cisco
25000~30000/月 深圳市
PilotAILabs
30000~60000/年 深圳市
写评论取消
回复取消