Python scipy.optimize.fmin错误:使用序列设置数组元素

Python scipy.optimize.fmin错误:使用序列设置数组元素,python,numpy,scipy,Python,Numpy,Scipy,我试图通过找到错误值最低的参数来拟合sin函数 下面是我的代码: import numpy as np import scipy.optimize as opt from scipy.optimize import leastsq import matplotlib.pyplot as plt def func_model(x, para): ''' Model: y = a*sin(2*k*pi*x+theta)''' a, k, theta = para retur

我试图通过找到错误值最低的参数来拟合sin函数

下面是我的代码:

import numpy as np
import scipy.optimize as opt
from scipy.optimize import leastsq
import matplotlib.pyplot as plt

def func_model(x, para):
    ''' Model: y = a*sin(2*k*pi*x+theta)'''
    a, k, theta = para
    return a*np.sin(2*k*np.pi*x+theta)

def func_noise(x, para):
    a, k, theta = para
    return a*np.sin(2*k*np.pi*x+theta) + np.random.randn(100)

def func_error(para_guess):
    '''error_func'''
    error_sum = 0
    x_seq = np.linspace(-2*np.pi, 0, 100)
    para_fact = [10, 0.34, np.pi/6]
    for x in x_seq:
        error_value = (func_noise(x, para_fact)-func_model(x, para_guess))**2
        error_sum = error_sum + error_value
    return error_sum

para_guess_init = np.array([7, 0.2, 0])
solution = opt.fmin(func_error, para_guess_init) 
print(solution)
但是它不起作用,并且说了错误:用序列设置数组

回溯:

  File "", line 26, in <module>
    solution = opt.fmin(func_error, para_guess_init)
  File "C:\Users\sun\AppData\Local\Continuum\anaconda3\lib\site-packages\scipy\optimize\optimize.py", line 408, in fmin
    res = _minimize_neldermead(func, x0, args, callback=callback, **opts)
  File "C:\Users\sun\AppData\Local\Continuum\anaconda3\lib\site-packages\scipy\optimize\optimize.py", line 532, in _minimize_neldermead
    fsim[k] = func(sim[k])
ValueError: setting an array element with a sequence.
文件“”,第26行,在
解决方案=opt.fmin(函数错误,参数猜测初始)
文件“C:\Users\sun\AppData\Local\Continuum\anaconda3\lib\site packages\scipy\optimize\optimize.py”,fmin第408行
res=\u最小化\u neldermead(func,x0,args,callback=callback,**选项)
文件“C:\Users\sun\AppData\Local\Continuum\anaconda3\lib\site packages\scipy\optimize\optimize.py”,第532行,在文件夹mead中
fsim[k]=func(sim[k])
ValueError:使用序列设置数组元素。

有人能帮我一下吗,提前谢谢

这个极小值需要一个标量函数求值来最小化

函数
func\u error
返回大小为
(100,)
的向量

比较您的线路:

error_value = (func_noise(x, para_fact)-func_model(x, para_guess))**2
例如:

error_value = np.sum(np.square(
                               func_noise(x, para_fact)-func_model(x, para_guess)))
尽管我更喜欢(客观变化!):


此最小化程序期望标量函数的计算最小化

函数
func\u error
返回大小为
(100,)
的向量

比较您的线路:

error_value = (func_noise(x, para_fact)-func_model(x, para_guess))**2
例如:

error_value = np.sum(np.square(
                               func_noise(x, para_fact)-func_model(x, para_guess)))
尽管我更喜欢(客观变化!):


什么是完全错误回溯?@DavidG我更新了,谢谢什么是完全错误回溯?@DavidG我更新了,谢谢Shello,今天我努力使用scipy.optimize中的一些函数,我请求你帮助我解决另一个相关问题,如果你有空的话你好,今天我努力使用scipy.optimize中的一些函数,如果你有空的话,我请求你帮我回答另一个相关的问题