gpt4 book ai didi

python - 使用 Scipy 最小化数据线性组合的函数

转载 作者:太空狗 更新时间:2023-10-29 11:21:49 25 4
gpt4 key购买 nike

假设我有一些矩阵 X,其中每一行代表一个时间序列。例如,X 可以是大小为 3 x 1000 的矩阵,这意味着有 3 个时间序列,每个时间序列由 1000 个时间点组成。除了 X 之外,我还有一个标量用于 X 中的每个时间序列。我想找到一个线性组合

a[0] * X[0, :] + a[1] * X[1, :] + ... + a[n-1] * X[n-1, :]

对于某些函数 F 具有最小值。

所以,我尝试了以下操作

import numpy as np
from scipy.optimization import minimize
def f(x):
return 0 # for testing purposes
def obj(a,x):
y = a*x
return f(y)
minimize(obj, np.array([1,1]), args=np.array([[1,1],[2,2]]), method='nelder-mead')

所以第二个参数是初始猜测值 x0(系数 a)。 args 给出的数据应该映射到 x(如果我理解正确的话)并在优化过程中保持不变。

但是,我得到了错误

ValueError: setting an array element with a sequence.

我想我的问题很笼统,所以我希望有人能够提供帮助!

最佳答案

是这样的吗?

import scipy.optimize as opt

def f(val):
return val**2

def obj(a, series):
s = 0
for row in series:
for t in range(len(row)):
s += f(a[t] * row[t])
return s

ll_x = [[2, 3, 2, 6], [3, 5, 2, 7]] # 2 series
l_a = [1 for _ in ll_x[0]] # initial coeffs.

res = opt.minimize(obj, l_a, args=ll_x, method='nelder-mead')

for elem in sorted(res.items()):
print(*elem)

(适用于 Python 3.4.3)

关于python - 使用 Scipy 最小化数据线性组合的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32700405/

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