Я хотел бы использовать некоторый код Python регрессионного лассо от третьей стороны в существующем приложении на основе Matlab, хотя у меня возникают проблемы с поиском наиболее эквивалентных функций Matlab для использования. У меня также нет достаточно сильного фона в регрессионных моделях, чтобы знать, как проверять четность.
Цель состоит в том, чтобы подогнать сигнал 'z_ref' (фрейм данных 1D панд) к сигналу '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;
ОсновнойВ чем я не уверен, так это в действительности то, что делает реализация Python Lasso и .fit () из пакета sklearn. Из этого кода Python объект 'lin', по-видимому, получает одно значение перехвата и коэффицирования, например:
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: {}
Так что в простом смысле я не уверен, какие значения coef и intercept мне следует использовать из реализации matlab. В моем приведенном выше коде я использовал первый в каждом массиве, что дает довольно похожий результат с кодом Python (вывод z_ref_fitted выглядит аналогично, но меньше).
Буду очень признателен за любые рекомендации по лучшей реализации кода Python в Matlab или теоретические вопросы, на которые я должен обратить внимание.