使用Python/Sklearn创建并拟合一种乘法线性回归模型

3
我使用Python 2.7和Scikit-learn来使用多元线性回归拟合数据集,其中不同的项是相乘而不是像sklearn.linear_models.Ridge中那样相加。

所以不是

y = c1 * X1 + c2 * X2 + c3 * X3 + ...

我们需要。
y = c1 * X1 * c2 * X2 * c3 * X3...

我们能否使用Python和Sklearn来拟合和预测这样的乘法/享乐回归模型?

嗯,我觉得我最近可能做过类似的事情。你能发布更多关于你如何应用它以及数据是什么样子的信息吗? - Ryan Saxe
2个回答

4

我觉得你可以通过操作输入的数据集(数据矩阵)用普通的线性回归来实现。

回归方程 y ~ c1 * X1 * c2 * X2 * ... 等价于 y ~ k * (X1 * X2 * ...),其中k是某个常数。

因此,如果你将设计矩阵中的所有值相乘,然后对其进行回归,我认为你应该能够做到这一点。

也就是说,如果您的数据矩阵X是4 x 1000,具有特征X1、X2、X3和X4,请使用预处理步骤创建一个新矩阵X_new,该矩阵是1 x 1000大小,其中单列等于 X1 * X2 * X3 * X4,然后拟合 y ~ X_new(clf = LinearRegression(),clf.fit(X_new,y))。


+1;不要忘记以完全相同的方式预处理测试数据。 - Fred Foo

0

以下是您需要的内容。 X 是所有 X 值的矩阵。

Y 是所有 Y 值的矩阵或向量。

degree 是公式允许的最高次数。比如,X^2 的次数为二次,而 X1^2 * X2^3 的次数为五次。您需要自行决定。

from sklearn.preprocessing import PolynomialFeatures
from sklearn import linear_model

poly = PolynomialFeatures(degree=degree)
X_ = poly.fit_transform(X)
model = linear_model.LinearRegression(fit_intercept=True)
model.fit(X_, Y)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接