2016-07-08 34 views
0

所以,我有一个对应于给定特征(相同维度)的向量。在Julia中是否有一个包可以提供适合这些数据点的数学函数,与原始特征相关?换句话说,我有x和y(两个向量),并且需要在两者之间找到一个体面的映射,即使它是一个非常复杂的映射。该过程的输出应该是连接x和y的符号公式,例如(:x)^ 3 + log(:x) - 4.2454。如果它只是一个多项式近似,那很好。如何在Julia中找到适合给定数据点集合的函数?

我想如果您使用遗传编程,这是在公园散步,但我宁愿选择一个更简单(和更快)的方法,如果它可用。谢谢

+1

不是一个解决方案,但问题的“官方”名称是**回归**(在x和y之间的多项式关系的情况下,这将是多项式回归)。使用此术语继续搜索答案。 –

+0

我对回归很熟悉。尽管如此,对尽量减少MSE或其他错误指标不感兴趣。只是想找到一个合适的功能,即使有一些过度修复。我不打算将其用于预测分析。 – Zack

+2

在这种情况下,_Lagrange的插值公式_可能会有所帮助。它产生一个穿过所有点(x,y)的多项式。多项式将具有高度。请参阅http://mathworld.wolfram.com/LagrangeInterpolatingPolynomial.html –

回答

0

看看MARS回归。多自适应回归样条曲线。

+0

谢谢。这看起来很有趣。但是,它还没有实现,所以我会选择另一种方法。 – Zack

3

原来的Polynomials.jl包中包含了用于拉格朗日插值的函数polyfit。的利用方法会去:

using Polynomials # install with Pkg.add("Polynomials") 
x = [1,2,3]   # demo x 
y = [10,12,4]  # demo y 

polyfit(x,y) 

最后一行返回:

Poly(-2.0 + 17.0x - 5.0x^2)` 

其计算结果为正确的值。

polyfit函数接受的最大程度为输出多项式,但默认使用输入向量xy减1。这是相同的程度从拉格朗日式的多项式的长度,并且由于这样的多项式只有当它们是相同的(这是一个基本定理)时,度才能同意输入 - 可以肯定的是,这是相同的拉格朗日多项式,并且实际上是唯一具有这种属性的程度。

感谢Polynomial.jl的开发者,因为我只是将我的方式留给了我的答案。

+0

太好了。谢谢你,先生! – Zack