我正在尝试使用scikit-learn进行多项式回归。从我的理解中,多项式回归是线性回归的特例。我希望可以对scikit的广义线性模型之一进行参数化以适合高阶多项式,但是我认为没有选择的余地。
我确实设法使用了支持向量回归器和多核。这对我的数据子集效果很好,但是要适应较大的数据集需要花费很长时间,因此我仍然需要更快地找到某些东西(即使以某种精度进行交易)。
我在这里错过明显的东西吗?
我正在尝试使用scikit-learn进行多项式回归。从我的理解中,多项式回归是线性回归的特例。我希望可以对scikit的广义线性模型之一进行参数化以适合高阶多项式,但是我认为没有选择的余地。
我确实设法使用了支持向量回归器和多核。这对我的数据子集效果很好,但是要适应较大的数据集需要花费很长时间,因此我仍然需要更快地找到某些东西(即使以某种精度进行交易)。
我在这里错过明显的东西吗?
Answers:
理论
多项式回归是线性回归的一种特殊情况。关于如何选择功能的主要思想。查看具有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_)
PolynomialFeatures
吗?
)是我正在谈论的那个。