当前位置: 首页 > 知识库问答 >
问题:

在图形绘制中出错

李鸿
2023-03-14
X = df.copy()

# Save and drop labels
y = df['class']
X = X.drop('class', axis=1)
cat_features = list(range(0, X.shape[1]))
model = CatBoostClassifier(iterations=2000, learning_rate=0.1, random_seed=12)
model.fit(X, y,  verbose=False, plot=False)

explainer = shap.Explainer(model)
shap_values = explainer(X)

shap.force_plot(explainer.expected_value, shap_values[0:5,:],X.iloc[0:5,:], plot_cmap="DrDb")

---------------------------------------------------------------------------
AssertionError                            Traceback (most recent call last)
<ipython-input-170-ba1eca12b9ed> in <module>
----> 1 shap.force_plot(10, shap_values[0:5,:],X.iloc[0:5,:], plot_cmap="DrDb")

~\anaconda3\lib\site-packages\shap\plots\_force.py in force(base_value, shap_values, features, feature_names, out_names, link, plot_cmap, matplotlib, show, figsize, ordering_keys, ordering_keys_time_format, text_rotation, contribution_threshold)
    101 
    102     if type(shap_values) != np.ndarray:
--> 103         return visualize(shap_values)
    104 
    105     # convert from a DataFrame or other types

~\anaconda3\lib\site-packages\shap\plots\_force.py in visualize(e, plot_cmap, matplotlib, figsize, show, ordering_keys, ordering_keys_time_format, text_rotation, min_perc)
    343             return AdditiveForceArrayVisualizer(e, plot_cmap=plot_cmap, ordering_keys=ordering_keys, ordering_keys_time_format=ordering_keys_time_format)
    344     else:
--> 345         assert False, "visualize() can only display Explanation objects (or arrays of them)!"
    346 
    347 class BaseVisualizer:

AssertionError: visualize() can only display Explanation objects (or arrays of them)!

我试图用shap和我的数据作图,但弄错了,我真的不明白为什么。我还没发现这方面的任何东西。请解释如何避免此错误?

explainer.expected_value
-5.842052267820879

共有1个答案

方鸿羲
2023-03-14

您应该将最后一行更改为:shap.force\u plot(explainer.expected\u value,shap\u value.values[0:5,:],X.iloc[0:5,:],plot\u cmap=“DrDb”)

通过调用shap\u values.values而不是只调用shap\u values,因为shap\u values保存shapley值、基值和数据。在检查变量之前,我也遇到了同样的问题。

 类似资料:
  • 问题内容: 关闭。 此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Stack Overflow 的主题。 6年前关闭。 改善这个问题 我想用Java绘制图形(节点和边)。但是,由于我不知道该怎么做,因此在开始之前我想寻求一些建议。 我应该怎么做? 使用Graphics2D包,对吗? 节点的标签怎么样?我应该使用诸如drawString之类的东西并手动处理所有“

  • 我目前正在尝试用java绘制sin(x)的图形。作业说明要求我只使用drawLine()作为绘制图形的方法。我似乎不知道如何正确设置y值。现在我有一个while循环,用于逐个像素绘制线,但无法获得正确的y值。这是我目前所掌握的。 } 是的,我知道有很多事情我可以整理或简化,这只是一个粗略的草稿,本身,一旦我一切正常,我会清理。我已经尝试了多种方法来正确设置 y 值,我得到的最接近的方法最终绘制了一

  • 各位程序员好, 我在代码中遇到了一个似乎无法破解的小问题。它与Java的Jframe;图形区域有关。我将在下面发布的代码是在一个绘图方法上。其目的是绘制ArrayList中的房间,该房间位于另一个类中,因此之前。这种偏离航线的情况不会发生,因此在这里发帖。 获取有关该项目的背景信息是ArrayList,其中包含各种不同大小和颜色的房间。房间本身就是物体。 首先是课程: 下面是用于创建房间的类。 我

  • 问题内容: 因此,我正在创建一个免费的手绘图JPanel,它会响应鼠标的移动并 绘制线条。我得到了它的大部分工作,除了一个错误,它会 在线之间随机画一条直线。该随机直线不是 故意的,在缓冲图像上绘制的内容严格来说应该是 用户绘制的内容。这些随机绘制的线不是由用户完成的, 这令人困惑。以下是我的代码,任何人都可以看看吗?所包含的图像 使您可以直观地看到正在执行的操作。 问题答案: 您可能希望嵌套列表

  • 所以,我正在用ODE45在MATLAB中求解一些ODE。它们和代码没有什么特别复杂的,但是每个ODE解决方案需要20-30分钟来获得,我需要获得大约10分钟。(这是一个参数扫描。) 当我坐在那里等待解的到来时,我发现自己希望有一种方法可以在解诗的时候看着解画出来,这样既可以让自己确信正在取得进展,也可以在解似乎有问题的时候结束解。 有没有一种方法从ode45返回当前的(不完整的)解,并在解的时候实

  • 主要内容:1 Swing绘制图形的介绍,2 Swing绘制图形的方法,3 Swing绘制图形的案例1 Swing绘制图形的介绍 java.awt.Graphics类提供了许多用于图形编程的方法。 2 Swing绘制图形的方法 方法 描述 public abstract void drawString(String str, int x, int y) 用于绘制指定的字符串。 public void drawRect(int x, int y, int width, int height) 绘制