example-minimize-linear-regression.ipynb

example-minimize-linear-regression.ipynb#

import numpy as np
from scipy.optimize import minimize
import matplotlib.pyplot as plt

# Example data
x = np.array([1, 2, 3, 4, 5])
y = np.array([3.5, 4.6, 6.8, 9.9, 10.7])


# Define the objective function
def objective_function(params):
    a, b = params
    residuals = y - (a * x + b)
    return np.sum(residuals ** 2)

# Define the non-negativity constraints
constraints = ({'type': 'ineq', 'fun': lambda a: a},
               {'type': 'ineq', 'fun': lambda b: b})

# Initial guess for parameters
initial_guess = np.array([1.0, 1.0])

# Perform optimization
result = minimize(objective_function, initial_guess, constraints=constraints)

# Extract optimized values
optimal_a, optimal_b = result.x

# Evaluate the optimized coefficients
print("Optimal a:", optimal_a)
print("Optimal b:", optimal_b)

plt.plot(x, y, '+', label='data')
plt.plot(x, optimal_a*x+optimal_b, label='y=ax+b')
plt.xlabel('x')
plt.ylabel('y')
plt.title('from scipy.optimize import minimize')
plt.legend()
plt.grid()
plt.show()
Optimal a: 1.9700002826266765
Optimal b: 1.1900002733931645
_images/fc1ebce1fbd7aeb4ad02f160291e80ec80f97ad904e245ba53828a5d26df1901.png