以下内容转自 数析学院,只节选了部分,有需要的同学可以直接查看原文
核密度估计(kernel density estimation)是非参数统计检验中的重要方法之一,常用于估计未知的密度函数。今天将向大家介绍在 Python 中如何利用 Scikit-Learn 库中的相关工具,对数据集的样本分布进行核密度估计。
导入可视化库:
- %matplotlib inline
- import matplotlib.pyplot as plt
- import seaborn as sns; sns.set()
- import numpy as np
构建示例数据:
- def make_data(N, f=0.3, rseed=1):
- rand = np.random.RandomState(rseed)
- x = rand.randn(N)
- x[int(f * N):] += 5
- return x
- x = make_data(1000)
可以看到,构建的数据为一维的随机数组,我们对其中后2/3的样本加上整数5。处理之后,其频率分布直方图如下所示:
- hist = plt.hist(x, bins=30, normed=True)
根据频率分布直方图的性质,所有柱形对应的频率之和为1:
- density, bins, patches = hist
- widths = bins[1:] - bins[:-1]
- (density * widths).sum()
频率分布直方图是非参数统计中的重要可视化方法,为了演示方便,我们构造一组规模相对较小的数据集:
- x = make_data(20)
- bins = np.linspace(-5, 10, 10)
- fig, ax = plt.subplots(1, 2, figsize=(12, 4),
- sharex=True, sharey=True,
- subplot_kw={'xlim':(-4, 9),
- 'ylim':(-0.02, 0.3)})
- fig.subplots_adjust(wspace=0.05)
- for i, offset in enumerate([0.0, 0.6]):
- ax[i].hist(x, bins=bins + offset, normed=True)
- ax[i].plot(x, np.full_like(x, -0.01), '|k',
- markeredgewidth=1)
以上内容节选自 数析学院,原文内容较多,先搬运到这,后续有时间再补充,有需要的同学可以先直接到 数析学院 查看原文


雷达卡




京公网安备 11010802022788号







