【发布时间】:2013-12-24 00:51:57
【问题描述】:
我有一组曲线F={f1, f2, f3,..., fN},每个曲线都通过一组点定义,即:我没有函数的显式形式。所以我有一组像这样的N 表:
#f1: x y
1.2 0.5
0.6 5.6
0.3 1.2
...
#f2: x y
0.3 0.1
1.2 4.1
0.8 2.2
...
#fN: x y
0.7 0.3
0.3 1.1
0.1 0.4
...
我还有一组观察/测量的数据点O=[p1, p2, p3,..., pM],其中每个点都有x, y 坐标和[0, 1] 之间的给定权重,所以它看起来像:
#O: x y w
0.2 1.6 0.5
0.3 0.7 0.3
0.1 0.9 0.8
...
由于N ~ 10000(我有大量函数),我正在寻找一种有效(更准确地说:快速)方法来找到最适合我观察到的曲线和加权点O。
当我有函数的显式形式 (scipy.optimize.curve_fit) 时,我知道如何找到与 python 的最佳匹配,但是当我将函数定义为表时,我该怎么做?
【问题讨论】:
-
“最适合”没有明确的定义。 “有效”标准也不是很清楚 - 每条曲线的数据点数量线性的解决方案是否足够,或者您需要更快的东西吗?是否可以简单地计算每条曲线和每个观察集之间的平方差的加权和,以保持该曲线在你去时产生最小误差,或者你需要更快的东西吗?加权误差平方和是“最佳”的正确定义吗?
-
加权平方和误差是我的想法,是的。 “高效”实际上是指“快速”。考虑到我有大约 100000 个函数和近 200 个
O集,这提供了大约 2000000 次迭代,这是相当多的。我需要它尽可能快。 -
您没有指定权重在拟合中的作用。
-
@elyase 我不确定我理解你的意思。权重表明给定点在用于评估“最佳拟合”的任何方案中都应该具有更大的重要性(例如,参见goo.gl/MdIO3V)。
-
不幸的是,没有算法可以自动将任何数据与“最佳”拟合(更不用说权重约束)。您必须为您的数据指定一个基础模型(线性模型、高斯过程、SVR)。如果您显示数据图,我们可以为您提供帮助,但这不是编程问题。
标签: python performance curve-fitting