实时 Notebook

您可以在 实时会话 中运行此 Notebook Binder在 Github 上 查看。

广义线性模型

本 Notebook 介绍了 Dask-GLM 中用于广义线性模型的算法。

启动 Dask Client 以获取仪表盘

启动 Dask Client 是可选的。它将提供一个仪表盘,有助于深入了解计算过程。

创建 Client 后,仪表盘链接将可见。建议您一边屏幕打开仪表盘,另一边屏幕使用 Notebook。这可能需要一些努力来安排窗口,但在学习时同时查看两者非常有用。

[1]:
from dask.distributed import Client, progress
client = Client(processes=False, threads_per_worker=4,
                n_workers=1, memory_limit='2GB')
client
[1]:

Client

Client-5b571f45-0de1-11ed-a361-000d3a8f7959

连接方法: Cluster 对象 集群类型: distributed.LocalCluster
仪表盘: http://10.1.1.64:8787/status

集群信息

创建随机数据集

[2]:
from dask_glm.datasets import make_regression
X, y = make_regression(n_samples=200000, n_features=100, n_informative=5, chunksize=10000)
X
[2]:
数组
字节 152.59 MiB 7.63 MiB
形状 (200000, 100) (10000, 100)
计数 20 个任务 20 个块
类型 float64 numpy.ndarray
100 200000
[3]:
import dask
X, y = dask.persist(X, y)

使用 GLM 算法求解

如果可用,还建议在执行期间查看“图”仪表盘

[4]:
import dask_glm.algorithms

b = dask_glm.algorithms.admm(X, y, max_iter=5)

使用不同的 GLM 算法求解

[5]:
b = dask_glm.algorithms.proximal_grad(X, y, max_iter=5)
/usr/share/miniconda3/envs/dask-examples/lib/python3.9/site-packages/dask/core.py:119: RuntimeWarning: overflow encountered in exp
  return func(*(_execute_task(a, cache) for a in args))

可使用不同的族和正则化器进行定制

Dask-GLM 项目模块化良好,允许使用不同的 GLM 族和正则化器,包括实现自定义的相对直接的接口。

[6]:
import dask_glm.families
import dask_glm.regularizers

family = dask_glm.families.Poisson()
regularizer = dask_glm.regularizers.ElasticNet()

b = dask_glm.algorithms.proximal_grad(
    X, y,
    max_iter=5,
    family=family,
    regularizer=regularizer,
)
/usr/share/miniconda3/envs/dask-examples/lib/python3.9/site-packages/dask/core.py:119: RuntimeWarning: overflow encountered in exp
  return func(*(_execute_task(a, cache) for a in args))
/usr/share/miniconda3/envs/dask-examples/lib/python3.9/site-packages/dask/core.py:119: RuntimeWarning: overflow encountered in exp
  return func(*(_execute_task(a, cache) for a in args))
[7]:
dask_glm.families.Poisson??
[8]:
dask_glm.regularizers.ElasticNet??