Skip to content

A simple implementation of the LOESS algorithm using numpy

License

Notifications You must be signed in to change notification settings

joaofig/pyloess

Repository files navigation

pyloess

A simple implementation of the LOESS algorithm using numpy based on NIST.

The purpose of this code is to illustrate a possible implementation of the LOESS smoothing algorithm. The code has been fully implemented in Python, heavily using NumPy and vectorization.

Using the code

To use the code simply instantiate an object of the Loess class like so:

xx = np.array([0.5578196, 2.0217271, 2.5773252, 3.4140288, 4.3014084,
                4.7448394, 5.1073781, 6.5411662, 6.7216176, 7.2600583,
                8.1335874, 9.1224379, 11.9296663, 12.3797674, 13.2728619,
                4.2767453, 15.3731026, 15.6476637, 18.5605355, 18.5866354,
                18.7572812])
yy = np.array([18.63654, 103.49646, 150.35391, 190.51031, 208.70115,
                213.71135, 228.49353, 233.55387, 234.55054, 223.89225,
                227.68339, 223.91982, 168.01999, 164.95750, 152.61107,
                160.78742, 168.55567, 152.42658, 221.70702, 222.69040,
                243.18828])

loess = Loess(xx, yy)

for x in xx:
    y = loess.estimate(x, window=7, use_matrix=False, degree=1)
    print(x, y)

Notes

The included TorchLoess.py file is experimental. If you can find a better and faster implementation using PyTorch, please let me know.

References

LOESS - Medium

NIST

LOESS - Wikipedia

Tricubic weight function

About

A simple implementation of the LOESS algorithm using numpy

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published