小编Joh*_*anC的帖子

Shap - 颜色条不显示在摘要图中

显示summary_plot时,不显示颜色条。

shap.summary_plot(shap_values, X_train)
Run Code Online (Sandbox Code Playgroud)

概要情节

我尝试过改变plot_size。当绘图较高时,会出现颜色条,但它非常小 - 看起来不应该。

shap.summary_plot(shap_values, X_train, plot_size=0.7)
Run Code Online (Sandbox Code Playgroud)

更高的概要图

这是一个看起来正确的颜色条的示例。 正确的总结图

有谁知道这是否可以以某种方式解决?

如何重现:

import pandas as pd
import shap
import sklearn
from sklearn.ensemble import RandomForestRegressor

# a classic housing price dataset
X,y = shap.datasets.boston()

# a simple linear model
model = RandomForestRegressor(max_depth=6, random_state=0, n_estimators=10)
model.fit(X, y)
shap_values = shap.TreeExplainer(model).shap_values(X)
shap.summary_plot(shap_values, X)
Run Code Online (Sandbox Code Playgroud)

在这种情况下,会显示颜色条,但它很小。我选择这样的例子是为了方便检索数据。

python matplotlib shap

11
推荐指数
1
解决办法
8204
查看次数

带圆圈的热图指示人口规模

嗨,我想用 Python 生成一个热图,类似于所示的热图,其中圆圈的大小表示该单元格中样本的大小。我查看了 seaborn 的画廊并找不到任何东西,而且我认为我无法用 matplotlib 做到这一点。

示例热图

python data-visualization matplotlib seaborn

8
推荐指数
1
解决办法
4700
查看次数

Boxplot:seaborn 中的自定义宽度

我正在尝试在seaborn中绘制箱线图,其宽度取决于x轴值的对数。我正在创建宽度列表并将其传递给 seaborn.boxplot 的 widths=widths 参数。

但是,我得到了

raise ValueError(datashape_message.format("widths"))
ValueError: List of boxplot statistics and `widths` values must have same the length
Run Code Online (Sandbox Code Playgroud)

当我调试和检查时,箱线图统计中只有一个字典,而我有 8 个箱线图。无法准确判断问题出在哪里。

这是箱线图的图像

我使用 pandas 数据框和seaborn 进行绘图。

python matplotlib boxplot seaborn

8
推荐指数
1
解决办法
1万
查看次数

使用 Python 求函数在闭区间上的最小值

更新:如何在 Python 中找到闭区间 [0,3.5] 上函数的最小值?到目前为止,我找到了最大值和最小值,但不确定如何从这里过滤掉最小值。

import sympy as sp

x = sp.symbols('x')

f = (x**3 / 3) - (2 * x**2) + (3 * x) + 1

fprime = f.diff(x)

all_solutions = [(xx, f.subs(x, xx)) for xx in sp.solve(fprime, x)]

print (all_solutions)
Run Code Online (Sandbox Code Playgroud)

python sympy

6
推荐指数
3
解决办法
1万
查看次数

如何找到曲线(如 np.array)与 y==0 的确切交点?

如何从 Python 中的绘图中获得y轴上的精确值?我有两个数组vertical_datagradient(temperature_data)并将它们绘制为:

plt.plot(gradient(temperature_data),vertical_data)
plt.show()
Run Code Online (Sandbox Code Playgroud)

图中所示:

阴谋

我需要零值,但它不完全为零,它是一个浮点数。

python numpy graph matplotlib

6
推荐指数
1
解决办法
2522
查看次数

如何在 Java 8 中解析不包含标点符号的 ISO-8601 格式字符串?

如何将以下字符串解析为LocalDateTime-Object?

20200203092315000000

我总是收到以下异常,但我不明白:

java.time.format.DateTimeParseException: Text '20200203092315000000' could not be parsed at index 0

    at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1949)
    at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1851)
    at java.time.LocalDateTime.parse(LocalDateTime.java:492)
    at de.x.struct.type.LocalDateTimeStructField.setBytesValue(LocalDateTimeStructField.java:44)
    at de.x.struct.Struct.bytesToStruct(Struct.java:110)
    at de.x.struct.StructTest.testStringToStruct(StructTest.java:60)
Run Code Online (Sandbox Code Playgroud)

我的应用程序代码如下所示:

LocalDateTime ldt = LocalDateTime.parse("20200203092315000000", DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSSSSS"));
Run Code Online (Sandbox Code Playgroud)

java localdate

6
推荐指数
1
解决办法
151
查看次数

如何使用seaborn绘制配对直方图

我想使用seaborn distplot制作一个配对直方图,如下所示这种图也可称为此处所示的背对背直方图,或如此处所讨论的沿 x 轴反转/镜像的双直方图

这是我的代码:

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

green = np.random.normal(20,10,1000)
blue = np.random.poisson(60,1000)

fig, ax = plt.subplots(figsize=(8,6))

sns.distplot(blue, hist=True, kde=True, hist_kws={'edgecolor':'black'}, kde_kws={'linewidth':2}, bins=10, color='blue')
sns.distplot(green, hist=True, kde=True, hist_kws={'edgecolor':'black'}, kde_kws={'linewidth':2}, bins=10, color='green')
ax.set_xticks(np.arange(-20,121,20))
ax.set_yticks(np.arange(0.0,0.07,0.01))
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)

plt.show()
Run Code Online (Sandbox Code Playgroud)

这是输出: Seaborn分布图

当我使用此处讨论的方法(plt.barh)时,我得到了下面显示的条形图,这不是我想要的。 水平条形图

或者也许我还没有很好地理解解决方法......类似于这些类型的图的 python-seaborn-distplot 的简单/简短实现将是完美的。我编辑了上面第一个图的图,以显示我希望实现的图类型(尽管 y 轴没有颠倒): 配对直方图

任何线索将不胜感激。

python matplotlib histogram seaborn

6
推荐指数
2
解决办法
5173
查看次数

Counter() 并绘制文本中最常见的单词

我编写了一个函数,可以输出并绘制文本中最常见的单词。请参阅下面的代码和输出。

tf = Counter()
for i  in list(tweet['text']):
    temp=XXX 
for tag, count in tf.most_common(20):
        print("{}: {}".format(tag, count))   
        
y = [count for tag, count in tf.most_common(20)]
x = range(1, len(y)+1)

plt.bar(x, y)
plt.title("Term frequencies used inTwitter Data")
plt.ylabel("Frequency")
plt.savefig('us-iran-term-distn.png')
Run Code Online (Sandbox Code Playgroud)

输出是最常见的单词,如下图所示:

blacklivesmatter: 127336
blm: 58619
black: 25973
people: 17960
.
.
lives: 11684
police: 10762
matter: 9902
white: 9766
georgefloyd: 9023
protest: 8734
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

请问如何在 x 轴上添加最常用的单词?

非常感谢

python counter matplotlib

6
推荐指数
1
解决办法
3042
查看次数

如何平滑 matplotlib 中的折线图?

我已经尝试了所有方法并在此处查看了其他线程,但我找不到如何平滑 matplotlib 图表中的线条。问题是,在大多数教程中,两个轴都有数值,而在我的例子中,对于我的 x 轴,我有一个日期值......

这可能吗?如果没有,是否有任何其他可视化库可以让我做到这一点?

这是我的代码:

date = ["Jan", "Feb", "Mar", "Apr", "May"]
value = [4,12,15,7,25]
plt.plot(date,value)

plt.show() 
Run Code Online (Sandbox Code Playgroud)

当前正在输出:

在此输入图像描述

我想这样展示:

在此输入图像描述

多谢!

python data-visualization matplotlib

6
推荐指数
1
解决办法
4306
查看次数

Sympy:lambda 化使得对数组的操作总是产生数组,对于常量也是如此?

我需要在许多点上评估用户给出的函数(f')的导数。这些点位于列表中(或 numpy.array、pandas.Series...)。当 f' 取决于 sympy 变量时,我获得了预期值,但当 f' 是常量时,我​​获得了预期值:

import sympy as sp

f1 = sp.sympify('1')
f2 = sp.sympify('t')

lamb1 = sp.lambdify('t',f1)
lamb2 = sp.lambdify('t',f2)

print(lamb1([1,2,3]))
print(lamb2([1,2,3]))
Run Code Online (Sandbox Code Playgroud)

我得到:

1
[1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

第二个是好的,但我预计第一个将是一个列表。

这些函数位于矩阵中,是 sympy 运算(例如求导)的最终结果。f1 和 f2 的确切形式因问题而异。

python numpy sympy

5
推荐指数
1
解决办法
1323
查看次数