概率密度直方图(可看作PDF的在步长较大时的近似)与累积分布直方图(可看作CDF的在步长较大时的近似)

  • 在概率密度直方图中,取到任一bin中的一个样本的平均概率,等于该箱的高度(纵坐标y值) × 宽度(横坐标间距δx) ÷ 该箱中样本个数(n_samples),而不是等于纵坐标y值;即此时面积表示概率之和,而不是纵坐标y值表示单一样本概率;如图1、图2所示。
  • 在累积分布直方图中,取到任一bin中的一个样本的平均概率,等于(该箱的高度(纵坐标y值) -左侧箱的高度)/ 该箱中样本个数;即此时纵坐标y值表示概率,但为累计概率;如图3、图4所示。
  • 当箱的个数等于样本总数,即每个箱中只有一个样本时,取到任意一个样本的概率,在概率密度直方图中,等于该箱的高度 × 宽度;在累积分布直方图中,等于该箱的高度-左侧箱的高度。此时累积分布直方图趋近于累计分布函数(CDF),但概率密度直方图中各箱顶点的连线通常并不趋近于概率密度函数(PDF),因为在各个横坐标处,也就是样本的取值处,通常会存在离群的样本取值概率,也就是离群的纵坐标值;只有对该直方图取一定程度的平滑曲线,才趋近于概率密度函数;如图5、图6所示。

图1 bins=4的概率密度直方图
图1 bins=4的概率密度直方图
在这里插入图片描述
图2 bins=40的概率密度直方图
在这里插入图片描述
在这里插入图片描述
图3 bins=4的累积分布直方图
在这里插入图片描述
在这里插入图片描述
图4 bins=40的累积分布直方图
在这里插入图片描述
在这里插入图片描述
图5 bins等于样本总数时的概率密度直方图
bins等于样本总数时的概率密度直方图
bins等于样本总数时的概率密度直方图
图6 bins等于样本总数时的累积分布直方图
bins等于样本总数时的累积分布直方图
bins等于样本总数时的累积分布直方图

  • 下面是绘图的代码:
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_regression


X, y_origin = make_regression(n_samples=10000, noise=100, random_state=0)  # create data
y_scale = (y_origin + abs(y_origin.min())) / 200  # shift and shrink
y_exp = np.expm1(y_scale)  # exp(x) - 1
y_log = np.log1p(y_exp)  # log(1 + x)
print(sum(y_scale - y_log < 1e-10) == len(y_origin))  # y_log is equal to y_scale

n_samples = 2500  # each bin has n_samples, so there are len(y_origin) / n_samples bins.

f, (ax0, ax1) = plt.subplots(1, 2)
ax0.hist(y_origin, bins=int(len(y_origin)/n_samples), density=True, cumulative=True)
ax0.set_title('y_origin')
ax1.hist(y_scale, bins=int(len(y_scale)/n_samples), density=True, cumulative=True)
ax1.set_title('y_scale')
f.suptitle("Synthetic data", y=0.06, x=0.53)
f.tight_layout(rect=[0.05, 0.05, 0.95, 0.95])
plt.show()

f, (ax0, ax1) = plt.subplots(1, 2)
ax0.hist(y_exp, bins=int(len(y_exp)/n_samples), density=True, cumulative=True)
# ax0.set_xlim([-100, 1700])
ax0.set_title('y_exp')
ax1.hist(y_log, bins=int(len(y_log)/n_samples), density=True, cumulative=True)
ax1.set_title('y_log')
f.suptitle("Synthetic data", y=0.06, x=0.53)
f.tight_layout(rect=[0.05, 0.05, 0.95, 0.95])
plt.show()
  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山高月小 水落石出

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值