了解scipy.optimize.fmin中的参数

时间:2019-04-09 14:55:00

标签: python optimization scipy

我正在使用scipy.optimize.fmin解决一个简单的优化问题,并试图了解如何正确使用它

我创建了一个优化函数,该函数返回一个值(一个要优化的值)并使用要查找的2个参数(alpha和beta)。

def q_learning_model(params, *args):
    choices = list(args[0].choice.astype(int))
    rewards = list(args[0].reward.astype(int))

    num_of_trials = len(choices)

    prob_of_choice = [0]*num_of_trials
    accuracy = [0]*num_of_trials

    beta = params[0]
    alpha = params[1]

    for trial in range(num_of_trials):
        # do things

    return -(np.sum(np.log(prob_of_choice)))

x1=()
minimum = optimize.fmin(q_learning_model,x0=(1,0.1),args=(data[['choice','reward']], x1))

我知道我需要传递函数本身(作为可调用函数),初始猜测以及函数(正在优化的)所需的其他参数-就我而言的数据。

我希望它与args=data[['choice','reward']]一起运行,但是它仅在之后添加另一个变量时运行(这意味着如果只有一个arg,我会报错)-当我传递一个空元组时,它也会运行在数据之后。

从我看到的情况来看,fminx0用作q_learning_model的params参数,因此*args假设采用任意数量的值(在我的情况下为1-数据)。

我想念什么吗?我应该如何正确调用fmin?

0 个答案:

没有答案