Wielowymiarowa (wielomianowa) najlepsza krzywa dopasowania w Pythonie?

Jak obliczyć linię najlepszego dopasowania w pytonie, a następnie narysować ją na wykresie rozrzutu w matplotlib?

Obliczyłem liniową linię najlepszego dopasowania przy użyciu zwykłej regresji najmniejszych kwadratów w następujący sposób:

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_      

Jest to wielowymiarowa (istnieje wiele wartości x dla każdego przypadku). Tak więc X jest listą list, a y to pojedyncza lista. Na przykład:

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

Ale jak to zrobić z funkcjami wielomianowymi wyższego rzędu. Na przykład nie tylko liniowy (x do potęgi M = 1), ale dwumianowy (x do potęgi M = 2), kwadratowy (x do potęgi M = 4) i tak dalej. Na przykład, jak uzyskać najlepsze krzywe dopasowania z poniższych?

Wyciąg z „Rozpoznawania wzorców i uczenia maszynowego” Christophera Bishopsa, s.7: