目录

绘制列线图并解释线性模型的Python包-nomogram-explainer记我的第一个pypi项目

绘制列线图并解释线性模型的Python包-nomogram-explainer(记我的第一个pypi项目)

可以绘制列线图并解释线性模型的Python包-nomogram-explainer上线(记我的第一个pypi项目)

SHAP分析是目前可以对预测模型同时进行全局性和局部性两种解释唯一的包,其它的包要么仅能进行局部解释,比如LIME,要么只能进行全局性解释,比如xgboost的变量重要性。

列线图(算法)是展示线性模型的一种算法,目前在了解该算法的基础上,我用python的pyplot包绘制了列线图,过程中发现该算法可以发展成为解释线性模型的工具,且可以进行全局性和局部性解释。撰写相关代码期间,也曾分享过代码,但是总觉得不够方便,最后,在AI的辅助下,也终于把相关的代码上传到pypi来发布。

包功能

  1. 绘制列线图,使用plotly包构建,目前提供了三种绘图风格,实现了使用python绘制列线图,也算是填补了一项Python包的空白。

    https://i-blog.csdnimg.cn/direct/54a5554e4f9145e985b6632c309ea8ac.png#pic_center

  2. 全局解释,采用横向bar图,可以使用meta数据或者score数据,展示各个预测变量对结局变量的贡献的排名和方向,与OR值配合,更加全面说明变量的重要性。

    https://i-blog.csdnimg.cn/direct/0d2490ec07fa4680baeee49dfcdd4e19.png#pic_center

  3. 局部解释,采用瀑布图,使用个案数据,说明个案数据对模型预测值的贡献,使用meta数据则可以包括方向和大小,如果使用score数据(如下图)则只能表达大小。

    https://i-blog.csdnimg.cn/direct/1f26f465b83244499bcf98da839f67e9.png#pic_center

  4. 单个变量的依赖图,也可以绘图观察单个变量原始值和评分之间的关系,意料之中全部都呈线性关系,只是斜率和方向的不同。

    https://i-blog.csdnimg.cn/direct/5a4e1472602e4851a8d035439158252a.png#pic_center

使用心得

  1. 列线图算法仅能对线性模型进行解释,包括逻辑回归和Cox;
  2. 线性模型预设的前提是变量之间的关系是线性的,是对变量间关系的一种简化,如果线性模型在特定的数据上表现良好,说明变量间关系是线性的,就可以使用列线图(算法)来进行全局性解释和局部性解释。
  3. 模型解释可以使用meta数据或score数据来进行(取其中一种即可),使用meta数据可以展示大小和方向,如果使用score数据,仅能表达大小。这些数据可以配合OR值、或者列线图来使用,以充份说明变量对结局的贡献。
  4. 当然也可以使用SHAP分析来对线性模型进行解释,那就是另外一个故事了。

开发体会

  1. 列线图算法的拆解是之前的工作,在此基础上,前后花了一个月时间,在AI的辅助下补全了代码,上线到pypi摸索了两天时间,AI的作用是完善代码、纠错和撰写代码说明等文字工作。
  2. 工作虽说一般,借此机会学习了一下Python包从编写到发布的过程,感觉也有不小的收获。

最后

测试项目(逻辑回归):https://www.heywhale.com/mw/project/67caf46b5f2f47898ed696a5

测试项目(Cox):

项目地址:

感谢关注,希望能对您有所帮助。