python线性拟合numpypolyfit,python自定义多元函数拟合
你的直觉是正确的。这个问题可以用方程式的形式来解决。等式的形式是ax=b。at
但由于系统定义太多,最需要的是sfdts平方解,所以要用np.linalg.lstsq代替{}。
不能使用Polyval,因为参数的系数和幂必须分开。
这是如何构造来求解方程:a=NP.stack([x1**0,x1**1,x1**2,x1**3,x1**4,x2**0,x2**1,x2**2,x2
xx=NP。LinaLG.lstsq(a,y ) [0]
Print (fitness (xx))使用原始适应度函数测试结果
当然,度可以概括为:
^{pr2}$
对于样本数据,sfdts乘法比minimize解决方案快得多(在我的笔记本电脑上,前者为800毫秒,后者为35毫秒)。但是,A可能会变得很大,所以如果内存是个问题,最小化可能仍然是一个选项。在
更新:
如果不知道多项式函数的内部,事情会变得麻烦,但是可以把项和系数分开。下面描述如何从类似polyval的函数构造系统矩阵A。defconstruct_a(valfunc,degree):
列1=[]
columns2=[]
对于范围(度) :
c=NP。零(度)
c[p]=1
columns1.append(valfunc ) x1,c))
columns2.append(valfunc ) x2,c))
返回NP.stack (columns1columns2)。t
a=construct _ a (NP .多项式.多项式. poly val,5))))))))))))).) ) ) ) ) )
xx=NP。LinaLG.lstsq(a,y ) [0]
Print (fitness (xx))使用原始适应度函数测试结果
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。