我正在阅读James、Witten、Hastie、Tibshirani(2013 年)所著的“R 中应用统计学习简介”一书中关于岭回归/套索的 LAB 部分§6.6。
更具体地说,我正在尝试将 scikit-learnRidge
模型应用于 R 包“ISLR”中的“Hitters”数据集。我创建了与 R 代码中所示相同的一组功能。但是,我无法接近glmnet()
模型的结果。我选择了一个 L2 调谐参数进行比较。(scikit-learn 中的“alpha”参数)。
Python:
regr = Ridge(alpha=11498)
regr.fit(X, y)
http://nbviewer.ipython.org/github/JWarmenhoven/ISL-python/blob/master/Notebooks/Chapter%206.ipynb
回复:
请注意,alpha=0
in中的参数glmnet()
意味着应该应用 L2 惩罚(岭回归)。文档警告不要为 输入单个值lambda
,但结果与使用向量的 ISL 中的结果相同。
ridge.mod <- glmnet(x,y,alpha=0,lambda=11498)
是什么导致了差异?
编辑:
从 R 中的惩罚包中
使用penalized()
时,系数与 scikit-learn 相同。
ridge.mod2 <- penalized(y,x,lambda2=11498)
也许问题也可能是:'进行岭回归之间glmnet()
和何时有什么区别?penalized()
R包 glmnet中使用的实际 Fortran 代码的新 python 包装器
https://github.com/civisanalytics/python-glmnet