【问题标题】:How to view specific rows clustering within shap and scipy?如何查看 shap 和 scipy 中的特定行聚类?
【发布时间】:2021-06-07 10:32:37
【问题描述】:

我有一个基因数据集,其中包含 600 行基因,包含 11 个特征,我在机器学习中使用回归分类来预测致病基因。

我正在尝试查看在 shap 包中执行的行的层次聚类。我专门运行 shap 热图 - shap.plots.heatmap(shap_values, max_display=11) - 并尝试查看在此图中聚集的行/基因的数据(此处显示的示例图:https://shap.readthedocs.io/en/latest/example_notebooks/api_examples/plots/heatmap.html)。

我运行的代码尝试在 shap(shap.plots.heatmap() 函数内)执行聚类:

explainer = shap.Explainer(model, X)
shap_values = explainer(X)
import scipy.cluster
D = scipy.spatial.distance.pdist(shap_values[:,:-1], 'sqeuclidean')
clustOrder = scipy.cluster.hierarchy.leaves_list(scipy.cluster.hierarchy.complete(D))

但是,这在制作 D 对象的第 4 行给了我一个错误:

ValueError: setting an array element with a sequence.

如何更改shap_values[:,:-1] 以修复此错误?

作为参考,我的shap_values.shape 给出了一个 600x11 的数据集,type(shap_values) 给出了shap._explanation.Explanation,不幸的是,在这种情况下我无法给出示例数据。我已经尝试理解解决此错误的类似 stackoverflow 问题,但我无法弄清楚如何让它们具体为 shap_values 数据工作。

如何解决运行层次聚类的错误?难道shap_value不是二维标量,除非分类是二元的吗?

我看到了从 shap_values 运行的示例,使用笔记本 (https://github.com/suinleelab/treeexplainer-study/blob/master/notebooks/mortality/NHANES%20I%20Analysis.ipynb) 运行我在上面尝试的代码但仍然有效。

【问题讨论】:

  • scipy.spatial.distance.pdist 适用于二维标量数组,(不是 shap._explanation.Explanation)。
  • 谢谢你,你知道如果我在做回归分类,我可以将 shap 值转换为二维标量数组还是这只适用于二进制分类?
  • 不,我不知道这个 shap 包。您需要找到一些特征向量,然后为您的数据使用某种类型的嵌入。我不确定 shap Explanation 是否打算以这种方式使用。让我们等待知道图书馆的人。
  • @DN1 将shap_values[:,:-1] 更改为shap_values.values[:,:-1] 后尝试

标签: python scipy hierarchical-clustering shap


【解决方案1】:

正如@user12750353 所指出的,scipy.spatial.distance.pdist 采用ndarrayshap_valuesshap._explanation.Explanation 的类型

shap_values 对象作为属性valuesndarray 格式的结果,可以与scipy.spatial.distance.pdist 一起使用

explainer = shap.Explainer(model, X) shap_values = explainer(X) import scipy.cluster D = scipy.spatial.distance.pdist(shap_values.values[:,:-1], 'sqeuclidean') clustOrder = scipy.cluster.hierarchy.leaves_list(scipy.cluster.hierarchy.complete(D))

【讨论】:

  • 成功了,非常感谢!!如果没有这些帮助,我几乎会陷入困境!
猜你喜欢
  • 2013-07-11
  • 2014-02-18
  • 1970-01-01
  • 2021-07-02
  • 2012-05-23
  • 2014-07-10
  • 2012-03-10
  • 2020-09-15
  • 1970-01-01
相关资源
最近更新 更多