ML之LightGBM:基于titanic数据集利用LightGBM和shap算法实现数据特征的可解释性(量化特征对模型贡献度得分)

简介: ML之LightGBM:基于titanic数据集利用LightGBM和shap算法实现数据特征的可解释性(量化特征对模型贡献度得分)

设计思路

更新中


输出结果

image.png

image.png

image.png

image.png

核心代码

# flake8: noqa

import warnings

import sys

__version__ = '0.37.0'

# check python version

if (sys.version_info < (3, 0)):

   warnings.warn("As of version 0.29.0 shap only supports Python 3 (not 2)!")

from ._explanation import Explanation, Cohorts

# explainers

from .explainers._explainer import Explainer

from .explainers._kernel import Kernel as KernelExplainer

from .explainers._sampling import Sampling as SamplingExplainer

from .explainers._tree import Tree as TreeExplainer

from .explainers._deep import Deep as DeepExplainer

from .explainers._gradient import Gradient as GradientExplainer

from .explainers._linear import Linear as LinearExplainer

from .explainers._partition import Partition as PartitionExplainer

from .explainers._permutation import Permutation as PermutationExplainer

from .explainers._additive import Additive as AdditiveExplainer

from .explainers import other

# plotting (only loaded if matplotlib is present)

def unsupported(*args, **kwargs):

   warnings.warn("matplotlib is not installed so plotting is not available! Run `pip install matplotlib` to fix this.")

try:

   import matplotlib

   have_matplotlib = True

except ImportError:

   have_matplotlib = False

if have_matplotlib:

   from .plots._beeswarm import summary_legacy as summary_plot

   from .plots._decision import decision as decision_plot, multioutput_decision as multioutput_decision_plot

   from .plots._scatter import dependence_legacy as dependence_plot

   from .plots._force import force as force_plot, initjs, save_html, getjs

   from .plots._image import image as image_plot

   from .plots._monitoring import monitoring as monitoring_plot

   from .plots._embedding import embedding as embedding_plot

   from .plots._partial_dependence import partial_dependence as partial_dependence_plot

   from .plots._bar import bar_legacy as bar_plot

   from .plots._waterfall import waterfall as waterfall_plot

   from .plots._group_difference import group_difference as group_difference_plot

   from .plots._text import text as text_plot

else:

   summary_plot = unsupported

   decision_plot = unsupported

   multioutput_decision_plot = unsupported

   dependence_plot = unsupported

   force_plot = unsupported

   initjs = unsupported

   save_html = unsupported

   image_plot = unsupported

   monitoring_plot = unsupported

   embedding_plot = unsupported

   partial_dependence_plot = unsupported

   bar_plot = unsupported

   waterfall_plot = unsupported

   text_plot = unsupported

# other stuff :)

from . import datasets

from . import utils

from . import links

#from . import benchmark

from .utils._legacy import kmeans

from .utils import sample, approximate_interactions

# TODO: Add support for hclustering based explanations where we sort the leaf order by magnitude and then show the dendrogram to the left

def summary_legacy(shap_values, features=None, feature_names=None, max_display=None, plot_type=None,

                color=None, axis_color="#333333", title=None, alpha=1, show=True, sort=True,

                color_bar=True, plot_size="auto", layered_violin_max_num_bins=20, class_names=None,

                class_inds=None,

                color_bar_label=labels["FEATURE_VALUE"],

                cmap=colors.red_blue,

                # depreciated

                auto_size_plot=None,

                use_log_scale=False):

   """Create a SHAP beeswarm plot, colored by feature values when they are provided.

   Parameters

   ----------

   shap_values : numpy.array

       For single output explanations this is a matrix of SHAP values (# samples x # features).

       For multi-output explanations this is a list of such matrices of SHAP values.

   features : numpy.array or pandas.DataFrame or list

       Matrix of feature values (# samples x # features) or a feature_names list as shorthand

   feature_names : list

       Names of the features (length # features)

   max_display : int

       How many top features to include in the plot (default is 20, or 7 for interaction plots)

   plot_type : "dot" (default for single output), "bar" (default for multi-output), "violin",

       or "compact_dot".

       What type of summary plot to produce. Note that "compact_dot" is only used for

       SHAP interaction values.

   plot_size : "auto" (default), float, (float, float), or None

       What size to make the plot. By default the size is auto-scaled based on the number of

       features that are being displayed. Passing a single float will cause each row to be that

       many inches high. Passing a pair of floats will scale the plot by that

       number of inches. If None is passed then the size of the current figure will be left

       unchanged.

   """

   # support passing an explanation object

   if str(type(shap_values)).endswith("Explanation'>"):

       shap_exp = shap_values

       base_value = shap_exp.base_value

       shap_values = shap_exp.values

       if features is None:

           features = shap_exp.data

       if feature_names is None:

           feature_names = shap_exp.feature_names

       # if out_names is None: # TODO: waiting for slicer support of this

       #     out_names = shap_exp.output_names

   # deprecation warnings

   if auto_size_plot is not None:

       warnings.warn("auto_size_plot=False is deprecated and is now ignored! Use plot_size=None instead.")

   multi_class = False

   if isinstance(shap_values, list):

       multi_class = True

       if plot_type is None:

           plot_type = "bar" # default for multi-output explanations

       assert plot_type == "bar", "Only plot_type = 'bar' is supported for multi-output explanations!"

   else:

       if plot_type is None:

           plot_type = "dot" # default for single output explanations

       assert len(shap_values.shape) != 1, "Summary plots need a matrix of shap_values, not a vector."

   # default color:

   if color is None:

       if plot_type == 'layered_violin':

           color = "coolwarm"

       elif multi_class:

           color = lambda i: colors.red_blue_circle(i/len(shap_values))

       else:

           color = colors.blue_rgb


相关文章
|
2月前
|
存储 编解码 负载均衡
数据分片算法
【10月更文挑战第25天】不同的数据分片算法适用于不同的应用场景和数据特点,在实际应用中,需要根据具体的业务需求、数据分布情况、系统性能要求等因素综合考虑,选择合适的数据分片算法,以实现数据的高效存储、查询和处理。
|
2月前
|
存储 缓存 算法
分布式缓存有哪些常用的数据分片算法?
【10月更文挑战第25天】在实际应用中,需要根据具体的业务需求、数据特征以及系统的可扩展性要求等因素综合考虑,选择合适的数据分片算法,以实现分布式缓存的高效运行和数据的合理分布。
|
3月前
|
机器学习/深度学习 人工智能 算法
"拥抱AI规模化浪潮:从数据到算法,解锁未来无限可能,你准备好迎接这场技术革命了吗?"
【10月更文挑战第14天】本文探讨了AI规模化的重要性和挑战,涵盖数据、算法、算力和应用场景等方面。通过使用Python和TensorFlow的示例代码,展示了如何训练并应用一个基本的AI模型进行图像分类,强调了AI规模化在各行业的广泛应用前景。
48 5
|
2月前
|
存储 JSON 算法
TDengine 检测数据最佳压缩算法工具,助你一键找出最优压缩方案
在使用 TDengine 存储时序数据时,压缩数据以节省磁盘空间是至关重要的。TDengine 支持用户根据自身数据特性灵活指定压缩算法,从而实现更高效的存储。然而,如何选择最合适的压缩算法,才能最大限度地降低存储开销?为了解决这一问题,我们特别推出了一个实用工具,帮助用户快速判断并选择最适合其数据特征的压缩算法。
67 0
|
7天前
|
算法 数据安全/隐私保护
室内障碍物射线追踪算法matlab模拟仿真
### 简介 本项目展示了室内障碍物射线追踪算法在无线通信中的应用。通过Matlab 2022a实现,包含完整程序运行效果(无水印),支持增加发射点和室内墙壁设置。核心代码配有详细中文注释及操作视频。该算法基于几何光学原理,模拟信号在复杂室内环境中的传播路径与强度,涵盖场景建模、射线发射、传播及接收点场强计算等步骤,为无线网络规划提供重要依据。
|
20天前
|
机器学习/深度学习 算法
基于改进遗传优化的BP神经网络金融序列预测算法matlab仿真
本项目基于改进遗传优化的BP神经网络进行金融序列预测,使用MATLAB2022A实现。通过对比BP神经网络、遗传优化BP神经网络及改进遗传优化BP神经网络,展示了三者的误差和预测曲线差异。核心程序结合遗传算法(GA)与BP神经网络,利用GA优化BP网络的初始权重和阈值,提高预测精度。GA通过选择、交叉、变异操作迭代优化,防止局部收敛,增强模型对金融市场复杂性和不确定性的适应能力。
156 80
|
8天前
|
机器学习/深度学习 数据采集 算法
基于GA遗传优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
本项目基于MATLAB2022a实现时间序列预测,采用CNN-GRU-SAM网络结构。卷积层提取局部特征,GRU层处理长期依赖,自注意力机制捕捉全局特征。完整代码含中文注释和操作视频,运行效果无水印展示。算法通过数据归一化、种群初始化、适应度计算、个体更新等步骤优化网络参数,最终输出预测结果。适用于金融市场、气象预报等领域。
基于GA遗传优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
|
8天前
|
算法
基于龙格库塔算法的锅炉单相受热管建模与matlab数值仿真
本设计基于龙格库塔算法对锅炉单相受热管进行建模与MATLAB数值仿真,简化为喷水减温器和末级过热器组合,考虑均匀传热及静态烟气处理。使用MATLAB2022A版本运行,展示自编与内置四阶龙格库塔法的精度对比及误差分析。模型涉及热传递和流体动力学原理,适用于优化锅炉效率。
|
6天前
|
移动开发 算法 计算机视觉
基于分块贝叶斯非局部均值优化(OBNLM)的图像去噪算法matlab仿真
本项目基于分块贝叶斯非局部均值优化(OBNLM)算法实现图像去噪,使用MATLAB2022A进行仿真。通过调整块大小和窗口大小等参数,研究其对去噪效果的影响。OBNLM结合了经典NLM算法与贝叶斯统计理论,利用块匹配和概率模型优化相似块的加权融合,提高去噪效率和保真度。实验展示了不同参数设置下的去噪结果,验证了算法的有效性。
|
5天前
|
算法 决策智能
基于SA模拟退火优化算法的TSP问题求解matlab仿真,并对比ACO蚁群优化算法
本项目基于MATLAB2022A,使用模拟退火(SA)和蚁群优化(ACO)算法求解旅行商问题(TSP),对比两者的仿真时间、收敛曲线及最短路径长度。SA源于金属退火过程,允许暂时接受较差解以跳出局部最优;ACO模仿蚂蚁信息素机制,通过正反馈发现最优路径。结果显示SA全局探索能力强,ACO在路径优化类问题中表现优异。