Получение gl mnet результатов из R в Python с использованием регрессии Пуассона - PullRequest
0 голосов
/ 13 марта 2020

Я пытаюсь реализовать тот же код из R, используя gl mnet и в Python. Проблема в том, что я использую регрессию Пуассона.

В R я хочу запустить следующую регрессию. Вектор у на 3 переменных. Это простой пример, но я хочу упростить сравнение результатов в Python:

library(glmnet)
y= c(2.631007e-13, 2.953114e-09, 1.537151e-03)
covar = diag(3)
mod <- glmnet(x=covar, y=y, family="poisson")

. Выше приведены следующие коэффициенты: [1] 0.000000 0.000000 7.557667. Только 3-я переменная имеет вес от штрафа.

В Python я использую pygl mnet. Однако это дает разные результаты.

from pyglmnet import GLM
import numpy as np
glm = GLM(alpha=1, distr='poisson', tol=1e-07)
print(glm.fit(np.eye(3),np.array([2.631007e-13, 2.953114e-09, 1.537151e-03])).beta_)

Это дает мне [0,0,0] для 3 коэффициентов.

Я предполагаю, что мне может понадобиться использовать проверку K-Fold, а также поиск по различным лямбда-выражениям (штрафование ) параметры. Однако я не уверен, как именно это сделать.

Кто-нибудь смог выяснить, как запустить gl mnet с пуассоном в Python для получения точно таких же результатов? Я хотел бы использовать чистое Python решение, а не просто запускать код R в Python (т.е. я бы не хотел использовать rpy2).

Я знаю, что другая библиотека gl mnet существует для Python, но она не установлена ​​для Windows, что я и использую.

...