c# 数值多项式回归

本文关键字:回归 多项式 | 更新日期: 2023-09-27 18:34:10

我正在开始我的第一个 C# 项目之一 - 需要找到几个 x-y 数据点的曲线拟合。

例如:

x: 1,2,3,4,5,6y:0.5,5,0.5,2.5,5,0.5

碰巧的是,根据excel,我需要的这些点的正确曲线拟合是六阶多项式。

如何获取此曲线的系数和指数以在 C# 中编写正确的表达式?我想远离库,因为这很可能最终会被转换为 C 以在微处理器上使用。

我是 C# 的新手,对硬件/软件集成知之甚少。

也就是说,我现在正在阅读有关数值方法的信息......该项目的第二步将是采用曲线并在连续最小值之间进行数字积分......

任何建议/指示将不胜感激。

输入将由六个 x-y 坐标给出...

问题#1:如何在给定六个坐标的情况下写多项式?

c# 数值多项式回归

在给定 n 个点处求求在某个 xi 处评估的多项式系数的问题称为多项式插值问题。您可以在此处阅读问题及其解决方案的详细信息(wikipedia.org(。

您应该密切关注构造插值

多项式部分,其中他们提到,如果使用高斯消除,则需要反转的矩阵可能会引入较大的误差,并查看牛顿插值 (wikipedia.org( 以获得更好的方法。只有六分可能并不重要,但值得了解。

至于实现,你有两个选择:利用支持线性代数的第三方库——比如科学代码.Net(sciencecode.com(,或者开始为向量和矩阵编写一些基本的抽象,并实现基本操作,如乘法、加法和反转。过去,我们使用了一个名为"Numerical Rerecies in C"的库,它们很可能有一个C#端口。可能值得一试。

如果您认为六阶多项式最适合六个数据点,那么看起来您严重过度拟合,我很好奇您是否真的意味着您在实际数据中只有六个点(在这种情况下,拟合没有意义(,或者您只有六个采样点并期望预测数据的实际形状。

https://www.coursera.org/course/ml 有一个关于机器学习的优秀课程,更具体地说,因为它教授如何自动选择多项式的正确顺序,对数据进行分区以及更基本的方面,例如作为整个事物基础的矩阵数学。

这不是那种你可以指向"算法X"并希望它会正确出来的东西......ML 课程涵盖了人们在拟合数据时犯的许多错误(过度拟合、拟合不足、数据采样不佳等(。它还讨论了如何避免它们。

我成功地使用了MathNET.Numerics库来实现这个目的。它可以作为 Nuget 包安装,并且似乎得到了积极维护。曲线拟合在其文档中进行了描述。