Я хотел бы нарисовать контурный график оценки плотности ядра, где KDE интегрирован в пределах каждой области, заполненной контуром.Python - интегрировать оценку плотности ядра 2D в контурных линиях
В качестве примера, представьте, я вычисляю KDE 2D-данных:
data = np.random.multivariate_normal((0, 0), [[1, 1], [2, 0.7]], 100)
x = data[:, 0]
y = data[:, 1]
xmin, xmax = min(x), max(x)
ymin, ymax = min(y), max(y)
xx, yy = np.mgrid[xmin:xmax:100j, ymin:ymax:100j]
positions = np.vstack([xx.ravel(), yy.ravel()])
values = np.vstack([x, y])
kernel = st.gaussian_kde(values)
f = np.reshape(kernel(positions).T, xx.shape)
Я знаю, как рисовать contourplot в KDE.
fig = plt.figure()
ax = fig.gca()
ax.set_xlim(xmin, xmax)
ax.set_ylim(ymin, ymax)
cfset = ax.contourf(xx, yy, f, cmap='Blues')
cset = ax.contour(xx, yy, f, colors='k')
plt.show()
Однако этот контурный график показывает, какова плотность вероятности в каждой из заполненных областей. Вместо этого я хотел бы, чтобы график указывал на общую вероятность попадания в каждую заполненную область.
Спасибо. Хотя ответ не полностью работает, он приближает меня к решению (по крайней мере, в этом конкретном случае, когда контуры монотонны). Не могли бы вы пояснить, что вы делаете, когда назначаете F [order] = 1 - F? Спасибо – Laura
Я нашел проблему. Это решение работает, если вы рисуете ax.contourf (xx, yy, (1-F), levels = new_levels). – Laura
Отлично! Таким образом, вы, вероятно, могли бы также заменить F [порядок] = 1 - F на F [порядок] = F и оставить другую строку нетронутой. Вам все еще нужен совет о том, что на самом деле делает F [order] = F? –