1. 程式人生 > >在python中畫正態分佈圖像

在python中畫正態分佈圖像

1.正態分佈簡介

正態分佈(normal distribtution)又叫做高斯分佈(Gaussian distribution),是一個非常重要也非常常見的連續概率分佈。正態分佈大家也都非常熟悉,下面做一些簡單的介紹。
假設隨機變數服從一個位置引數為、尺度引數為的正態分佈,則可以記為:

而概率密度函式為

2.在python中畫正態分佈直方圖

先直接上程式碼

import numpy as np
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt


def demo1():
    mu ,sigma = 0
, 1 sampleNo = 1000 np.random.seed(0) s = np.random.normal(mu, sigma, sampleNo) plt.hist(s, bins=100, normed=True) plt.show()

上面是一個標準正態分佈的直方圖。最後輸出的影象為:
這裡寫圖片描述

很多同學心裡會有疑惑:這個影象看上去雖然是有點奇怪,雖然形狀有點像正態分佈,但是差得還比較多嘛,不能算是嚴格意義上的正態分佈。
為什麼會有這種情況出現呢?其實原因很簡單,程式碼中我們設定的smapleno = 1000。這個數量並不是很大,所以整個影象看起來分佈並不是很規則,只是有大致的正態分佈的趨勢。如果我們將這個引數加大,相當於增加樣本數量,那麼整個影象就會更加接近正態分佈的形狀。跟拋硬幣的原理一致,拋的次數越多,正面與反面的出現概率更接近50%。
如果我們將sampleno設定為1000000,分佈圖像如下。
這裡寫圖片描述

下面這個影象是不是看起來就漂亮多了!

3.畫直方圖與概率分佈曲線

import numpy as np
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt

def demo2():
    mu, sigma , num_bins = 0, 1, 50
    x = mu + sigma * np.random.randn(1000000)
    # 正態分佈的資料
    n, bins, patches = plt.hist(x, num_bins, normed=True, facecolor = 'blue', alpha = 0.5
) # 擬合曲線 y = mlab.normpdf(bins, mu, sigma) plt.plot(bins, y, 'r--') plt.xlabel('Expectation') plt.ylabel('Probability') plt.title('histogram of normal distribution: $\mu = 0$, $\sigma=1$') plt.subplots_adjust(left = 0.15) plt.show()

最後得到的影象為:
這裡寫圖片描述