Elastic-net正则化的广义线性模型。
项目描述
弹性网正则化的广义线性模型的Python实现
广义线性模型 是回归和分类中广泛应用的成熟工具,在科学、经济学、商业和金融等领域都有广泛应用。由于其凸损失和点状非线性以及定义良好的噪声模型,它们具有独特的可识别性,易于解释。
在拥有大量预测变量的探索性数据分析时代,正则化非常重要。正则化通过惩罚负对数似然来防止过拟合,可以用来以结构化形式表达对参数的先验知识。
尽管正则化广义线性模型具有吸引力,但Python数据科学生态系统中可用的工具高度碎片化。具体来说,
statsmodels 提供了广泛的连接函数,但没有正则化。
scikit-learn 提供弹性网络正则化,但仅适用于线性模型。
lightning 提供弹性网络和分组lasso正则化,但仅适用于线性回归和逻辑回归。
Pyglmnet 是对此碎片化的回应。它运行在Python 3.5+上,以下是亮点之一。
Pyglmnet 提供了广泛的噪声模型(以及成对的规范连接函数):'gaussian','binomial','probit','gamma',‘poisson’,和 'softplus'。
它支持广泛的正则化器:岭回归、lasso、弹性网络、分组lasso 和 Tikhonov正则化。
Pyglmnet的API设计为与scikit-learn兼容,因此您可以使用Pipeline工具,如GridSearchCV()和cross_val_score()。
我们遵循与Friedman, J., Hastie, T., & Tibshirani, R. (2010) 和其广泛流行的R包相同的Approach和符号。
我们实现了一个具有牛顿更新、活动集、更新缓存和预热重启的循环坐标下降优化器。此优化方法与R包中使用的相同。
存在多个用于R glmnet包的Python包装器(例如这里和这里)但与这些不同,Pyglmnet是一个纯Python实现。因此,它易于修改,并可在将来轻松引入额外的噪声模型和正则化器。
安装
使用pip安装稳定的PyPI版本
$ pip install pyglmnet
对于 bleeding edge 开发版本
克隆存储库。
$ pip install https://api.github.com/repos/glm-tools/pyglmnet/zipball/master
入门
以下是一个如何使用GLM估计器的示例。
import numpy as np
import scipy.sparse as sps
from pyglmnet import GLM, simulate_glm
n_samples, n_features = 1000, 100
distr = 'poisson'
# sample a sparse model
beta0 = np.random.rand()
beta = np.random.random(n_features)
beta[beta < 0.9] = 0
# simulate data
Xtrain = np.random.normal(0.0, 1.0, [n_samples, n_features])
ytrain = simulate_glm('poisson', beta0, beta, Xtrain)
Xtest = np.random.normal(0.0, 1.0, [n_samples, n_features])
ytest = simulate_glm('poisson', beta0, beta, Xtest)
# create an instance of the GLM class
glm = GLM(distr='poisson', score_metric='deviance')
# fit the model on the training data
glm.fit(Xtrain, ytrain)
# predict using fitted model on the test data
yhat = glm.predict(Xtest)
# score the model on test data
deviance = glm.score(Xtest, ytest)
教程
这里有一个关于 GLMs、优化和伪代码的全面教程。
以下是在PyData Chicago 2016上的演讲幻灯片、相应的教程笔记本和一个视频。
如何贡献?
我们欢迎pull请求。请参阅我们的开发者文档页面以获取更多详细信息。
致谢
Konrad Kording 为资金和支持
Sara Solla 为精湛的GLM讲座
许可证
MIT许可 版权(c)2016-2019 Pavan Ramkumar
项目详情
下载文件
下载您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源分布
构建分布
pyglmnet-1.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 6949eb9ea14ca43b6fbfbdb25b89fc3493f8b8f78705523b3a603dcd85d707a6 |
|
MD5 | e7a90f472d7613162ad1deb372087b09 |
|
BLAKE2b-256 | b3b4862550f7a6289752abd9c5ceb534259530c57a930371485c0704944ec1d4 |
pyglmnet-1.1-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2c26db778d27dd6c5fe5d4fbffa877605945d36223a7f159b1d510f177b9da1d |
|
MD5 | ddaa6060d4c70aec7080c941ba4fbbcf |
|
BLAKE2b-256 | 43d89244c82dbe764d20247845caeb8130a25affa1dc844e419a17291a8061ae |