Мне нужно подогнать функцию к массиву данных и получить оптимальные коэффициенты уравнения этой функции. Я использую метод curve_fit из библиотеки scipy. Он основан на методе наименьших квадратов.
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
Возвращает следующую ошибку
TypeError: неподдерживаемые типы операндов для ** или pow (): 'list' и 'list'
Но когда я использую другую, более простую функцию без включения питания, она работает
def func(x, a, b):
return a*x + b
Должно быть, оно пытается вывести число в степень целого массива входных данных
Что делать? Помогите пожалуйста ...