如何使用 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 个变量的多元回归:x1x2。线性回归将如下所示:y = a1 * x1 + a2 * x2.

现在您想要进行多项式回归(让我们创建 2 次多项式)。我们将创建一些附加功能:x1*x2x1^2x2^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 中实现多项式逻辑回归?

如何使用 scikit-learn 将多项式曲线拟合到数据中?

使用scikit-learn的高斯过程回归时如何使用点的经纬度?

如何使用高斯混合模型进行聚类?