微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SciPy 优化向量不确定

如何解决SciPy 优化向量不确定

我想定义一个函数如下:

def f(x,m):
    return np.exp(((x[i]-m).T)@((x[i]-m))

其中输入是已知数据集数组x,例如

x = np.array([[1,2],[3,4]])

还有一个未知的二维向量 m

目前我无法正确定义这个函数,因为我得到了错误

NameError: name 'm' is not defined

事实是我不知道定义 m 的正确方法是什么。应该是这样的

m = []

也许?我知道与 mathematica 不同,我需要告诉 Python 一些关于 m 的事情,但我不清楚是什么

最重要的是,我有兴趣添加 x 的所有分量并最小化 f(x,m) 的对数以找到 m 为最小值的 f(x,m) 值。

解决方法

要最小化函数,您可以使用 scipy.optimize.minimize 函数 link

这可能有助于您了解如何使用此功能

import numpy as np
from scipy.optimize import minimize


def f(m,x,i):
    return np.exp(((x[i]-m).T)@((x[i]-m)))


x = np.array([[1,2],[3,4]])
i = 0

m = minimize(f,x0=(0,0),args=(x,i)).x

我更改了函数 f 的参数顺序。 minimize 期望第一个参数是“可变”参数,在本例中为 mxi 在优化过程中保持不变。

在调用 minimize 函数时,x0m 的初始猜测,这很重要,因为它告诉 minimize 函数 {{ 1}}。 m 用于输入“常量”参数。

该函数返回一个 args,其中现在 OptimizeResult 属性是 x 的最佳估计值。但是,m 包含一些关于优化的更有用的信息。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。