我正在尝试为一组未知的 2D 点获得最佳拟合。这些点是河流的中心点,它们没有一定的顺序。我尝试使用多项式回归,但我不知道不同数据集的最佳多项式顺序是什么。
我也尝试过三次样条,但我不想通过我拥有的所有点的线,我想要通过点的最佳拟合线的近似值。
即使对于具有更多曲线的线条,我也想得到这样的东西。这个例子是用多项式回归计算的,效果很好。
有没有办法做一些平滑或回归算法,即使对于如下一组点,也可以获得最佳拟合线?
PolynomialRegression<double> pol;
static int polynomOrder = <whateverPolynomOrderFitsBetter>;
double error = 0.005f;
std::vector<double> coeffs;
pol.fitIt(x, y, polynomOrder, coeffs);
// get fitted values
for(std::size_t i = 0; i < points.size(); i++)
{
int order = polynomOrder;
long double yFitted = 0;
while(order >= 0)
{
yFitted += (coeffs[order] * pow(points[i].x, order) + error);
order --;
}
points[i].y = yFitted;
}
在我使用 35 个多项式阶的实现中,这就是我所能得到的,并且将具有更高值的多项式阶更改为系数的 Nan 值。
我不确定这是否是我能拥有的最佳方法。