需求:有一组数据,float 类型数组,数组中的元素基本是稳定波动的,但可能会出现异常值,极大、极小。我需要在其中找到最能代表整个数组的元素。
想法:我最先想到的就是线拟合,数组的元素相当于 y 轴,元素的索引相当于 x 轴,那某个坐标(元素,索引)距离该拟合的直线距离最小,那个元素就是我想要的。
具体实现:
打开 Cursor(一款比较流行的 AI 代码编辑器),告诉它用 Python 写,且不依赖任何第三方库。为什么是 Python 呢?因为 Python 可以解释运行,不需要编译,而 C# 的编译器对 AI 来说貌似不止一个,可能是我的偏见吧,就喜欢 py。不依赖第三方库是为了,待会儿转换成 C# 代码也是无依赖的。
而且 Cursor 可以根据命令行运行的结果快速验证函数实现的正确性,很快能看到测试结果。
它先实现了一个最小二乘的算法。
它觉得完美了,我觉得还不够,马上 PUA 它去实现鲁棒回归的算法。
令人惊喜的是,这两种算法它都运行,并且做了总结。
最后再和它说,“新建一个文件,将语言转换为 C#,支持 .NetFramework 4.6.1,ls 用一个 float 类型的列表表示,编译用 dotnet build”,将代码复制到 vm 的【脚本】中,大功告成 ( ̄y▽, ̄)╭
(附上 AI 生成的代码文件)