【发布时间】:2014-03-09 23:14:15
【问题描述】:
我是在 python 上使用 scipy 和 numpy 的新手。
我的问题:如何使用最佳 alpha(水平平滑常数)最小化误差函数(平均绝对百分比误差,具体为 MAPE)?所以,我正在尝试通过 MAPE 获得最佳 alpha。
这是我的数学:
x = [ 3, 4, 5, 6]
y0 = x0
y1 = x0*alpha+ (1-alpha)*y0
MAPE = (y-x)/x [ This is an objective function and I am trying to solve for alpha here]
Constraints1: alpha<1
Constrants2 : alpha>0
【问题讨论】:
-
你试过
scipy.optimize.minimize吗?有关详细信息,请参阅scipy.optimizetutorial。 -
@askewchan。我正在研究最小二乘拟合和单变量函数最小化器。我没有运气。你能指出正确的功能吗?感谢您的回复
-
我的第一个链接就是你想要的功能,我相信。构建要最小化 w.r.t 的函数。
alpha,将它和第一个猜测传递给scipy.optimize.minimize,它应该会返回您的最佳alpha。 -
我会提供更多帮助,但我并不完全理解您所说的问题。
y是否应该是长度为 4 的向量,其中y[i+1] = x[i]*alpha + y[i]*(alpha-1)?我只看到y[0]和y[1]的定义,但没有看到y[2]或y[3],但你有x[0]到x[3]。 -
@askewchan 没错。如果 x = [3, 4, 5, 6],则 y[i+1] = x[i]*alpha + y[i]*(alpha-1)。 x 是给定值的列表,y 是拟合值的列表。最小化 (y[i]- x[i])/x[i] 会给我最好的 alpha。