Python pyomo中参数的极大似然估计
我想用pyomo从行为数据集估计RL模型的参数Python pyomo中参数的极大似然估计,python,reinforcement-learning,pyomo,q-learning,mle,Python,Reinforcement Learning,Pyomo,Q Learning,Mle,我想用pyomo从行为数据集估计RL模型的参数 #dummy data dis_data = pd.DataFrame([0,1,0,0,0,1], columns=['reward']) dis_data['Expt']=str(1) dis_data = dis_data.set_index('Expt') def max_likelihood_four(x,data): lr=x.lr sigma=x.sigma time = data.shape[0]
#dummy data
dis_data = pd.DataFrame([0,1,0,0,0,1], columns=['reward'])
dis_data['Expt']=str(1)
dis_data = dis_data.set_index('Expt')
def max_likelihood_four(x,data):
lr=x.lr
sigma=x.sigma
time = data.shape[0]
v = np.zeros(([2, time]))
pr = np.zeros(([2, time]))+0.5
pr_log = np.zeros(([time]))
for t in range(time-1):
pr[1, t] = 1 / (1 + np.exp(-(v[1, t] - v[0, t])/ sigma))
pr[0, t] = 1-pr[1, t]
outcome=int(data.ix[t,'reward'])
v[choice, t + 1] = v[choice, t] + lr * (outcome - v[choice, t])
v[1 - choice, t + 1] = v[1 - choice, t]
pr_log[t] = np.log(pr[choice, t])
# print(i)
return -np.sum(pr_log)
def pyomo_fit1(df):
mdl = ConcreteModel()
mdl.lr = Var(initialize=np.random.random(1), bounds=(0, 1))
mdl.sigma = Var(initialize=np.random.random(1), bounds=(0, 10))
residuals = max_likelihood_four(mdl,df)
mdl.obj = Objective(expr=residulas, sense=minimize)
SolverFactory('ipopt').solve(mdl)
return [mdl.lr,mdl.sigma]
parameter_values_1, r1 = pyomo_fit1(dis_data)
我得到这个错误:
“无法将标量组件‘sigma’视为索引组件”
你能附上完整的错误信息吗?(使用回溯)只能猜测,因为不熟悉pyomo和相关应用程序-快速搜索类似的“标量”与“索引组件”问题似乎与有关浮点问题的numpy错误有关-请参阅以下(web存档)页面:和