在使用ChatGPT进行自动化测试中,我们讨论了如何轻松地让生成式AI编写测试脚本和软件库,使与测试设备的通信变得简单。现在您已经熟悉了自动化测试脚本,是时候自动化处理测试数据了。使用ChatGPT进行数据分析可以是简单和流畅的。在这篇文章中,我们将探讨如何使用我最近的电池测试中的新鲜测试数据来做到这一点。
我最近进行了一些测试,以对一款智能电池进行性能分析,并想了解一些报告寄存器的准确性,特别是:
我从测试脚本中获取的输出数据是CSV格式,因此很容易导入到Microsoft Excel中。自然地,像大多数工程师一样,我本可以使用带有精美表格、图表和一些Excel公式魔法的电子表格来查找我所寻找的数据。然而,我决定,我真正想要的是一个助手,我可以向其提出一系列问题并获取我所寻找的数据。
借助AI及其自然语言模型,我可以用简单的英语提问我的数据,并获得我所寻找的结果。更好的是,最近添加的高级数据分析插件(以前称为“代码解释器”)在GPT-4上。它不仅会向我展示它在处理我的指令时编写的Python代码,而且还可以使用Python中的Matplotlib库为我绘制数据图表。请注意,我提到的是ChatGPT的付费版本,但您仍然可以在ChatGPT的免费版本(或其他生成式AI系统)中获得大部分您所寻找的内容。
在开始之前,我想了解我的AI能做什么以及不能做什么。我将我的CSV测试数据上传到ChatGPT,并询问了一些简单的问题,例如“电池报告的平均温度是多少?”我很快发现我给出的数据集太大了。我有两个选择:减少我的数据量或要求它提供在本地针对我的数据运行的命令。我决定两者都做。有了高级数据分析插件,它会提供在其机器上运行的代码片段(用Python)。一旦我向GPT-4提供了我的精简文件,它就能开始分析数据。
在这篇文章中,您将看到它提供的可以在更大数据集上本地执行的代码片段。让GPT-4首先执行代码是他们首次推出ChatGPT时缺少的一个关键组成部分。我经常收到无法工作的生成代码。有了高级数据分析,这种情况停止发生了(因为它会在失败后尝试自我纠正)。
当你首次加载数据时,稍微测试一下水是很好的。首先,我让ChatGPT分析我的数据,并让它告诉我它认为能做什么:
图1:初始数据加载
之后,它给我一些建议,我认为我会想看到:
图2:分析建议
我对相关矩阵很好奇。我想知道温度如何与电压和电流相关,所以我会问:
展示温度、供电电压/电流和负载电压/电流之间的相关性。
它给了我一个很好的分解,说明所有变量是如何相关的:
图3:相关矩阵
如果我让ChatGPT为我绘制它,我得到:
图4:相关矩阵图
它给了我一些额外的相关性,我真的不在乎,但我可以忽略它。
现在我已经进行了一些数据探索,我想继续验证我的数据集。如上所述,我想了解智能电池报告其内部电压和电流的准确性。跟踪这一点最简单的方法是从我的仪器读取供电和负载功率,并将其与报告的电池功率进行比较。显然,电缆会有一些损失,充电器的效率会下降,所以我们只需查看两者之间的相关性,从而确定我们的准确性。
虽然ChatGPT提供的自然语言模型非常好,但它肯定不是完美的。有些概念它可能不完全理解。如果你让它进行统计分析,它通常知道该怎么做,但它可能不总是理解简单的工程术语。为了解决这个问题,我尽量使我的请求尽可能简单,以防止下游出现问题。我让ChatGPT创建三个新的列:
让我们创建三个新的数据列:
- 供电功率:供电电压 * 供电电流
- 负载功率:负载电压 * 负载电流
- 电池功率:abs(电压 * 电流)/1000/1000
我还需要指出,当我的负载功率=0(即直流电子负载没有从被测设备中吸取电流)时,这意味着我们正在充电。当负载功率非零时,这表明我们正在放电。再次,为了不让GPT-4感到困惑,我像这样在请求中提及:
绘制负载功率和电池功率随时间戳的变化,但仅当负载功率非零时
我得到的结果是一个很好的图表:
图5:负载和电池功率图
现在数据看起来不错,我可以要求进行相关性和其他分析:
展示两者之间的相关性(仅在非零设置中)
图6:相关性计算
当我询问其他统计数据时:
两者之间的平均差异、标准差和方差是多少(仅限非零)[以百分比表示]
图7:负载和电池功率的统计数据
这帮助我验证了我的直觉,即两者紧密相连,因为只有很少的电缆损失。我现在对充电部分进行相同的分析:
让我们进行相同的分析,但是当负载功率为0时,绘制供电功率和电池功率随时间戳的变化
图8:供电和电池功率图
如你所见,我有一些故障。这是因为智能电池遥测与我的仪器不同步。理想情况下,我应该进入充电模式(即关闭电子负载并打开电源),然后再等待几秒钟再收集遥测数据。这是因为有一系列命令在电池和充电器之间发送,以“协商”向电池提供多少电力。可以将这看作是USB-C电源传递的简化版本(如果你熟悉这个概念的话)。
不幸的是,我没有在我的遥测收集脚本中考虑到这一点,所以现在我需要过滤掉一些异常。不用担心,ChatGPT也能做到这一点。经过几次迭代,我“训练”我的AI“学习”什么被认为是故障,什么不是(例如,什么被认为是标准统计分析功能中未考虑的异常值),然后它应用这些知识:
图9:供电和电池功率的过滤图
当我请求相同的统计数据时,我得到了一个完整的分解:
图10:供电和电池功率的过滤图上的统计数据
这是个好消息。我预期值之间会有更大的差异,因为无论是电缆还是电源转换器都会有损耗。
ChatGPT也可以通过寻找异常来作为你的数据清洗工具。过去我见过一些温度寄存器出现的小故障。我请求ChatGPT“告诉我你是否在我的数据中看到任何故障”,它返回:
图11:在温度数据上寻找异常
这可以为你识别故障提供一个良好的起点。在这个特定的测试中,看起来温度寄存器功能正常。考虑到我请求ChatGPT为我绘制的这个功率效率图:
图12:绘制功率效率图
很明显,我的数据中存在一些异常。效率> 100%显然是不可能的,GPT-4也知道这一点:
图13:ChatGPT对异常的看法
经过我的调查,我确实发现了一个故障,存在于通信总线上。我请求ChatGPT过滤掉所有效率> 100%的数据点。此时,我可以请求一个下载链接来获取过滤后的数据,重新绘制图表,或进一步过滤数据。
在这篇文章中,我们探讨了如何利用ChatGPT来分析、过滤和操作我们的测试报告中的测试数据。我们通过上传测试数据并询问ChatGPT它能做什么开始了我们的探索,然后进入数据验证和清洗。这里的关键收获是,我们可以利用自然语言为我们自己提供通过数据集的引导式探索。在未来几个月中,我们将看到AI领域的其他参与者开始在他们的应用程序中提供类似的功能。随着我们进入这个配对生态系统,我们将使用AI来支持和引导我们进行分析,而不是替代我们。随着AI在数据处理中变得更加普遍,我们作为个体的能力将会增长,解锁无数的可能性和潜力。