0

输入数据和函数的形式是已知的。你必须找出函数的系数。这些需要确定的系数的值也是已知的(60.351、4.388、4.806)。在编写代码时,我受到以下启发: 使用 python 进行非线性回归 唯一的区别在于输入数据和函数的定义。

xData = numpy.array([1, 23385, 35800, 63699, 106798, 222064, 4272000, 20296, 461351, 175300, 11815])
yData = numpy.array([198.9, 112.2, 100.3, 89.8, 80.3, 69.8, 60.8, 120.1, 65.3, 74.9, 127.7])


def func(x, a, b, Offset): # Sigmoid A With Offset from zunzun.com
    return  Offset + 139.0/ ((numpy.exp((log10(x))/a))**b)

我相信当我使用 log10() 函数时,初始参数存在一些问题。错误如下: 错误捕获

4

1 回答 1

0

经过几次搜索([StackOverFlow[1]),我重新定义了函数: Offset + 139.0/ ((numpy.exp(np.log10(np.abs(x))/a))**b) 像 math.log10() 这样的非 numpy 函数不能很好地与 numpy 数组配合使用

于 2020-04-25T14:28:14.207 回答