My code:
from scipy.optimize import minimize
import numpy as np
class Least_squares:
def __init__(self):
self.d = 2 #decision_demension
self.parameter_sets = np.ones(6) #Parameters_sets = 1+1 +d+ d (alpha+ beta_0 +...+...)
def func(self,x):
parameter_sets= self.parameter_sets
alpha = parameter_sets[0]
Phi = parameter_sets[1]
T = 1
for i in range(2, self.d + 2):
Phi += x[:, i - 2] * parameter_sets[i]
for j in range(self.d + 2, len(parameter_sets)):
Phi += x[:, j - self.d - 2] * x[:, j - self.d - 2] * parameter_sets[j]
Phi += alpha * T
return Phi
def Euclidean_distance(self,a, b):
dis = 0
for i in range(self.d):
dis += (a[i] - b[i]) ** 2
return dis ** 0.5
def residuals(self, y, x):
parameter_sets = self.parameter_sets
alpha = parameter_sets[0]
mu_0 = 1
residu = 0
transfer = (y - self.func(x))
for i in range(x.shape[1]):
residu += (transfer[i] / (1 + self.Euclidean_distance(x[i, :], x[-1, :]))) ** 2
for j in range(1, len(parameter_sets)):
residu += (mu_0 * parameter_sets[j]) ** 2
residu += (mu_0 * (alpha - 1)) ** 2
return residu
def run(self,y,x):
plsq = minimize(self.residuals, self.parameter_sets ,args=(y, x))
return plsq.x
x = np.array([[0.1,0.2],[0.3,0.4],[0.4, 0.5],[0.6, 0.7],[0.8,0.9],[0.9,1],[1,1.1]])
y = np.array([1,2,3,4,5,6,7])
least_squares = Least_squares()
print(least_squares.run(y,x))
Error:TypeError: residuals() takes 3 positional arguments but 4 were given
Question: All the def can work independently except run. Can someone help me to figure it out?
I fixed it. This is my code below: