python - 如何最小化 Python 中 for 循环生成的多参数函数?
问题描述
我想最小化函数 (loglikely_ftn(x, *data, t)) 但有错误(表达式不能包含赋值)。loglikely_ftn 需要数据中的一对参数来求和所有 log_prob(x, i, j, t)。i, j 是参数,t 是固定值。
def loglikely_ftn(x, *data, t):
c =[*data]
n=int(len(c)/2)
ndata = zip(c[:n], c[n:])
s = 0
for i,j in ndata:
f = log_prob(x, i, j, t)
s += f
return s
log_prob 只是具有 3 个参数的 x 函数。
def log_prob(x, measurement_output, param_mes, t):
l = -1 * np.log(1/2 + ((-1)**(measurement_output)) * 1/2 *((np.cos(t))*(np.cos(param_mes)) - (np.sin(x[0]))*(np.cos(x[1]))*(np.sin(param_mes))*(np.sin(t))))
return l
我正在尽量减少喜欢;
Data_output=[1,0,1,0]
Data_mes =[2,3,4,5]
data = Data_output + Data_mes
x0=[random.random() * np.pi, random.random() * 2 * np.pi ]
res = minimize(loglikely_ftn, x0, args=(*data, t=2), bounds = [(0, np.pi),(0, 2* np.pi)])
但是有 SyntaxError: expression cannot contain assignment,也许你的意思是“==”?
我需要知道(1)有没有更好的方法来制作 loglikely_ftn?(2) 如何正确分配参数?
解决方案
推荐阅读
- node.js - 在 Node.js 中 readFIle 或 writeFile 究竟在哪里异步执行操作
- c# - 在 Mac os 上安装窗体应用程序
- c++ - 为什么 Microsoft Visual C++ 库实现“解包”迭代器?
- wordpress - 编辑可变产品的“添加到购物车”按钮
- java - 首次应用启动时再次加载活动
- mysql - 如何在 SUM 上获得 SUM
- node.js - 反应,创建一个项目问题(npx create-react-app)
- flutter - 如何在 Flutter 中重置 Hive 数据库
- android - 为原生应用程序反应原生 UI?
- python - Python:查找 [X,Y] 坐标中每个 X 值的平均 Y 值