2013-12-09 81 views

回答

7

要麼使用支持向量迴歸sklearn.svm.SVR並設置合適的kernel(請參閱here)。

或者你安裝sklearn的最新高手版,並使用最近添加sklearn.preprocessing.PolynomialFeatures(見here),然後OLS或Ridge最重要的是。

16

理論

多項式迴歸是線性迴歸的一種特殊情況。有關如何選擇功能的主要想法。用兩個變量看多元迴歸:x1x2。線性迴歸看起來像這樣:y = a1 * x1 + a2 * x2.

現在你想有一個多項式迴歸(讓我們做2度多項式)。我們將創建一些附加功能:x1*x2,x1^2x2^2。因此,我們將讓你的「迴歸」:

y = a1 * x1 + a2 * x2 + a3 * x1*x2 + a4 * x1^2 + a5 * x2^2 

這很好地顯示了一個重要的概念curse of dimensionality,因爲新功能的數量增長不是線性快得多與多項式程度的增長。你可以看看about this concept here

實踐scikit學習

你不需要做這一切在scikit。 (在0.15版本中,檢查how to update it here)。

from sklearn.preprocessing import PolynomialFeatures 
from sklearn import linear_model 

X = [[0.44, 0.68], [0.99, 0.23]] 
vector = [109.85, 155.72] 
predict= [0.49, 0.18] 

poly = PolynomialFeatures(degree=2) 
X_ = poly.fit_transform(X) 
predict_ = poly.fit_transform(predict) 

clf = linear_model.LinearRegression() 
clf.fit(X_, vector) 
print clf.predict(predict_) 
+0

sklearn的管道使這更容易:http://scikit-learn.org/0.17/auto_examples/model_selection/plot_underfitting_overfitting.html – amos

+0

@Salvador大理。對不起,什麼是「矢量」? –

+3

@GianlucaJohnMassimiani,vector = y_training and predict = X_test。 – 2016-11-20 20:41:53