解决Cursor报错问题:如何优化Pandas Series数据操作

释放双眼,带上耳机,听听看~!
本文介绍了如何解决使用Cursor时对Pandas Series数据进行reshape时出现的报错问题,并结合机器学习课程,讨论了语言模型无法执行代码、ChatGPT的回答存在随机性以及ChatGPT的时效性问题。

写这篇文章的起因在于我近期经常向Cursor咨询概念问题,得到的回答都比较满意,这次一个小的代码问题翻车了,就想记录下来,结合李宏毅老师最新的机器学习课程,写下了一些个人理解。

一、发现问题:Cursor生成错误代码

我需要对pd.Series格式的数据进行reshape,因为最近经常用Cursor(一个基于GPT-3/4的代码辅助工具,近期好像停止了对GPT-4的接入),于是直接咨询了它:

解决Cursor报错问题:如何优化Pandas Series数据操作

直接复制这段代码并运行,报错了:

解决Cursor报错问题:如何优化Pandas Series数据操作

报错原因是:AttributeError: 'Series' object has no attribute 'reshape'Series没有reshape属性,我们知道reshape其实是numpy中的方法,所以需要先将Series转换为array,再进行reshape操作,即

reshaped = np.array(s).reshape(2, 3)

解决Cursor报错问题:如何优化Pandas Series数据操作

二、解决问题:Cursor解决报错问题

虽然它提供了错误代码,但是这个小问题解决起来应该不难,我又接着问了它,怎么解决上面的问题,它给出了可以正常运行的答案和理由:reshape方法在pandas Series中不可用,需要先用np.array(s)Series转换为一个NumPy array

解决Cursor报错问题:如何优化Pandas Series数据操作
解决Cursor报错问题:如何优化Pandas Series数据操作

思考1:语言模型无法执行代码

无论是GPT-3还是GPT-4,它始终是一个生成式语言模型,输入文本或者图片,均是在完成文字接龙式的工作,输出相应的文本结果。输出的文本可以以代码的形式展现,但是语言模型本身无法执行代码,无法保证生成代码的正确性。要想减少错误,可能需要在模型进行预训练或监督学习时进行优化。(据OpenAI内部评估,GPT-4产生正确回应的可能性要比GPT-3.5高出40%。)

三、发现问题测试:使用ChatGPT测试

虽然Cursor官网之前使用了GPT-3,但是我还是使用ChatGPT重复了上述发现问题的过程。

第一次测试:回答正确

解决Cursor报错问题:如何优化Pandas Series数据操作

解决Cursor报错问题:如何优化Pandas Series数据操作

ChatGPT的回答通过s.valuesSeries数据转换为array格式,运行正常。

第二次测试:回答错误

解决Cursor报错问题:如何优化Pandas Series数据操作

解决Cursor报错问题:如何优化Pandas Series数据操作

这个结果又犯了之前Cursor部分所说的错误。

思考2:ChatGPT的回答存在随机性

对于一般的机器学习/深度学习模型而言,单一的输入会对应固定的输出,但对于需要有”创造力”的任务(例如聊天、绘画),不同的人会期望有不同的回答。将神经网络作为生成器使用,在输入中加入随机的概率分布(噪声),通过神经网络,就能生成复杂的分布,输出不同的结果。以上就是生成式对抗网络(GAN)的生成器部分,判别器和对抗部分暂时不涉及(个人还在学习中)。

而ChatGPT正是使用了生成式对抗网络(GAN),输出的结果具有随机性,可以提供各式各样有具有”创造力”的回答。像前一部分的问题测试,同一问题得到对错两种答案,这可能会造成一定的困扰,或者无法复现原来的回答,这个特点好坏都有。

以下是ChatGPT自己的回答:

解决Cursor报错问题:如何优化Pandas Series数据操作

在new chat里又问了一次:

解决Cursor报错问题:如何优化Pandas Series数据操作

四、解决问题测试

第一次测试:解决问题

在发现问题测试得到错误回答后,我又继续说明执行报错了,它的回答是reshape()方法不支持在Pandas 1.0之后版本的Series上使用,然后给出了与测试正确的回答中相同的正确代码。

解决Cursor报错问题:如何优化Pandas Series数据操作

第二次测试:解决问题

又询问了一遍,给出了与上面不同的方法to_numpy解决问题,但是文字描述部分提到的Pandas版本与上面不同。

解决Cursor报错问题:如何优化Pandas Series数据操作

思考3:ChatGPT的时效性问题

对比解决问题测试中的两次回答,第一次回答reshape()方法不支持在Pandas 1.0之后版本的Series上使用,第二次回答在Pandas 1.3.0及以后的版本中Series没有reshape方法。虽然逻辑上Pandas 1.0之后没有与1.3.0之后没有并不能算矛盾,但我还是去Pandas官网找到了Pandas 1.0.5的文档,里面提到了• The Series, Categorical, and Index classes have dropped the reshape method (GH13012),说明1.0.5版本就移除reshape方法了。

编程语言的时效性

对于这个问题,我的想法是,各种编程语言、框架或者第三方库都在不断更新,以我个人最常使用的pandas为例,经常会有FutureWarning提到当前使用的部分方法会在未来版本被废弃,那么ChatGPT能否规避版本落后导致的错误呢?这个可能需要时间来得到答案。

真实信息的时效性

ChatGPT是不能联网的,也就是说,不能通过网络搜索来获取答案,当前的训练数据库的最晚时间只到2021年9月,在遇到涉及时间的问题时无法提供答案。考虑到ChatGPT的训练数据量庞大,过于频繁地更新数据库并不现实,时效问题还是需要通过搜索引擎获取。

解决Cursor报错问题:如何优化Pandas Series数据操作

总结

  1. ChatGPT无法执行代码,不能保证生成的代码完全正确
  2. ChatGPT的回答存在随机性,这一特别有好有坏
  3. ChatGPT的数据库不能联网,时效性较差

本文正在参加 人工智能创作者扶持计划

本网站的内容主要来自互联网上的各种资源,仅供参考和信息分享之用,不代表本网站拥有相关版权或知识产权。如您认为内容侵犯您的权益,请联系我们,我们将尽快采取行动,包括删除或更正。
AI教程

Meta发布全新分割任何项目及其效果

2023-12-14 10:50:14

AI教程

基于深度学习的高精度西红柿检测识别系统

2023-12-14 10:55:14

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索