在Python套索和R glmnet中标准化X不同?

2024-06-25 22:39:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用Python的scikitlearn和R的glmnet得到同样的结果来拟合套索。A helpful link

如果我在Python中指定“normalize=True”,在R中指定“standarize=T”,那么它们会得到相同的结果。在

Python:

from sklearn.linear_model import Lasso
X = np.array([[1, 1, 2], [3, 4, 2], [6, 5, 2], [5, 5, 3]])
y = np.array([1, 0, 0, 1])
reg = Lasso(alpha =0.01, fit_intercept = True, normalize =True)
reg.fit(X, y)
np.hstack((reg.intercept_, reg.coef_))

Out[95]: array([-0.89607695,  0.        , -0.24743375,  1.03286824])

R:

^{pr2}$

但是,如果我不想标准化变量,并设置normalize=False和standarize=F,它们会给我完全不同的结果。在

Python:

from sklearn.linear_model import Lasso
Z = np.array([[1, 1, 2], [3, 4, 2], [6, 5, 2], [5, 5, 3]])
y = np.array([1, 0, 0, 1])
reg = Lasso(alpha =0.01, fit_intercept = True, normalize =False)
reg.fit(Z, y)
np.hstack((reg.intercept_, reg.coef_))

Out[96]: array([-0.88      ,  0.09384212, -0.36159299,  1.05958478])

R:

reg_glmnet = glmnet(X, y, alpha = 1, lambda = 0.02,standardize = F)
coef(reg_glmnet)

4 x 1 sparse Matrix of class "dgCMatrix"
                     s0
(Intercept) -0.76000000
V1           0.04441697
V2          -0.29415542
V3           0.97623074

“套索”和“套索”中的“标准化”有什么区别?在


Tags: fromalphatruenpsklearnregarrayfit