跳转到主要内容

Elastic-net正则化的广义线性模型。

项目描述

弹性网正则化的广义线性模型的Python实现

License Travis Codecov Circle Gitter DOI

[文档(稳定版本)] [文档(开发版本)]

广义线性模型 是回归和分类中广泛应用的成熟工具,在科学、经济学、商业和金融等领域都有广泛应用。由于其凸损失和点状非线性以及定义良好的噪声模型,它们具有独特的可识别性,易于解释。

在拥有大量预测变量的探索性数据分析时代,正则化非常重要。正则化通过惩罚负对数似然来防止过拟合,可以用来以结构化形式表达对参数的先验知识。

尽管正则化广义线性模型具有吸引力,但Python数据科学生态系统中可用的工具高度碎片化。具体来说,

  • statsmodels 提供了广泛的连接函数,但没有正则化。

  • scikit-learn 提供弹性网络正则化,但仅适用于线性模型。

  • lightning 提供弹性网络和分组lasso正则化,但仅适用于线性回归和逻辑回归。

Pyglmnet 是对此碎片化的回应。它运行在Python 3.5+上,以下是亮点之一。

  • Pyglmnet 提供了广泛的噪声模型(以及成对的规范连接函数):'gaussian''binomial''probit''gamma',‘poisson’,和 'softplus'

  • 它支持广泛的正则化器:岭回归、lasso、弹性网络、分组lassoTikhonov正则化

  • 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)

更多pyglmnet示例和使用案例.

教程

这里有一个关于 GLMs、优化和伪代码的全面教程

以下是在PyData Chicago 2016上的演讲幻灯片、相应的教程笔记本和一个视频

如何贡献?

我们欢迎pull请求。请参阅我们的开发者文档页面以获取更多详细信息。

致谢

许可证

MIT许可 版权(c)2016-2019 Pavan Ramkumar

项目详情


下载文件

下载您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分布

pyglmnet-1.1.tar.gz (162.6 kB 查看哈希值)

上传时间

构建分布

pyglmnet-1.1-py3-none-any.whl (23.2 kB 查看哈希值)

上传时间 Python 3

由以下支持