簡體   English   中英

如何將此 python 套索回歸代碼翻譯成 Matlab?

[英]How can I translate this python lasso regression code into Matlab?

我想在現有的基於 Matlab 的應用程序中使用來自第三方的一些套索回歸 python 代碼,盡管我無法確定要使用的最等效的 Matlab 函數。 我也沒有足夠強大的回歸模型背景來知道如何檢查奇偶校驗。

目標是將“z_ref”信號(1D pandas 數據幀)擬合到“z_signal”信號(相同的尺寸/大小)。

這是我想轉換的原始 python 代碼:

from sklearn.linear_model import Lasso
lin = Lasso(alpha=0.0001,precompute=True,max_iter=1000,
            positive=True, random_state=9999, selection='random')
lin.fit(z_ref, z_signal)
z_ref_fitted = lin.predict(z_ref).reshape(len(z_ref),1)

這是我第一次嘗試等效的 Matlab 代碼:

[B,fitInfo] = lasso(z_ref,z_signal,'Alpha',0.0001,'MaxIter',1000);
coeff = B(1);
intercept = fitInfo.Intercept(1);
z_ref_fitted = z_ref * coeff + intercept;

我不確定的主要事情是 sklearn package 的 python Lasso and.fit() 實現實際上在做什么。 從這個 python 代碼中,'lin' object 似乎得到了一個截距和系數值,例如:

lin.intercept_
Out[33]: array([0.2758512])

lin.coef_
Out[34]: array([0.04887462])

但是,在 Matlab 中,我上面的代碼生成了例如 B 作為 1x100 雙精度數組,以及如下所示的“fitInfo”結構:

 struct with fields:

         Intercept: [1×100 double]
            Lambda: [1×100 double]
             Alpha: 1.0000e-04
                DF: [1×100 double]
               MSE: [1×100 double]
    PredictorNames: {}

所以從簡單的意義上說,我不確定我應該從 matlab 實現中使用什么系數和截距值。 在我上面嘗試的代碼中,我使用了每個數組中的第一個,這與 Python 代碼的結果非常相似(z_ref_fitted output 看起來相似,但更小)。

任何關於更好的 Matlab 實現 python 代碼的指導,或者我應該研究的理論問題,將不勝感激。

您在 Python 代碼中為 Lasso() 設置的 alpha 用於正則化參數。 您在 matlab 代碼中為 lasso() 設置的 alpha 用於 lasso 與 ridge 優化的權重。 由於您沒有在 matlab lasso() 中設置正則化參數,因此默認情況下,lasso 使用 Lambda 值的幾何序列執行 lasso 正則化,結果在 100 列向量中,每列是對應於每個 Z04A7DA3C5904CADB8ZDA1EE 值的結果

您應該像這樣更改 matlab 代碼 [B,fitInfo] = lasso(z_ref,z_signal,'Lambda',0.0001,'MaxIter',1000);

希望這有幫助:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM