精华内容
下载资源
问答
  • python绘制概率分布图
    千次阅读
    2021-10-21 10:15:17
    # -*- coding: utf-8 -*-
    """
    Created on Thu Oct 21 10:07:55 2021
    
    @author: Machi
    """
    
    import pandas as pd
    import seaborn as sns
    import matplotlib.pyplot as plt
    
    plt.rcParams['font.sans-serif'] = ['SimSun']
    df = pd.read_csv('BSdata.csv')
    sns.distplot(df['身高'],kde = True, bins = 20,rug = True)
    

    在这里插入图片描述

    更多相关内容
  • Python绘制概率分布直方

    千次阅读 2021-12-13 12:46:25
    Python绘制概率分布直方 文章目录Python绘制概率分布直方一、代码1、案例一2、案例二二、运行效果1、案例一2、案例二 一、代码 1、案例一 import random import numpy as np import matplotlib.pyplot as plt X...

    Python绘制概率分布直方图

    一、代码

    1、案例一

    import random
    import numpy as np
    import matplotlib.pyplot as plt
    
    X = np.random.normal(loc=10, scale=2, size=(1, 1000))[0]
    
    Y = np.random.normal(loc=10, scale=1.0, size=(1, 1000))[0]
    
    P = np.ones(1000)
    P[:600] = 0
    np.random.shuffle(P)
    # print(P)
    
    Z = X + Y * P
    
    plt.hist(Z, density=True, bins=150)
    plt.show()
    
    

    2、案例二

    import random
    import numpy as np
    import matplotlib.pyplot as plt
    
    n = 1000
    # p = 0.4
    U = []
    
    for i in range(1000):
    
    
        X = np.random.normal(loc=10, scale=2, size=(1, n))[0]
    
        Y = np.random.normal(loc=10, scale=1.0, size=(1, n))[0]
    
        P = np.ones(n)
        P[:600] = 0
        np.random.shuffle(P)
    
        Z = X + Y * P
    
        a = 1 / pow(n * np.var(Z), 1/2)
    
        b = sum(Z) - n * np.mean(Z)
    
        u = a * b
    
        U.append(u)
    
    plt.hist(U, density=True, bins=60)
    plt.show()
    
    

    二、运行效果

    1、案例一

    在这里插入图片描述

    2、案例二

    在这里插入图片描述
    最后,感谢大家的阅读与支持,谢谢大家了啦。

    展开全文
  • 目录   1、scipy库中各分布对应的方法   2、stats中各分布的常用方法及其功能   3、正态分布概率密度函数及其图象 ...    3)python绘制t分布和正态分布概率密度函数对比   6、F分布概率密度函数
  • 概率分布表示样本数据的模样,长的好不好看如果有图像展示出来就非常完美了,使用Python绘制频率分布直方非常简洁,因为用的频次非常高,这里记录下来。还是Python大法好,代码简洁不拖沓~ 如果数据取值的范围跨度...
  • Python绘制高斯分布图像

    千次阅读 多人点赞 2021-12-03 11:17:19
    Python绘制高斯分布图像 文章目录Python绘制高斯分布图像一、需求介绍二、第一个任务三、第二个任务四、readme文件 一、需求介绍 我们这里旨在使用Python来绘制图像,其他的操作一概先不管,绘制高斯分布的图像。 ...

    Python绘制高斯分布图像

    一、需求介绍

    我们这里旨在使用Python来绘制图像,其他的操作一概先不管,绘制高斯分布的图像。
    在这里插入图片描述

    二、第一个任务

    在这里插入图片描述

    代码

    import matplotlib.pyplot as plt
    import numpy as np
    from scipy.stats import beta
    from mpl_toolkits.mplot3d import Axes3D
    from matplotlib import cm
    import math
    import random
    
    
    def x_gauss(mu=0, sigma=1):
        """
        x_gauss(you can change this method to make it can be input.)
        :param mu: mu_x
        :param sigma: sigma_x
        :return: mu, sigma
        """
        return mu, sigma
        # multiple variables.
    
    
    def y_gauss(mu=0, sigma=1):
        """
        y_gauss(you can change this method to make it can be input.)
        :param mu: mu_y
        :param sigma: sigma_y
        :return: mu, sigma
        """
        return mu, sigma
        # multiple variables.
    
    
    def z_beta(alpha0=1, p0=1):
        """
        z_beta(you can change this method to make it can be input.)
        :param alpha0: alpha0
        :param p0: p0
        :return: alpha0, p0
        """
        return alpha0, p0
        # p is a multiple variable, but alpha is not.
    
    
    if __name__ == '__main__':
        mu_x, sigma_x = x_gauss()
        mu_y, sigma_y = y_gauss()
        # get the mu and sigma parameter of the gauss.
    
        X = np.arange(mu_x - 5 * sigma_x, mu_x + 5 * sigma_x, 10 * sigma_x / 100)
        # range is related with sigma_x.
        Y = np.arange(mu_y - 5 * sigma_y, mu_y + 5 * sigma_y, 10 * sigma_y / 100)
        # range is related with sigma_y.
        # X and Y are arrays, ranging from mu - 5 * sigma to mu + 5 * sigma.
    
        X, Y = np.meshgrid(X, Y)
        # make meshgrided.
    
        alpha, p = z_beta()
        eta = beta.pdf(Y, alpha, p)  # Beta.
        # the equation of the eta.(eta ~ B(1, p))
        # however, as i need a range, so i use the range of Y.
    
        Z = \
            (1 / (pow(2 * math.pi, 1 / 2))) \
            * np.exp(- ((X - mu_x) ** 2) / (2 * (sigma_x ** 2))) \
            + eta * \
            (1 / (pow(2 * math.pi, 1 / 2))) \
            * np.exp(- ((Y - mu_y) ** 2) / (2 * (sigma_y ** 2)))
        # Z = X + eta * Y.
    
        list_z = []
        # hist list.
        for line in Z:  # 100 lines.
            appending = random.choices(line, k=10)
            # 100 lines, 10 choices => 100 * 10 = 1000.
    
            for data in appending:
                list_z.append(data)
    
        """
        two pictures => two windows.
        one is hist,
        the other is 3D.
        """
    
        # print(list_z, len(list_z))
        # 1000 points.
        plt.title('N~Z')
        # title.
        plt.xlabel('Z=X+η*Y')
        plt.ylabel('N')
        # labels.
        plt.hist(list_z)
        # draw the hist.
    
        fig = plt.figure()
        ax = Axes3D(fig)
        ax.plot_surface(X, Y, Z, rstride=1, cstride=1, alpha=0.5, cmap=cm.coolwarm)
        # draw the 3D function.
        plt.show()
        # show.
    
    
    
    

    效果:
    在这里插入图片描述
    以及:
    在这里插入图片描述

    三、第二个任务

    代码

    import matplotlib.pyplot as plt
    import numpy as np
    from scipy.stats import beta
    import math
    import random
    
    
    def x_gauss(mu=0, sigma=1):
        """
        x_gauss(you can change this method to make it can be input.)
        :param mu: mu_x
        :param sigma: sigma_x
        :return: mu, sigma
        """
        return mu, sigma
        # multiple variables.
    
    
    def y_gauss(mu=0, sigma=1):
        """
        y_gauss(you can change this method to make it can be input.)
        :param mu: mu_y
        :param sigma: sigma_y
        :return: mu, sigma
        """
        return mu, sigma
        # multiple variables.
    
    
    def z_beta(alpha0=1, p0=1):
        """
        z_beta(you can change this method to make it can be input.)
        :param alpha0: alpha0
        :param p0: p0
        :return: alpha0, p0
        """
        return alpha0, p0
        # p is a multiple variable, but alpha is not.
    
    
    if __name__ == '__main__':
        """
        n is a multiple variable.
        """
        n = 100
        # multiple variable.
    
        mu_x, sigma_x = x_gauss()
        mu_y, sigma_y = y_gauss()
        # get the mu and sigma parameter of the gauss.
    
        X = np.arange(mu_x - 5 * sigma_x, mu_x + 5 * sigma_x, 10 * sigma_x / 5000)
        # range is related with sigma_x.
        Y = np.arange(mu_y - 5 * sigma_y, mu_y + 5 * sigma_y, 10 * sigma_y / 5000)
        # range is related with sigma_y.
        # X and Y are arrays, ranging from mu - 5 * sigma to mu + 5 * sigma.
    
        X, Y = np.meshgrid(X, Y)
        # make meshgrided.
    
        alpha, p = z_beta()
        eta = beta.pdf(Y, alpha, p)  # Beta.
        # the equation of the eta.(eta ~ B(1, p))
        # however, as i need a range, so i use the range of Y.
    
        Z = \
            (1 / (pow(2 * math.pi, 1 / 2))) \
            * np.exp(- ((X - mu_x) ** 2) / (2 * (sigma_x ** 2))) \
            + eta * \
            (1 / (pow(2 * math.pi, 1 / 2))) \
            * np.exp(- ((Y - mu_y) ** 2) / (2 * (sigma_y ** 2)))
        # Z = X + eta * Y.
    
        u = []
        # calculate the u.(1000)
        for i in range(1000):  # 1000.
            z_i = random.choices(Z[i], k=n)  # k = n.
            # n z.
    
            # calculate the u.
    
            u.append((1 / pow(n * np.var(z_i), 1 / 2)) * (sum(z_i) - n * np.mean(z_i)))
            # Ui = (1 / pow(n * np.var(z_i), 1 / 2)) * (sum(z_i) - n * np.mean(z_i))
            # 1000 u.
    
        plt.title('N~Ui')
        # title.
        plt.xlabel('Ui')
        plt.ylabel('N')
        # labels.
        plt.hist(u)
        # show the u.
        plt.show()
        # show
    
    

    效果:
    在这里插入图片描述

    四、readme文件

    This is the homework, there are two packages,
    homework1 and homework2, homework1 is related
    to work 1, and homework2 is related to work 2.
    
    There may be some modules that you do not have
    in your environment, so maybe you should install
    those modules first, such as, numpy, scipy,
    matplotlib, mpl_toolkits and so on.
    
    After adding all the modules, you can change the
    parameters like mu, sigma, p and so on, well,
    you can also keep the parameters as you want,
    and then,you can run the project and get the
    results.
    
    In fact, homework2 is related to homework1,
    but, in order to make the question more clear,
    i divide the whole question into two small
    questions, all in all, they are the same.
    
    

    以上就是使用Python绘制高斯分布图像的一个案例啦,希望对大家有一些帮助啦,最后感谢大家的阅读与支持了啦。

    展开全文
  • 今天小编就为大家分享一篇使用python绘制3维正态分布图的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 关于Python绘制正态分布图概率密度分布)以及遇到的问题(label无法显示) 目的:统计神经网络模型的参数分布情况 使用seaborn给我们提供的distplot函数来绘制,即调用sns.distplot(),并传入相关参数即可,这里...

    关于Python绘制正态分布图(概率密度分布)以及遇到的问题(label无法显示)

    目的:统计神经网络模型的参数分布情况

    使用seaborn给我们提供的distplot函数来绘制,即调用sns.distplot(),并传入相关参数即可,这里我们用np.random.normal()函数来生成10000个均值为0,方差为1的数据,并将其传入sns.distplot()

    from matplotlib import pyplot as plt
    from scipy.stats import norm
    import seaborn as sns
    import numpy as np
    
    w = np.random.normal(0, 1, 10000)
    
    with plt.style.context(['science', 'no-latex']): # 如果没有安装SciencePlot库,可以把这行去掉
        sns.distplot(w, bins=100, fit=norm)
        plt.title("honest parameters")
        plt.savefig('./distribution.svg', format='svg', dpi=300)
        plt.show()
    

    运行后的结果:
    在这里插入图片描述

    可以看到已经成功画出来啦!

    这时候如果我们想对比诚实模型恶意模型的参数分布,并给其添加对应的标签,label="honest", label="attacker",代码如下:

    from matplotlib import pyplot as plt
    from scipy.stats import norm
    import seaborn as sns
    import numpy as np
    
    w = np.random.normal(0, 1, 10000)
    w_bad = np.random.normal(1, 2, 10000)
    
    with plt.style.context(['science', 'no-latex']): # 如果没有安装SciencePlot库,可以把这行去掉
        sns.distplot(w, bins=100, fit=norm, label="honest")
        sns.distplot(w_bad, bins=100, fit=norm, label="attacker")
        plt.savefig('./distribution.svg', format='svg', dpi=300)
        plt.show()
    

    画出来是这样的:
    在这里插入图片描述

    可以看到诚实模型恶意模型的参数分布已经绘制出来,但似乎设置的标签不起作用label="honest", label="attacker",在图中无法显示。

    解决方法:在plt.show()之前调用plt.legend()即可解决此问题

    from matplotlib import pyplot as plt
    from scipy.stats import norm
    import seaborn as sns
    import numpy as np
    
    w = np.random.normal(0, 1, 10000)
    w_bad = np.random.normal(1, 2, 10000)
    
    with plt.style.context(['science', 'no-latex']): # 如果没有安装SciencePlot库,可以把这行去掉
        sns.distplot(w, bins=100, fit=norm, label="honest")
        sns.distplot(w_bad, bins=100, fit=norm, label="attacker")
        plt.savefig('./distribution.svg', format='svg', dpi=300)
        plt.legend() # 这行没有则无法显示标签
        plt.show()
    

    绘制结果如下,可以看到,已经能够正常显示label标签了:
    在这里插入图片描述

    展开全文
  • 相应的概率分布有二项分布,泊松分布。连续型随机变量如果随机变量X的所有取值无法逐个列举出来,而是取数轴上某一区间内的任一点,则称X为连续型随机变量。相应的概率分布有正态分布,均匀分布,指数分布,伽马分布...
  • 本文实例讲述了Python绘制的二项分布概率图。分享给大家供大家参考,具体如下: 问题: 抛硬币,20次,每一次朝上的概率是0.3.要求绘制连续几次正面朝上的概率图 Python代码: #-*- coding:utf-8 -*- import numpy ...
  • 当我们想要弄清楚变量的统计特性时,往往想知道它是服从什么分布的,这时候就需要绘制概率分布直方python中我们可以使用seaborn库来进行绘制: Seaborn是一个基于matplotlib的Python数据可视化库。它为绘制有...
  • 数据的概率分布以及用python绘制分布图

    万次阅读 多人点赞 2019-08-11 22:13:42
    四、用Python代码实现常见概率分布 二项分布(伯努利分布) from scipy import stats as st import numpy as np import matplotlib as mpl import matplotlib.pyplot as plt #防止乱码 mpl.rcParams['font.sans-...
  • python绘制正态分布图像

    千次阅读 2021-03-31 20:22:20
    正态分布 公式:f(x)=12πσ2e−(x−μ)22σ2f(x)=\frac{1}{\...Python代码 import numpy as np import matplotlib.pyplot as plt import math # 定义正态分布函数 def normal_distribution(x, mu, sigma): return
  • Python绘制概率曲线一

    千次阅读 2022-03-23 08:23:06
    Python绘制概率曲线一 解释 这里是使用matplotlib来绘制正态分布的曲线。 代码实现 import numpy as np import matplotlib.pyplot as plt def test1(n, m=500): out = [] result = np.random.normal(1, 5, n * m...
  • Python绘制高斯分布(正态分布)图像,附python绘图技巧
  • 本文实例讲述了python绘制的二项分布概率图。分享给大家供大家参考,具体如下:问题:抛硬币,20次,每一次朝上的概率是0.3.要求绘制连续几次正面朝上的概率图python代码:#-*- coding:utf-8 -*-import numpy as np...
  • import numpy as np import matplotlib.pyplot as plt %config InlineBackend.figure_format = 'retina' np.random.seed(190801) mu = 200 sigma = 25 n_bins = 50 x = np.random.normal(mu, sigma, size=100) ...
  • 虽然有一些博文已经介绍了一些方法,但是我在调研和绘制时发现,大部分的博文中都用了复杂的for循环语句来实现(可能是因为我太笨,看不懂for循环),并且大部分都不是针对DataFrame来做累计概率分布的,都是做简单...
  • 我的公众号是关于自己在数据分析/挖掘学习...相应的概率分布有二项分布,泊松分布。连续型随机变量如果随机变量X的所有取值无法逐个列举出来,而是取数轴上某一区间内的任一点,则称X为连续型随机变量。相应的概率...
  • 文章目录术语前言整数浮点数抽取字节洗牌排列贝塔分布二项分布卡方分布狄利克雷分布指数分布F分布伽玛分布几何分布耿贝尔分布超几何分布拉普拉斯分布(双指数分布)逻辑斯谛分布正态分布(高斯分布)对数正态分布...
  • 常见离散概率分布伯努利分布(0 1分布)bernoulli destribution:一次独立的实验,成功概率为P。二项分布 binomial destribution:n次独立实验,概率为P,成功k次的概率分布。几何分布 Geometric Distribution:在第...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,022
精华内容 4,408
关键字:

python绘制概率分布图