【发布时间】: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