python 核密度估计

文章介绍了如何在Python中使用numpy和matplotlib库进行核密度估计(如Gaussian_kde)以及绘制二维数据的概率密度函数。首先展示了如何通过给定斜率k生成并可视化数据点,然后使用Scipy库进行核密度估计,最后用contourf函数绘制出概率密度函数图例。
摘要由CSDN通过智能技术生成
import numpy as np
import matplotlib.pyplot as plt

# 设置斜率 k
k = 2

# 生成 x 值,可以是一个范围内的随机数
x = np.linspace(0, 10, 1000)
# 生成对应的 y 值,按照 y = kx 的关系计算
y = k * x + np.random.normal(5, 2, 1000)  # 添加一些随机噪声

#核密度估计
xy = np.stack([x, y],axis=0) 
z = stats.gaussian_kde(xy)(xy)
idx = z.argsort() #获取索引
x, y, z = x[idx], y[idx], z[idx] 

fig,ax=plt.subplots(figsize=(7,6),dpi=300)
scatter=ax.scatter(x, y, marker='o', c=z, edgecolors=None ,s=20, label='LST',cmap='Spectral_r')

cbar=plt.colorbar(scatter,shrink=1,orientation='vertical',label='colorarbar')
# 绘制散点图

plt.xlabel('X')
plt.ylabel('Y')
plt.grid(True)
plt.show()

在这里插入图片描述

import numpy as np
from scipy import stats

# 创建一个包含二维数据的示例数组
data = np.random.randn(2, 1000)

# 使用 stats.gaussian_kde 进行核密度估计
kde = stats.gaussian_kde(data)

# 生成一组用于绘制估计概率密度函数的点
x = np.linspace(min(data[0]), max(data[0]), 100)
y = np.linspace(min(data[1]), max(data[1]), 100)
X, Y = np.meshgrid(x, y)
positions = np.vstack([X.ravel(), Y.ravel()])
Z = np.reshape(kde(positions).T, X.shape)

# 绘制估计的概率密度函数
import matplotlib.pyplot as plt
plt.contourf(X, Y, Z, cmap='Blues')
plt.xlabel('X1')
plt.ylabel('X2')
plt.title('Kernel Density')
plt.colorbar()
plt.show()

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值