给定数据样本,通过编程推导出近似公式?

given data samples, deducing approximate formula by programming?

给定一个示例公式 'y=2x+1' 当我们知道 x 具有定义的 'function' 时,我们可以得到 y,例如 python

def y(x):   return 2*x + 1

x :   1    2    3     4     5     ...
y :   3    5    7     9     11    ...

我可以反过来吗?给定数据样本并得到近似公式?

x :   1.001    2.12    3.1     4.001     5.021     ...
y :   3.002    5.23    7.2     9.002     11.32    . ..

当然,很容易通过坐标画出所有的点,link这些点得到近似公式然后在人们解决这个问题时猜测结果,但是如何通过编程来实现呢?

有什么关键字可以搜索或者libs可以用吗?

谢谢。

=====

非常感谢大家。在用您分享的信息搜索了一下后,这是一个没有简单解决方案的 BIGG...G 区域 -_-!.

从技术上讲,鉴于 Polynomial regression/ Polynomial interpolation/ polynomial approximation......

的不同,我意识到我需要的应该是“polynomial fitting

我会把功劳归功于杰拉德,再次感谢大家的帮助。

可能您需要 NumPy 和 SciPy 包。例如,请参阅 Linear Regression 文档 SciPy:http://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.stats.linregress.html

为了确保我理解您的问题,您想检索适合您的数据的直线方程,对吧?

如果这是你的问题,你可以使用包 numpy 中的 polyfit

import numpy as np
x = [1.001, 2.12, 3.1, 4.001, 5.021]
y = [3.002, 5.23, 7.2, 9.002, 11.32]
np.polyfit(x, y, 1)

返回值为:

array([ 2.05658156,  0.88110544])

这意味着直线的方程为:

y = 2.05658156x + 0.88110544

在这里我会说这个问题看起来更像 polynomial interpolation 在 python 中,您有许多处理此问题的库,例如高级 scipy.interpolate 或者你可以 "by hand" 像 these examples

无论如何,你都需要一些数学知识!