You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

skglm中Poisson对象无get_lipschitz属性问题求助

解决skglm中Poisson回归L1正则化的AttributeError问题

你在使用skglm 0.3.1拟合带L1正则化的Poisson回归时遇到AttributeError: 'Poisson' object has no attribute 'get_lipschitz'错误,根源是默认的AndersonCD求解器依赖数据拟合类的get_lipschitz方法,但skglm.datafits.Poisson在该版本中没有实现这个方法。

解决方案1:更换兼容的求解器

使用ProxNewton求解器替代默认的AndersonCD,它专为广义线性模型的非二次损失(如Poisson)设计,不需要Lipschitz常数。修改后的可运行代码如下:

import numpy as np
import skglm
import sklearn

X = np.random.rand(100, 10)  
y = np.random.poisson(lam=2.0, size=100)  # Poisson回归原生支持y=0,无需额外加1

# 拆分训练集与测试集
X_train, X_test, y_train, y_test = sklearn.model_selection.train_test_split(X, y, test_size=0.2, random_state=42)

# 配置模型并指定ProxNewton求解器
poisson_model = skglm.GeneralizedLinearEstimator(
    datafit=skglm.datafits.Poisson(),
    penalty=skglm.penalties.L1(alpha=1.0),
    solver=skglm.solvers.ProxNewton()
)

# 拟合模型
poisson_model.fit(X_train, y_train)

# 预测与评估
y_pred = poisson_model.predict(X_test)
mse = sklearn.metrics.mean_squared_error(y_test, y_pred)
print(f'Mean Squared Error: {mse}')

解决方案2:升级skglm到最新版本

skglm后续版本已为Poisson类补充了get_lipschitz方法,同时优化了求解器兼容性。执行以下命令升级:

pip install --upgrade skglm

升级后可直接使用你最初的代码结构,无需更换求解器。

额外说明

  • 你之前给y加1的操作是多余的:Poisson回归原生支持响应变量取值为0,无需额外偏移。
  • L1正则化在Poisson回归中常用于特征选择,ProxNewton求解器在处理这类非凸优化问题时表现更稳定。

内容的提问来源于stack exchange,提问作者Robertmg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 02:22:44