ajuste de curva multivariable en python

Estoy tratando de ajustar una función simple a dos matrices de datos independientes en Python. Entiendo que necesito agrupar los datos de mis variables independientes en una matriz, pero algo parece estar mal con la forma en que estoy pasando las variables cuando trato de hacer el ajuste. (Hay un par de publicaciones anteriores relacionadas con esta, pero no han sido de mucha ayuda).

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 

El error que recibo lee,

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

¿Cuál es la longitud de M ? ¿Es N la longitud de p0 ? ¿Qué estoy haciendo mal aquí?

N y M se definen en la ayuda para la función. N es el número de puntos de datos y M es el número de parámetros. Por lo tanto, su error básicamente significa que necesita al menos tantos puntos de datos como parámetros, lo que tiene mucho sentido.

Este código funciona para 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 

He incluido más datos. También he cambiado fitFunc para que se escriba en una forma que escanee como solo una función de una sola x: el instalador manejará la llamada para todos los puntos de datos. El código que publicaste también hacía referencia a x_3d[2,:] , lo que estaba causando un error.