理論
多項式回帰は、線形回帰の特殊なケースです。どのように機能を選択するのかという主要な考えを持ちます。2つの変数を持つ多変量回帰を見てください:x1
とx2
。線形回帰は次のようになります。y = a1 * x1 + a2 * x2.
ここで、多項式回帰が必要になります(2次多項式を作成しましょう)。いくつかの追加機能を作成します:x1*x2
、x1^2
およびx2^2
。したがって、「線形回帰」を取得します。
y = a1 * x1 + a2 * x2 + a3 * x1*x2 + a4 * x1^2 + a5 * x2^2
これは、次元の重要な概念の呪いをうまく示しています。なぜなら、新しい特徴の数は、多項式の次数の増加に伴って直線的に増加するよりもずっと速いからです。あなたは見てとることができ、ここで、この概念については。
scikit-learnで練習する
scikitでこれらすべてを行う必要はありません。多項式回帰は既に利用可能です(0.15バージョン。ここで更新する方法を確認してください)。
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]]
#Edit: added second square bracket above to fix the ValueError problem
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_)