python 频率分布直方图

在处理特征的过程中,往往在分析对比数据时需要分析数据的分布情况,这时在python中常用到matplotlib中的pyplot模块中的hist函数。
但在使用hist时存在着如果设置normed,改变bins数量会导致概率变化的问题,因此在绘制分布直方图时需要将bins数量设置为真实的数量。

2.hist参数解析

matplotlib.pyplot.hist(
  x, bins=10, range=None, normed=False,
  weights=None, cumulative=False, bottom=None,
  histtype=u'bar', align=u'mid', orientation=u'vertical',
  rwidth=None, log=False, color=None, label=None, stacked=False,
  hold=None, **kwargs) 

x : (n,) array or sequence of (n,) arrays

这个参数是指定每个bin(箱子)分布的数据,对应x轴

bins : integer or array_like, optional

这个参数指定bin(箱子)的个数,也就是总共有几条条状图

normed : boolean, optional

If True, the first element of the return tuple will be the counts normalized to form a probability density, i.e.,n/(len(x)`dbin)

这个参数指定密度,也就是每个条状图的占比例比,默认为1

color : color or array_like of colors or None, optional

这个指定条状图的颜色

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,以下是用 Python 绘制泊松分布概率直方图的代码: ```python import numpy as np import matplotlib.pyplot as plt from scipy.stats import poisson # 设置泊松分布参数 mu = 2.5 # 生成泊松分布数据 data = poisson.rvs(mu, size=1000) # 绘制直方图 plt.hist(data, bins=20, density=True, alpha=0.6, color='b') # 绘制概率密度函数曲线 x = np.arange(0, 15) plt.plot(x, poisson.pmf(x, mu), 'ro--', ms=8, label='Poisson PMF') plt.xlabel('Value') plt.ylabel('Probability') plt.title('Poisson Distribution') plt.legend() plt.show() ``` 解释一下代码: 1. 首先导入需要的库,包括 numpy、matplotlib 和 scipy.stats。 2. 设置泊松分布的参数 mu。 3. 使用 scipy.stats 库中的 poisson.rvs() 函数生成 1000 个泊松分布的数据。 4. 使用 matplotlib 库中的 hist() 函数绘制直方图,其中 bins 参数设置为 20 表示将数据分成 20 个区间,density 参数设置为 True 表示绘制的是概率密度直方图,alpha 参数设置为 0.6 表示透明度为 0.6,color 参数设置为 'b' 表示颜色为蓝色。 5. 使用 numpy 库中的 arange() 函数生成一个从 0 到 14 的整数数组,作为绘制概率密度函数曲线的 x 坐标轴数据。 6. 使用 scipy.stats 库中的 poisson.pmf() 函数生成对应 x 坐标轴数据的概率密度函数值。 7. 使用 matplotlib 库中的 plot() 函数绘制概率密度函数曲线,其中 'ro--' 表示红色圆点和虚线样式。 8. 设置 x 轴和 y 轴的标签,设置图表标题,使用 legend() 函数显示图例,最后使用 show() 函数显示图表。 希望能够帮到你! ### 回答2: 使用Python绘制泊松分布概率直方图需要使用matplotlib库和numpy库。 首先,我们需要导入所需库: ```python import matplotlib.pyplot as plt import numpy as np ``` 接下来,我们可以使用numpy的random模块生成符合泊松分布的随机数。例如,我们可以生成一个参数 λ 为 5 的泊松分布样本: ```python λ = 5 sample = np.random.poisson(λ, size=1000) ``` 然后,我们可以使用matplotlib的hist函数来创建直方图。我们可以指定直方图的边界(bins)和标签等属性。 ```python plt.hist(sample, bins=10, density=True, color='skyblue', alpha=0.7) plt.xlabel('Value') plt.ylabel('Probability') plt.title('Poisson Distribution') plt.grid(True) plt.show() ``` 在这个例子中,我们将概率密度函数的值作为纵轴,在对应的值范围内计算概率,并绘制直方图。 最后,我们使用plt.show()函数显示绘制的直方图。 完整代码如下: ```python import matplotlib.pyplot as plt import numpy as np λ = 5 sample = np.random.poisson(λ, size=1000) plt.hist(sample, bins=10, density=True, color='skyblue', alpha=0.7) plt.xlabel('Value') plt.ylabel('Probability') plt.title('Poisson Distribution') plt.grid(True) plt.show() ``` 运行代码后,我们将会得到一个带有泊松分布概率直方图的可视化结果。直方图的横轴表示取值范围,纵轴表示对应的概率密度值。 ### 回答3: 要用Python绘制泊松分布概率直方图,可以使用matplotlib库来实现。以下是一个简单的例子: 首先,我们需要导入matplotlib和numpy库: ``` import matplotlib.pyplot as plt import numpy as np ``` 然后,我们可以使用numpy的random模块来生成服从泊松分布的随机数。假设我们希望生成10000个服从参数λ=5的泊松分布随机数: ``` lambda_value = 5 random_numbers = np.random.poisson(lambda_value, 10000) ``` 接下来,我们可以使用matplotlib的hist函数来绘制直方图。我们可以指定bin的个数和范围,以及是否要归一化直方图: ``` plt.hist(random_numbers, bins=20, range=(0, 20), density=True) plt.xlabel('Value') plt.ylabel('Probability') plt.title('Poisson Distribution') plt.show() ``` 在这个例子中,我们将bin的个数设置为20,范围设置为0到20,同时将density参数设置为True,表示要归一化直方图。 最后,我们可以使用xlabel、ylabel和title函数来添加标题和标签。 运行以上代码,就可以得到一个泊松分布概率直方图。 注意:为了得到更准确的结果,我们可以增加数据点的个数和调整bin的个数。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值