微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 python 中绘制 KDE

如何解决在 python 中绘制 KDE

使用 scipy 的 gaussian_kde() 函数,可以估计一维数据的 P(X=x)。

我们可能可以这样做:

from scipy import stats
import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt

data = np.random.rand(50,2)
y = np.linspace(data[:,1].min(),data[:,1].max(),50)

kde_x = stats.gaussian_kde(data[:,0],bw_method = 'silverman')
x = np.linspace(data[:,0].min(),0].max(),50)
fig,ax = plt.subplots(figsize=(8,6))
ax.hist(data[:,bins = 10,density = True,color='#0504aa',alpha=0.75,rwidth=0.90)
ax.plot(x,kde_x(x),color = 'black')

kde_y = stats.gaussian_kde(data[:,1],bw_method = 'silverman')
y = np.linspace(data[:,rwidth=0.90)
ax.plot(y,kde_y(y),color = 'black')

我的第一个问题是,将二维数据集传递给 gaussian_kde() 函数是否会被视为 p(x,y),即联合 pdf?

xx,yy = np.mgrid[data[:,0].min():data[:,0].max():50j,1].min():data[:,1].max():50j]
positions = np.vstack([xx.ravel(),yy.ravel()])
values = np.vstack([p_x[:,p_x[:,1]])
kernel = stats.gaussian_kde(values,bw_method = 'silverman')
f = np.reshape(kernel(positions).T,xx.shape)
fig = plt.figure(figsize=(10,7))
ax = plt.axes(projection='3d')
surf = ax.plot_surface(xx,yy,f,rstride=1,cstride=1,cmap='Blues',edgecolor='none')
ax.set_xlabel('x')
ax.set_ylabel('x')
ax.set_zlabel('PDF')
ax.set_title('Surface plot of Gaussian 2D KDE')
fig.colorbar(surf,shrink=0.5,aspect=5) # add color bar indicating the PDF
ax.view_init(50,45)

p(x)*p(y) 是否像将 'x' 和 'y' kd​​e 的估计数据相乘一样简单? 如何显示 p(X=x)*p(Y=y) 的二维表面图或热图?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。