如何使用 scikit-learn 进行高斯/多项式回归?
Posted
技术标签:
【中文标题】如何使用 scikit-learn 进行高斯/多项式回归?【英文标题】:How to do gaussian/polynomial regression with scikit-learn? 【发布时间】:2013-12-26 03:01:00 【问题描述】:scikit-learn 是否提供了使用高斯或多项式内核执行回归的工具?我查看了 API,但没有看到任何内容。 有没有人在 scikit-learn 之上构建了一个包来做到这一点?
【问题讨论】:
【参考方案1】:理论
多项式回归是线性回归的一种特殊情况。主要思想是如何选择功能。查看具有 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
这很好地展示了一个重要的概念curse of dimensionality,因为随着多项式次数的增长,新特征的数量增长比线性增长快得多。你可以看看about this concept here。
使用 scikit-learn 练习
您不需要在 scikit 中执行所有这些操作。 Polynomial regression 已经在那里可用(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_)
【讨论】:
sklearn 的管道使这变得更加容易:scikit-learn.org/0.17/auto_examples/model_selection/… @萨尔瓦多·达利。抱歉,“向量”到底是什么? @GianlucaJohnMassimiani,向量 = y_training 和预测 = X_test。 我正在尝试为d>2
获取PolynomialFeatures
的代码,你有吗?【参考方案2】:
您可以使用支持向量回归sklearn.svm.SVR
并设置适当的kernel
(请参阅here)。
或者您安装最新的 sklearn 主版本并使用最近添加的 sklearn.preprocessing.PolynomialFeatures
(请参阅 here),然后在此基础上使用 OLS 或 Ridge
。
【讨论】:
以上是关于如何使用 scikit-learn 进行高斯/多项式回归?的主要内容,如果未能解决你的问题,请参考以下文章
如何正确使用 scikit-learn 的高斯过程进行 2D 输入、1D 输出回归?
如何使用 scikit-learn 仅删除多项式回归中的交互项?
如何使用 scikit-learn 将多项式曲线拟合到数据中?