Necesito ajuste de la función de la matriz de datos y obtener una óptima coeficientes de una ecuación de esta función. Yo uso curve_fit método de scipy de la biblioteca. Está basado en el método de mínimos cuadrados.

import numpy as np 
from scipy.optimize import curve_fit

#This is my function from which i need to get optimal coefficients 'a' and 'b'
def func(x, a, b):  
return a*x**(b*x)

#the arrays of input data                               
x = [1,2,3,4,5]
y =[6,7,8,9,10]

#default (guess) coefficients
p0 = [1, 1] 

popt, pcov = curve_fit(func, x, y, p0)
print popt

Devuelve el siguiente error

TypeError: no admitidos operando tipo(s) de o ** pow(): ‘la lista’ y ‘la lista’

Pero cuando uso la otra, la más simple de la función sin la operación de la potencia funciona

def func(x, a, b):  
return a*x + b

Debe estar tratando de bulid número a una potencia de toda una matriz de datos de entrada

¿Qué hacer? Ayuda por favor…

  • Exactamente cómo poner una matriz a la potencia de otro array?
InformationsquelleAutor Vladimir | 2012-02-06

1 Comentario

  1. 7

    Parece que está después de elemento sabio de energía de fondos?

    Como a*x[i]**(b*x[i]) para cada i?

    En ese caso, usted tiene que utilizar el np.poder función:

    def func(x,a,b):
        return a*np.power(x,b*x)

    Entonces funciona.

    (Como un aparte, puede ser muy útil para convertir x y y de las listas de los arrays de numpy: np.array(x)).

    • np.encendido() ha funcionado! Muchas gracias!

Dejar respuesta

Please enter your comment!
Please enter your name here