gpt4 book ai didi

python - 为什么我从 scipy.optimize.fmin 得到不正确的结果?

转载 作者:太空宇宙 更新时间:2023-11-03 10:58:02 26 4
gpt4 key购买 nike

import pandas as pd
from scipy.optimize import fmin

data = pd.DataFrame({'DIV': [1,2,3]*3,
'MONTH': ['May','May','May','June','June','Jun','Jul','Jul','Jul'],
'C':[8]*9,
'U':[3,2,1]*3,
'S':[9]*9})

data.to_csv(r'C:\Users\mbabski\Documents\Unit Plan Summer 2016\data_test.csv')

def return_array(x):
return x.values

def mape(c,u,s,r): #returns an array of line level Mean Absolute Percentage Errors
p = c + u * r
m = abs(1.0-(p/s))
return m

def e(c,u,s,r): #calculates average of the MAPEs
return np.mean(mape(c,u,s,r))

for d in range(1,4):
div_data = data[data.DIV==d]
c = return_array(div_data.C)
u = return_array(div_data.U)
s = return_array(div_data.S)
r0 = [[1.0]]
t = fmin(e,r0,args=(c,u,s))
print 'r:',t

Optimization terminated successfully.
Current function value: 0.000000
Iterations: 29
Function evaluations: 58
r: [-69.]
Optimization terminated successfully.
Current function value: 0.000000
Iterations: 29
Function evaluations: 58
r: [-70.]
Optimization terminated successfully.
Current function value: 0.000000
Iterations: 29
Function evaluations: 58
r: [-71.]

为什么我得到 r = -69、-70 和 -71?使用此数据我应该得到 r = 0.333、0.555 和 0.999。

最佳答案

scipy.optimize.fmin 会将它试图最小化的值作为函数的第一个参数传递。如果您将函数重写为

def e(r,c,u,s): #calculates average of the MAPEs
return np.mean(mape(c,u,s,r))

你得到了正确的结果

for d in range(1,4):
div_data = data[data.DIV==d]
c = return_array(div_data.C)
u = return_array(div_data.U)
s = return_array(div_data.S)
r0 = [[1.0]]
t = fmin(e,r0,args=(c,u,s))
print 'r:',t
Optimization terminated successfully.
Current function value: 0.000011
Iterations: 16
Function evaluations: 32
r: [ 0.33330078]
Optimization terminated successfully.
Current function value: 0.000000
Iterations: 15
Function evaluations: 30
r: [ 0.5]
Optimization terminated successfully.
Current function value: 0.000000
Iterations: 10
Function evaluations: 20
r: [ 1.]

关于python - 为什么我从 scipy.optimize.fmin 得到不正确的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38152316/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com