繁体   English   中英

不可散列的类型:用于优化的“ numpy.ndarray”

[英]unhashable type: 'numpy.ndarray' for optimization

我正在执行优化,以使用scipy.optimize库找到生成的数据集的最佳拟合线。 但我收到错误“无法散列的类型:'numpy.ndarray'”

import numpy as np
import pandas as pd
import scipy.optimize as spo
import matplotlib.pyplot as plt

def error(data, line):
    error=np.sum((data[:,1]-(line[0]*data[:,0]+line[1]))**2)
    return error

def fit_line(data, error_func):
    l=np.float32([0, np.mean(data[:,1])])
    min_result=spo.minimize(error_func, l, args={data,}, method="SLSQP", options={"disp":True})
    return min_result.x

if __name__=="__main__":
    l_orig=np.float32([4,2])
    xorig=np.linspace(0,10,21)
    yorig=l_orig[1]*xorig + l_orig[0]

    np.random.seed(788)
    noise=np.random.normal(0, 3.0, yorig.shape)
    data=np.asarray([xorig, yorig+noise]).T

    result=fit_line(data, error)

函数scipy.optimize.minimize需要一个元组的额外参数,而不是集合。 更改:

min_result=spo.minimize(error_func, l, args={data,}, method="SLSQP", options={"disp":True})

至:

min_result=spo.minimize(error_func, l, args=(data,), method="SLSQP", options={"disp":True})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM