Numpy.linalg.lstsq() method is “used to calculate the optimal solution for a given set of data points, making it a valuable tool for data analysis and modeling.”
Numpy.linalg.lstsq(a, b, rcond=’warn’)
- a: It depicts a coefficient matrix.
- b: It depicts Ordinate or “dependent variable” values. If the parameter is a two-dimensional matrix, the least square is calculated for each K column of that specific matrix.
- Rcond: It is of float datatype. It is a cut-off ratio for smaller singular values of a. In rank determination, singular values are treated as zero if smaller than rcond times a’s largest singular value.
- X: It depicts the least-squares solution. If the input was a two-dimensional matrix, the solution is always in the K columns of x.
- Residuals: It depicts the Sum of residuals or a squared Euclidean 2-norm for each column in b-a*x. If a rank is <N or M<=Nshowspicts an empty array. If b is 1-dimensional, it will be a (1,) shape array. Otherwise, the shape becomes (k,)
- Rank: It returns in Int datatype and depicts the rank of matrix A.
- S: It depicts the singular values of a.
If b is a matrix, the results are in matrix forms.
Example 1: How to Use numpy.linalg.lstsq() Method
import numpy as np import matplotlib.pyplot as plt # x co-ordinates x = np.arange(0, 9) A = np.array([x, np.ones(9)]) # linearly generated sequence y = [19, 20, 20.5, 21.5, 22, 23, 23, 25.5, 24] # obtaining the parameters of regression line w = np.linalg.lstsq(A.T, y, rcond=None) print(w)
Example 2: Plotting the graph
import numpy as np import matplotlib.pyplot as plt # x co-ordinates x = np.arange(0, 9) A = np.array([x, np.ones(9)]) # linearly generated sequence y = [19, 20, 20.5, 21.5, 22, 23, 23, 25.5, 24] # obtaining the parameters of regression line w = np.linalg.lstsq(A.T, y, rcond=None) print(w) line = w*x + w # regression line plt.plot(x, line, 'r-') plt.plot(x, y, 'o') plt.show()
import numpy as np # Define the coefficient matrix 'a' # For a system of equations like: # 3*x0 + 2*x1 = 9 # x0 + 2*x1 = 8 # The coefficient matrix would be: a = np.array([[3, 2], [1, 2]]) # Define the ordinate values 'b' b = np.array([9, 8]) # Use np.linalg.lstsq() to solve for 'x' x, residuals, rank, s = np.linalg.lstsq(a, b, rcond=None) print("Solution:", x)
Solution: [0.5 3.75]