from sklearn.preprocessing import PolynomialFeatures
from sklearn.pipeline import Pipeline

# creating pipeline and fitting it on data
poly_regr = Pipeline([('polynomial',PolynomialFeatures(degree=2)),
                      ('model', LinearRegression())])

pipe.fit(x, y)

Regresión local (LOESS o LOWESS)

Se crean muchas regresesione lineales, donde cada una se entrena con los puntos de su región. Luego se sueviza. Desventaja: solo vale para x con 1 varaible.

from statsmodels.nonparametric.smoothers_lowess import lowess

smooth = lowess(endog=y, exog=x)
index, pred = np.transpose(smooth)

Video explicativo