一个快速 ⚡ 且模块化 ⚒️ 的稀疏广义线性模型 scikit-learn 替代品
skglm
是一个 Python 包,为稀疏广义线性模型(GLMs)提供快速估计器,100% 兼容 scikit-learn
。它高度灵活,支持广泛的 GLMs。
您可以选择 skglm
已有的估计器,或通过组合可用的数据拟合和惩罚项来自定义您自己的估计器。
想要浏览 skglm
的文档吗?
为什么选择 skglm
?
skglm
专门设计用于解决稀疏 GLMs。
它支持 scikit-learn
中缺失的许多模型,并确保高性能。
选择 skglm
的原因有几个,其中包括:
速度 | 快速求解器能够处理大型数据集,无论是密集还是稀疏,具有数百万特征,速度比 scikit-learn 快达 100 倍 |
模块化 | 用户友好的 API,可以使用现有的数据拟合和惩罚项的任意组合来构建自定义估计器 |
可扩展性 | 灵活的设计使得实现新的数据拟合和惩罚项变得简单易行,只需几行代码 |
兼容性 | 估计器完全兼容 scikit-learn API,可直接替代其 GLM 估计器 |
开始使用 skglm
安装 skglm
skglm
可在 PyPi 上获得。运行以下命令获取最新版本的包
pip install -U skglm
它也可在 conda-forge 上获得,可以使用以下命令安装:
conda install -c conda-forge skglm
skglm
的第一步
安装 skglm
后,您可以运行以下代码片段在玩具数据集上拟合 MCP 回归模型
# 导入要拟合的模型
from skglm.estimators import MCPRegression
# 导入用于创建玩具数据集的工具
from skglm.utils.data import make_correlated_data
# 生成玩具数据集
X, y, _ = make_correlated_data(n_samples=10, n_features=100)
# 初始化并拟合估计器
estimator = MCPRegression()
estimator.fit(X, y)
# 打印 R²
print(estimator.score(X, y))
您可以参考文档来探索 skglm
已有的估计器列表。
没有找到适合您的估计器?您仍然可以构建自己的。 这里是一个代码片段,用于拟合带有 Huber 损失的 MCP 正则化问题。
# 导入数据拟合、惩罚项和 GLM 估计器
from skglm.datafits import Huber
from skglm.penalties import MCPenalty
from skglm.estimators import GeneralizedLinearEstimator
from skglm.utils.data import make_correlated_data
from skglm.solvers import AndersonCD
X, y, _ = make_correlated_data(n_samples=10, n_features=100)
# 创建并拟合带有 Huber 损失和 MCP 惩罚的 GLM 估计器
estimator = GeneralizedLinearEstimator(
datafit=Huber(delta=1.),
penalty=MCPenalty(alpha=1e-2, gamma=3),
solver=AndersonCD()
)
estimator.fit(X, y)
您可以在文档的 API 部分找到关于支持的数据拟合和惩罚项以及如何组合它们的详细描述。 您还可以参加我们的教程,学习如何创建自己的数据拟合和惩罚项。
为 skglm
做贡献
skglm
是一个持续的努力,依赖于社区的努力来持续和发展。您的贡献是受欢迎的,并且非常有价值。它可以是
- 错误报告:您在使用
skglm
时可能会遇到错误。请不要犹豫,在问题部分报告它。 - 功能请求:您可能想要扩展/添加新功能到
skglm
。您可以使用问题部分提出建议。 - 拉取请求:您可能已经修复了一个错误,添加了一个功能,或者甚至修复了文档中的一个小错字,...您可以提交一个拉取请求,我们会尽快联系您。
引用
skglm
是持续研究的结果。它采用 BSD 3-Clause 许可。您可以自由使用它,如果您使用了它,请引用
@inproceedings{skglm,
title = {Beyond L1: Faster and better sparse models with skglm},
author = {Q. Bertrand and Q. Klopfenstein and P.-A. Bannier and G. Gidel and M. Massias},
booktitle = {NeurIPS},
year = {2022},
}
有用链接
- 文档链接:https://contrib.scikit-learn.org/skglm/
skglm
arXiv 文章链接:https://arxiv.org/pdf/2204.07826.pdf