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

时间:2015-01-04 09:44:21

标签: python math automation formula

给定一个示例公式'y=2x+1'当我们知道具有定义的“function”的x时,我们可以得到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    . ..

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

任何关键字都可以搜索或者libs可以使用?

谢谢。

=====

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

从技术上讲,我意识到我需要的是polynomial fittingPolynomial regression/ Polynomial interpolation/ polynomial approximation ......

我将赞扬Gerard,再次感谢所有人的帮助。

3 个答案:

答案 0 :(得分:1)

为了确保我理解您的问题,您想要检索适合您数据的行的等式,对吗?

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

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

答案 1 :(得分:1)

在这里我会说问题看起来更像polynomial interpolation 在python中你有很多lib处理它,例如高级scipy.interpolate 或者你可以做到这一点"手工"比如these examples

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

答案 2 :(得分:0)

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