当前位置: 首页 > 知识库问答 >
问题:

在python中拟合多元curve_fit

甄胡非
2023-03-14

我试图将一个简单的函数与python中的两个独立数据数组相匹配。我知道我需要将自变量的数据组合到一个数组中,但是当我尝试拟合时,传递变量的方式似乎仍然有问题。(之前有几篇与此相关的帖子,但都没有太大帮助。)

import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit

def fitFunc(x_3d, a, b, c, d):
    return a + b*x_3d[0,:] + c*x_3d[1,:] + d*x_3d[0,:]*x_3d[1,:]

x_3d = np.array([[1,2,3],[4,5,6]])

p0 = [5.11, 3.9, 5.3, 2]

fitParams, fitCovariances = curve_fit(fitFunc, x_3d[:2,:], x_3d[2,:], p0)
print ' fit coefficients:\n', fitParams

我得到的错误是,

raise TypeError('Improper input: N=%s must not exceed M=%s' % (n, m)) 
TypeError: Improper input: N=4 must not exceed M=3

什么是M的长度?Np0的长度吗?我到底做错了什么?

共有2个答案

郝杰
2023-03-14

默认的curve\u fit方法需要拟合函数fitFunc的参数少于数据点。我在拟合一个总共包含15个参数的函数时遇到了同样的问题,而我只有13个数据点。解决方法是使用另一种方法(例如dogboxtrf)。

孙玺
2023-03-14

N和M在函数的帮助中定义。N是数据点的数量,M是参数的数量。因此,您的错误基本上意味着您需要至少与参数一样多的数据点,这非常有意义。

此代码适用于我:

import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit

def fitFunc(x, a, b, c, d):
    return a + b*x[0] + c*x[1] + d*x[0]*x[1]

x_3d = np.array([[1,2,3,4,6],[4,5,6,7,8]])

p0 = [5.11, 3.9, 5.3, 2]

fitParams, fitCovariances = curve_fit(fitFunc, x_3d, x_3d[1,:], p0)
print ' fit coefficients:\n', fitParams

我已经包含了更多的数据。我还更改了FitFunc,使其以仅作为单个x的函数进行扫描的形式编写-钳工将处理对所有数据点的调用。您发布的代码还引用了x_3d[2,:],这会导致错误。

 类似资料:
  • 我使用的是多次,每次都负责训练一个层块,其他层被冻结 奇怪的是,在第二次拟合中,第一个历元的精度远低于第一次拟合的最后一个历元的精度。 纪元40/40 6286/6286 [==============================] - 14s 2ms/样品-损耗: 0.2370-精度: 0.9211-val_loss: 1.3579-val_accuracy:0.6762 874/874 [

  • 问题内容: 我想在Python的xlsxwriter中模拟Excel自动拟合功能。根据此网址,不直接支持它:http : //xlsxwriter.readthedocs.io/worksheet.html 但是,在工作表中的每个单元格之间循环并确定列的最大大小,然后使用worksheet.set_column(row,col,width)设置宽度应该非常简单。 使我无法撰写本文的复杂因素包括:

  • 问题内容: 在python中,我有一个具有许多参数的函数。我想将此函数适合数据集,但只使用一个参数,其余的参数我要自己提供。这是一个例子: 在这种情况下,我希望只对它进行拟合,并且参数采用循环变量的值。如何才能做到这一点? 问题答案: 您可以包装一个lambda,如下所示: Lambda是一个匿名函数,在Python中只能用于简单的单行函数。基本上,通常在不需要为函数分配名称时通常用于减少代码量。

  • 我有多个json文件,其中包含需要合并的关系数据,每个文件都有一个带有commonkey的记录,这是所有文件中的公共键,在下面的示例中,a0,a1是公共键。值是多个键的嵌套字典,如Key1、key2等,如下所示,我需要合并多个json文件并获得如dboutput.json所示的输出,文件名在合并操作中充当索引。这样的问题是一个相关的问题,它合并了丢失的信息,但在我的情况下,我不希望任何更新替换现有

  • 问题内容: 我正在尝试近两个小时,没有任何运气。 我有一个看起来像这样的模块: 稍后在代码中: 有任何想法吗? 编辑: 亚历克斯的建议似乎无效: 运行测试时: 但是,当我从python交互式控制台运行相同的代码时,它 确实 起作用。 更多编辑: 我正在使用一个测试文件,该文件具有特定于我模块这一部分的所有测试。首先,我导入可用的模块,以演示和测试常用用法。缺少软件包被认为是一种极端情况,因此我稍后

  • 有没有办法在python中合并两个重叠的GEOJSON多边形,返回一个合并的GEOJSON对象?