美文网首页
如何生成满足某个分布的样本点?

如何生成满足某个分布的样本点?

作者: 天明豆豆 | 来源:发表于2020-04-23 20:31 被阅读0次

    如何生成满足某个分布的样本点?

    有的同学会问,想生成满足某种分布的样本点,怎么方便的做到呢?

    scipy 包中的 stats 模块就是做这件事情的,它里面预置了很多种常见分布,比如常见的连续分布几十种:

    image

    常见的离散分布十几种:

    image

    并且,还提供了连续和离散分布的接口对象:rv_continuous, rv_discrete ,真的很强大。

    生成满足某个分布的样本点

    今天我们使用 scipy 玩一个大家常见的一维正态分布,看看如何生成满足正态分布的样本点,以及展示正态分布的常见特性。

    导入所需包:

    import numpy as np
    from scipy.stats import norm
    import matplotlib.pyplot as plt

    生成一维的正态分布,其均值为 0,标准差为 1,创建 100 个样本点:

    data = norm.rvs(0,1,size=100)
    x,y = np.arange(100), data
    plt.plot(x,y,color='b')
    plt.scatter(x,y,color='',edgecolor='orange')
    plt.grid()
    plt.show()

    看到生成的 100 个点以 y = 0 为均线,上下震动,平均振幅为 1: image

    使用 norm.fit 拟合刚刚生成的数据,观察实际数据的均值和方差:

    norm.fit(data)

    拟合后的均值和标准差:

    (0.1515041527608994, 0.9540826823836187)

    pdf 概率密度函数

    norm.pdf 能生成正态分布的概率密度函数,分布的两个参数自己可配置:

    plt.close() x = np.arange(-5,5,0.1) y = norm.pdf(x) # 标准正态分布的概率密度值 plt.plot(x,y,color='b') plt.scatter(x,y,color='',edgecolor='orange') plt.grid() plt.show()

    标准正态分布的概率密度图:

    image

    cdf 累计分布函数

    cdf 曲线 与 x 轴所围区域的面积之和等于 1:

    plt.close() x = np.arange(-5,5,0.1) y = norm.cdf(x) plt.plot(x,y,color='b') plt.scatter(x,y,color='',edgecolor='orange') plt.grid() plt.show()

    标准正态分布的累计分布图:

    image

    还有更多实用的方法,感兴趣可去探索下。

    转自:Python小例子

    相关文章

      网友评论

          本文标题:如何生成满足某个分布的样本点?

          本文链接:https://www.haomeiwen.com/subject/rnjzihtx.html