import numpy as np import matplotlib.pyplot as plt X = np.linspace(-3, 3, num=1000) domain = X Y = np.log(np.abs(X**2) + 0.5) def local_regression(X0, X, Y, tau) : X0 = [1, X0] X = [[1, i] for i in X] X = np.asarray(X) XW = (X.T) * np.exp(np.sum((X - X0) ** 2, axis=1) / (-2 * (tau ** 2))) beta = np.linalg.pinv(XW @ X) @ XW @ Y @ X0 # np.linearalgebra.pseudoinverse return beta def draw(tau): prediction = [local_regression(x0, X, Y, tau) for x0 in domain] plt.plot(X, Y, 'o', color='black') plt.plot(domain, prediction, color='red') plt.show() draw(0.1) # OUTPUT :- Graph