2013-05-04 175 views
2

我正在使用Python 2.7和Scikit-learn來使用多重線性迴歸擬合數據集,其中不同術語相乘而不是像sklearn.linear_models.Ridge一樣添加在一起。使用Python/Sklearn創建並擬合乘法線性迴歸

所以不是

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

我們需要

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

我們可以使Python和Sklearn,以適應和預測這種乘法/享樂迴歸模型?

+0

hmmmm我想我最近可能做了類似的事情。你能發佈更多關於你如何應用這些信息以及數據是什麼樣的信息嗎? – 2013-05-05 03:56:32

回答

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))

+0

+1;不要忘記以完全相同的方式預處理測試數據。 – 2013-08-18 19:15:54

0

這是您需要的。 X是所有X值的矩陣。

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

度是您允許公式的最高度數。就像X^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)