2013-12-09 5 views

risposta

7

O si utilizza la regressione vettoriale di supporto sklearn.svm.SVR e si imposta l'appropriato kernel (vedere here).

O di installare la versione più recente del maestro sklearn e utilizzare il recentemente aggiunto sklearn.preprocessing.PolynomialFeatures (vedi here) e poi OLS o Ridge in cima a quello.

16

Theory

regressione polinomiale è un caso speciale di regressione lineare. Con l'idea principale di come selezioni le tue caratteristiche. Osservando la regressione multivariata con 2 variabili: x1 e x2. La regressione lineare sarà simile a questa: y = a1 * x1 + a2 * x2.

Ora si desidera avere una regressione polinomiale (facciamo un polinomio di 2 gradi). Creeremo alcune funzionalità aggiuntive: x1*x2, x1^2 e x2^2. Così avremo il vostro 'regressione lineare':

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

Questa mostra bene un concetto importante curse of dimensionality, perché il numero di nuove funzionalità cresce molto più velocemente in modo lineare con la crescita del grado di polinomiale. Puoi dare un'occhiata about this concept here.

Pratica con scikit-learn

Non c'è bisogno di fare tutto questo in scikit. Polynomial regression è già disponibile lì (nella versione 0.15. Verificare how to update it here). Pipeline

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

di sklearn rende ancora più semplice: http://scikit-learn.org/0.17/auto_examples/model_selection/plot_underfitting_overfitting.html – amos

+0

@Salvador Dali. Scusa, cos'è esattamente "vector"? –

+3

@GianlucaJohnMassimiani, vector = y_training e prediction = X_test. –