Note Click
here to download the full example code This notebook shows how to perform a local polynomial regression on one and two-dimensional data.# Author: Steven Golovkine
# License: MIT
# shinx_gallery_thumbnail_number = 2
import matplotlib.pyplot as plt
import numpy as np
from FDApy.preprocessing.smoothing.local_polynomial import LocalPolynomial
We generate some one-dimensional data to perform local polynomial smoothing.
X = np.random.normal[0, 1, 100] Y = 2 * np.sin[X] + np.random.normal[0, 0.25, 100] Y_true = 2 * np.sin[np.linspace[-2, 2, 200]]
Fit local polynomials
# Fit local polynomials lp = LocalPolynomial[kernel_name="epanechnikov", bandwidth=2, degree=2] lp.fit[X, Y] # Plot the results plt.scatter[X, Y, alpha=0.5, color='blue', label='Noisy'] plt.scatter[np.sort[X], lp.X_fit_, color='red', label='Estimated'] plt.plot[np.linspace[-2, 2, 200], Y_true, 'green', label='True'] plt.legend[]
Out:
Estimate the curve on a regular grid.
# Estimation on a grid y_pred = lp.predict[np.linspace[-2, 2, 500]] # Plot the results plt.scatter[X, Y, alpha=0.5, color='blue', label='noisy'] plt.scatter[np.linspace[-2, 2, 500], y_pred, color='red', label='Prediction'] plt.plot[np.linspace[-2, 2, 200], Y_true, color='green', label='True'] plt.legend[]
Out:
We will now do the same using two-dimensional data.
X = np.random.randn[2, 100] Y = -1 * np.sin[X[0]] + 0.5 * np.cos[X[1]] + 0.2 * np.random.randn[100] X0 = np.mgrid[-10:10:1, -10:10:1] / 10 X0 = np.vstack[[X0[0].ravel[], X0[1].ravel[]]]
Fit local polynomials
# Fit local polynomials lp = LocalPolynomial[kernel_name="epanechnikov", bandwidth=2, degree=1] lp.fit[X, Y] # Plot the results fig = plt.figure[] ax = fig.add_subplot[111, projection='3d'] _ = ax.scatter[X[0], X[1], Y] _ = ax.scatter[X[0], X[1], lp.X_fit_, color='red']
Estimate the curve on a regular surface.
# Estimation on a grid y_pred = lp.predict[X0] # Plot the results fig = plt.figure[] ax = fig.add_subplot[111, projection='3d'] _ = ax.scatter[X[0], X[1], Y] _ = ax.scatter[X0[0], X0[1], y_pred, color='red']
Total running time of the script: [ 0 minutes 1.310 seconds]
Gallery generated by Sphinx-Gallery