Fancysean 2022-02-08 14:30 采纳率: 100%
浏览 90
已结题

matplotlib核密度估计依然不够平滑,并且对于kde相关的evaluate函数的用法不是非常明晰

问题遇到的现象和发生背景

根据《python数据科学手册4.7》kde核密度估计的相关代码,尝试利用核密度估计获得更加平滑的作图,但是对比成果,似乎与不适用核密度估计差异不大,并且与书中给出的效果示例有非常明显的差异。

问题相关代码,请勿粘贴截图

这是使用kde的代码

#利用KDE抹掉空间中离散的点,可以使得最后的图像更加平滑
from matplotlib import  pyplot as plt
import numpy as np
from scipy.stats import gaussian_kde
#请注意生成网格和创建多维矩阵的区别
mean=[0,0]
cov=([1,1],[1,2])
x,y=np.random.multivariate_normal(mean,cov,10000).T

data=np.vstack([x,y])
#stack合并指令,vstack纵向合并数组
kde=gaussian_kde(data)


xgrid=np.linspace(-3.5,3.5,40)
ygrid=np.linspace(-6,6,40)
Xgrid,Ygrid=np.meshgrid(xgrid,ygrid)
Z=kde.evaluate(np.vstack([Xgrid.ravel(),Ygrid.ravel()]))

plt.imshow(Z.reshape(Xgrid.shape),origin='lower',aspect='auto',extent=[-3.5,3.5,-6,6],cmap='Blues')
cb=plt.colorbar()
cb.set_label("density")
plt.show()

这是不使用kde的代码

import numpy as np
from matplotlib import pyplot as plt
#构建两个高斯分布
mean=[0,0]
cov=[[1,1],[1,2]]
x,y=np.random.multivariate_normal(mean,cov,10000).T
#与一维类似,但是要写成均值矩阵和协方差矩阵
#先构建多变量的均值矩阵和协方差矩阵,再同时生成二维矩阵
plt.hist2d(x,y,bins=30,cmap='Blues')
cb=plt.colorbar()
cb.set_label('counts in bin')
#给colorbal添加标签
plt.show()

#如果想用六边形区间划分,改hist为hexbin

运行结果及报错内容

img


img


第一张图片没有使用kde,后一张使用了kde,虽然有一定区别,但是觉得不够显著,也没有那么平滑

我的解答思路和尝试过的方法
我想要达到的结果‘

请指教问题所在,并且能够解释一下kde相关函数等的具体含义

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 2月16日
    • 创建了问题 2月8日

    悬赏问题

    • ¥15 WPF动态创建页面内容
    • ¥15 如何对TBSS的结果进行统计学的分析已完成置换检验,如何在最终的TBSS输出结果提取除具体值及如何做进一步相关性分析
    • ¥15 SQL数据库操作问题
    • ¥100 关于lm339比较电路出现的问题
    • ¥15 Matlab安装yalmip和cplex功能安装失败
    • ¥15 加装宝马安卓中控改变开机画面
    • ¥15 STK安装问题问问大家,这种情况应该怎么办
    • ¥15 关于罗技鼠标宏lua文件的问题
    • ¥15 halcon ocr mlp 识别问题
    • ¥15 已知曲线满足正余弦函数,根据其峰值,还原出整条曲线