【问题标题】:Quadratic regression - spline interpolation二次回归 - 样条插值
【发布时间】:2021-10-18 08:40:53
【问题描述】:

我正在试验一个开源代码,它基于 DBMS 索引的学习索引。每个索引都被视为一个模型,可以预测数据集中键的位置。我正在尝试拟合二次回归模型来代替线性回归。对于 y=ax+b 形式的线性回归函数,样条连接点 (xmax,ymax) 和 (xmin,ymin)。 x为key值,y为预测位置。key位置的CDF在[0,1]范围内。

//Fitting linear spline

`if (mdl_->a_ <= 0) {` 
   `mdl_->a_ = (y_max_ - y_min_) / (x_max_ - x_min_);`
   `mdl_->b_ = -static_cast<double>(x_min_) * mdl_->a_; + y_min_`
 `}`

//Temporary model by in the range of CDF[0,1]

 `T min_key = values[0].first;`
 `T max_key = values[num_keys - 1].first;`
 `root_->mdl_.a_ = 1.0 / (max_key - min_key);`
 `root_->mdl_.b_ = -1.0 * min_key * root_node_->mdl_.a_;`

我想在临时模型中,他们已经将 ymin 拟合为 0,将 ymax 拟合为 1。我想通过拟合样条曲线来找到二次函数的系数。有人可以告诉我是否可以使用 2 个点(最小和最大点)拟合二次样条曲线吗?

我尝试使用插值公式。 Quadratic spline interpolation

如果键值 (x) 是按顺序给出的,则预测的位置符合抛物线。如果键值以随机方式给出,则系数(ax2+bx+c 中的 c)会变得非常大,从而导致分段错误。而且预测的位置也不符合二次曲线。

【问题讨论】:

  • 这不是一个真正的问题。您正在提出图书馆建议和数学问题。关于 SO,请提供您尝试过的示例代码。
  • 公平地说,这个问题可能与 C/C++ 无关,甚至与代码无关,但它涉及的主题与计算机图形学有很多共同点,而计算机图形学主要是用 C 语言编写的。
  • 对不起。我忘了附上代码。我会添加它
  • 我很抱歉没有正确地提出问题。我是堆栈溢出的新手。

标签: regression curve-fitting spline linear-interpolation


【解决方案1】:

有人可以告诉我如何使用 2 点拟合二次样条吗?

二次样条曲线的数学本质是需要四个点或两个点和两个向量来定义二次样条曲线。 最终文本是Computer Graphics : Principles and practice

这个问题最常见的解释是Bezier Curve。它通过为每对现有点注入两个新点(称为控制点)来工作。每个控制点都是使用从每个点到上一个/下一个点的向量来计算的。如果没有上一个/下一个点,则控制点就是点本身。因此,只有两个点,贝塞尔曲线只是一条线。你将使用一种复杂的方式来获取你已经拥有的东西。

【讨论】:

    猜你喜欢
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 2016-08-07
    • 2018-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多