- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我是 seaborn 的新手,如果这是一个简单的问题,我深表歉意,但我无法在文档中的任何地方找到关于如何在 kdeplot 中控制 n_levels 绘制的级别的描述。这是一个例子:
import seaborn as sns
nhập numpy dưới dạng np
nhập matplotlib.pyplot dưới dạng plt
x,y=np.random.randn(2,10000)
fig,ax=plt.subplots()
sns.kdeplot(x,y, shade=True,shade_lowest=False, ax=ax,n_levels=3,cmap="Reds")
plt.hiển thị()
这是结果图:
我想知道显示的置信水平是多少,这样我就可以将我的绘图标记为“阴影区域显示 (a,b,c) 百分比置信区间。”我会天真地假设 n_levels 在某种程度上与高斯中的等效“西格玛”有关,但从这个例子来看情况并非如此。
理想情况下,我希望能够通过将元组传递给 kdeplot 来指定显示的间隔,例如:
levels=[68,95,99]
并绘制这些置信区域。
编辑:感谢@Goyo 和@tom,我想我可以澄清我的问题,并找到我正在寻找的答案。正如所指出的,n_levels
被作为 levels
传递给 plt.cotourf
,因此Có thể传递一个列表。但是 sns.kdeplot
绘制了 PDF,并且 PDF 中的值与我正在寻找的置信区间不对应(因为这些对应于 PDF 的集成)。
我需要做的是将集成(和规范化)PDF 的 x,y
值传递给 sns.kdeplot
,然后我就可以输入例如n_levels=[0.68,0.95,0.99,1]
。
编辑 2:我现在已经解决了这个问题。见下文。我使用二维标准化直方图来定义置信区间,然后将其作为水平传递给标准化 kde 图。为重复道歉,我可以创建一个函数来返回级别,但我明确地输入了所有内容。
nhập numpy dưới dạng np
import scipy.optimize
nhập matplotlib.pyplot dưới dạng plt
import seaborn as sns
# Generate some random data
x,y=np.random.randn(2,100000)
# Make a 2d normed histogram
H,xedges,yedges=np.histogram2d(x,y,bins=40,normed=True)
norm=H.sum() # Find the norm of the sum
# Set contour levels
contour1=0.99
contour2=0.95
contour3=0.68
# Set target levels as percentage of norm
target1 = norm*contour1
target2 = norm*contour2
target3 = norm*contour3
# Take histogram bin membership as proportional to Likelihood
# This is true when data comes from a Markovian process
def objective(limit, target):
w = np.where(H>limit)
count = H[w]
return count.sum() - target
# Find levels by summing histogram to objective
level1= scipy.optimize.bisect(objective, H.min(), H.max(), args=(target1,))
level2= scipy.optimize.bisect(objective, H.min(), H.max(), args=(target2,))
level3= scipy.optimize.bisect(objective, H.min(), H.max(), args=(target3,))
# For nice contour shading with seaborn, define top level
level4=H.max()
levels=[level1,level2,level3,level4]
# Pass levels to normed kde plot
fig,ax=plt.subplots()
sns.kdeplot(x,y, shade=True,ax=ax,n_levels=levels,cmap="Reds_d",normed=True)
ax.set_aspect('equal')
plt.hiển thị()
现在生成的图如下:
级别比我预期的要宽一些,但我认为这是正确的。
câu trả lời hay nhất
水平不是置信区间或西格玛,而是估计 pdf 的值。您能够将级别作为列表而不是 n_levels 传递。
biên tập
Seaborn 只是策划事情。它不会给你估计的 pdf,只是一个 matplotlib 轴。因此,如果您想使用 kde pdf 进行计算,则必须自己进行估算。
Seaborn 在后台使用 statsmodels 或 scipy,因此您也可以这样做。 Statsmodels 也可以为您提供 cdf,如果这是您正在寻找的(也许是 scipy,但我不确定)。您可以计算您感兴趣的级别,评估网格中的 pdf 并将所有内容传递给 contourf,这或多或少是 seaborn 所做的。
不幸的是我不够熟练你给你更多关于这个的建议(我只是偶尔使用 statsmodels 进行 OLS 回归)但是你可以看看 kdeplot
的代码并弄清楚。
关于python - 在 seaborn kdeplot 中设置置信度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35225307/
用例: 我有一个小数据集,每个类大约有 3-10 个样本。我正在使用 sklearn SVC 对具有 rbf 内核的那些进行分类。我需要预测的置信度以及预测的类别。我使用了 SVC 的 predict
我有这个 future 10 年回归样本。 date<-as.Date(c("2015-12-31", "2014-12-31", "2013-12-31", "2012-12-31")) value
我正在使用 Python NLTK 库中的 MaxEnt 分类器。对于我的数据集,我有许多可能的标签,并且正如预期的那样,MaxEnt 仅返回一个标签。我已经训练了我的数据集并获得了大约 80% 的准
我们如何在 Windows 中使用 tesseract 3.05 获得图像 OCR 后的置信度?我正在使用子进程命令从 python 调用 tesseract: retcode = subproces
我正在使用 trainsimplicit来自 ALS在 Spark 。 从文档页面:http://spark.apache.org/docs/latest/api/python/pyspark.mll
正在为 GNU Radio OOT 开发基于 Python 的 BER 置信度计算器。根据引用文献 1,置信度由以下公式计算 但是,引用文献2使用以下公式计算置信度: 第一个问题是关于两个公式的。他们
Tôi là một lập trình viên xuất sắc, rất giỏi!