¿Curva de ajuste multivariable (polinomio) en python?

¿Cómo se calcula una línea de mejor ajuste en python y luego se grafica en un diagrama de dispersión en matplotlib?

Calculé la línea lineal de mejor ajuste utilizando la Regresión de mínimos cuadrados ordinarios de la siguiente manera:

from sklearn import linear_model
clf = linear_model.LinearRegression()
x = [[t.x1,t.x2,t.x3,t.x4,t.x5] for t in self.trainingTexts]
y = [t.human_rating for t in self.trainingTexts]
clf.fit(x,y)
regress_coefs = clf.coef_
regress_intercept = clf.intercept_      

Esto es multivariado (hay muchos valores de x para cada caso). Entonces, X es una lista de listas, y y es una lista única. Por ejemplo:

x = [[1,2,3,4,5], [2,2,4,4,5], [2,2,4,4,1]] 
y = [1,2,3,4,5]

Pero, ¿cómo hago esto con funciones polinomiales de orden superior? Por ejemplo, no solo lineal (x a la potencia de M = 1), sino binomial (x a la potencia de M = 2), cuadrática (x a la potencia de M = 4), y así sucesivamente. Por ejemplo, ¿cómo obtengo las curvas de mejor ajuste de las siguientes?

Extraído de "Reconocimiento de patrones y aprendizaje automático" de Christopher Bishops, p.7:

Respuestas a la pregunta(1)

Su respuesta a la pregunta