我的代码有问题。我不知道如何更新函数中变量error
的值。值仅在函数外部更新。
有人能帮我解决这个问题吗?你知道吗
代码的思想是使模型适合我的数据(x,y) = (mes1,pasajeros1)
。该模型是一个多项式函数加上一个由指数函数调制的正弦函数。你知道吗
Error
是一个向量,它是数据(y
向量)和拟合(多项式函数加上由上一次迭代的指数调制的正弦)之间的差,每次迭代,向量的每个分量error
都必须更小。你知道吗
代码如下:
def base_pol(x,N):
M=np.ones(x.size)
for i in range(1,N+1):
M=np.vstack([M ,x**i])
return M.T
def pol(x,theta):
N=theta.size
pol=base_pol(x,N-1)@theta
return pol
def bestpolsin(theta, theta2, m):
fpol = pol(mes1,theta)
fsinexp = 0
best_aic = 10000000
best_bic = 10000000
best_parametros = []
def Fsinexp(x):
Fsinexp = x[0]*(np.sin(x[1]*mes1+x[2]))*np.exp(x[3]*mes1)
return Fsinexp
def Jpolsin(x):
j = 0.5*(error@error) - error@Fsinexp(x) + 0.5*(Fsinexp(x)@Fsinexp(x))
return j
for i in range(m):
error = pasajeros1 - fpol - fsinexp
parametros = fmin(Jpolsin, theta2, args=(error,))
fsinexp = Fsinexp(parametros)
aic = AIC(4*(i+1), Jpolsin(parametros))
bic = BIC(4*(i+1), Jpolsin(parametros))
best_parametros.append(parametros)
if best_aic>aic:
best_aic=aic
r_1=i+1
if best_bic>bic:
best_bic=bic
r_2=i+1
p=r_1==r_2
return aic, bic, r_1, best_parametros, p
目前没有回答
相关问题 更多 >
编程相关推荐