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

时间:2013-05-04 19:18:59

标签: python python-2.7 numpy regression scikit-learn

我正在使用Python 2.7和Scikit - 学习使用多重线性回归拟合数据集,其中不同的术语相乘而不是像sklearn.linear_models.Ridge一样加在一起。

所以而不是

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

我们需要

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

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

2 个答案:

答案 0 :(得分: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 :(得分:0)

这就是你需要的。 X是所有X值的矩阵。

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

学位是您允许公式的最高学位。像X ^ 2的度数是2,而X1 ^ 2 * X2 ^ 3的度数是5.你需要自己决定。

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)