我正在使用 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 来拟合和预测这样的乘法/特征回归模型吗?
我正在使用 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 来拟合和预测这样的乘法/特征回归模型吗?
我认为您应该能够通过操纵输入数据集(数据矩阵)来使用常规线性回归来做到这一点。
回归 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))
这就是你需要的。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)