Я должен реализовать алгоритм подгонки наименьших квадратов для этой модельной функции
Y = a_0 * e^(a_1*x_1+a_2*x_2+...+a_n*x_n)
Подход, который я нашел, состоял в том, чтобы определить функцию для вычисления остатков и передать ее в scipy.optimize.leastsq или lmfit. Тем не менее я не могу заставить его работать с многомерными данными, когда параметры являются векторными, а не единичными значениями.
def residual(variables,X,y):
a_0 = variables[0]
a = variables[1]
return (y - a_0 * np.exp(X.dot(a)))**2
X = np.random.randn(100,5)
y = np.random.randint(low=0,high=2,size=100)
a_0 = 1
a = np.random.randn(X.shape[1])
leastsq(residual,[a_0,a],args=(X,y))
Я получаю эту ошибку.
ValueError: установка элемента массива с последовательностью.
Можете ли вы указать мне правильный путь отсюда?