3

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

所以而不是

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

我们需要

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

我们可以让 Python 和 Sklearn 来拟合和预测这样的乘法/特征回归模型吗?

4

2 回答 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))

于 2013-08-18T17:56:09.640 回答
0

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

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

degree 是公式允许的最高学位。就像 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)
于 2015-07-08T20:33:25.270 回答