發布時間: 2018-09-27 19:12:19
3.1 概率論內容介紹
3.1.1 概率論介紹
概率論是研究隨機現象數量規律的數學分支。隨機現象是相對于決定性現象而言的,在一定條件下必然發生某一結果的現象稱為決定性現象。
概率論是用來描述不確定性的數學工具,很多人工智能算法都是通過描述樣本的概率相關信息或推斷來構建模型。
3.1.2 實驗介紹
本章節主要實現概率與統計相關的知識點,主要用到的框架是 numpy 和 scipy 框架。
3.2 概率論內容實現
提前導入模塊,代碼如下:
>>> import numpy as np
>>> import scipy as sp
3.2.1 均值實現
# 數據準備
>>> b = [1,3,5,6]
>>> ll = [[1,2,3,4,5,6],[3,4,5,6,7,8]]
# 代碼輸入:
>>> np.mean(b)
# 結果輸出:
>>> 3.75
>>> np.mean(ll) #全部元素求均值
# 結果輸出:
>>> 4.5
>>> np.mean(ll,0) #按列求均值
# 結果輸出:
>>> [2. 3. 4. 5. 6. 7.]
>>> np.mean(ll,1) #按行求均值
# 結果輸出:
>>> [3.5 5.5]
3.2.2 方差與標準差實現
# 數據準備
>>> b=[1,3,5,6]
>>> ll=[[1,2,3,4,5,6],[3,4,5,6,7,8]]
# 求方差:
# 代碼輸入:
>>> np.var(b)
# 結果輸出:
>>> 3.6875
# 代碼輸入:
>>> np.var(ll[0])
# 結果輸出:
>>> 3.6874999999999996
# 代碼輸入:
>>> np.var(ll,1)) #第二個參數為 1,表示按行求方差
# 結果輸出:
>>> [2.91666667 2.91666667]
3.2.3 標準差實現
# 數據準備
>>> b=[1,3,5,6]
>>> ll=[[1,2,3,4,5,6],[3,4,5,6,7,8]]
# 代碼輸入:
>>> np.std(b)
# 結果輸出:
>>> 1.920286436967152
# 代碼輸入:
>>> np.std(ll)
# 結果輸出:
>>> 1.9790570145063195
3.2.4 協方差實現
# 數據準備
>>> b=[1,3,5,6]
# 代碼輸入:
>>> np.cov(b)
# 結果輸出:
>>> 4.916666666666666
3.2.5 相關系數
# 數據準備
>>> vc=[1,2,39,0,8]
>>> vb=[1,2,38,0,8]
利用函數實現:
# 代碼輸入:
>>> np.corrcoef(vc,vb)
# 結果輸出:
>>> 4.916666666666667
自定義實現:
# 代碼輸入:
>>> np.mean(np.multiply((vc-np.mean(vc)),(vb-np.mean(vb))))/(np.std(vb)*np.std(vc))
# 結果輸出:
>>> 4.916666666666666
3.2.6 二項分布實現
服從二項分布的隨機變量 X 表示在 n 次獨立同分布的伯努利試驗中成功的次數,其中每次試驗的成功概率為 p。
# 代碼輸入:
from scipy.stats import binom, norm, beta, expon import numpy as np
import matplotlib.pyplot as plt
binom_sim = binom.rvs(n=10, p=0.3, size=10000) print('Data:',binom_sim)
print('Mean: %g' % np.mean(binom_sim)) print('SD: %g' % np.std(binom_sim, ddof=1)) plt.hist(binom_sim, bins=10, normed=True) plt.xlabel(('x'))
plt.ylabel('density') plt.show()
# 結果輸出:
Data: [2 4 3 ... 3 4 1]
Mean: 2.9821
SD: 1.43478
# 分布圖如下:
3.2.1 泊松分布實現
一個服從泊松分布的隨機變量 X,表示在具有比率參數λ的一段固定時間間隔內,事件發生的次數。參數λ告訴你該事件發生的比率。隨機變量 X 的平均值和方差都是λ。
# 代碼輸入:
import numpy as np
import matplotlib.pyplot as plt
x = np.random.poisson(lam=5, size=10000) pillar = 15
a = plt.hist(x, bins=pillar, normed=True, range=[0, pillar], color='g', alpha=0.5) plt.plot(a[1][0:pillar], a[0], 'r')
plt.grid() plt.show()
# 分布圖如下:
注:該代碼只在可視化界面下才能輸出上述圖形,學員可在自己本地環境下測試。
3.2.1 正態分布
正態分布是一種連續分布,其函數可以在實線上的任何地方取值。正態分布由兩個參數描述: 分 布 的 平 均 值 μ 和 標 準 差 σ 。# 代碼輸入:
from scipy.stats import norm import numpy as np
import matplotlib.pyplot as plt
mu = 0
sigma = 1
x = np.arange(-5, 5, 0.1)
y = norm.pdf(x, mu, sigma) plt.plot(x, y)
plt.xlabel('x') plt.ylabel('density') plt.show()
# 分布圖如下:
注:該代碼只在可視化界面下才能輸出上述圖形,學員可在自己本地環境下測試
3.2.1 beta 分布
beta 分布是一個取值在 [0, 1] 之間的連續分布,它由兩個形態參數α和β的取值所刻畫。
# 代碼輸入:
from scipy.stats import beta import numpy as np
import matplotlib.pyplot as plt
a = 0.5
b = 0.5
x = np.arange(0.01, 1, 0.01) y = beta.pdf(x, a, b) plt.plot(x, y)
plt.title('Beta: a=%.1f,b=%.1f' % (a, b)) plt.xlabel('x')
plt.ylabel('density') plt.show()
# 分布圖如下:
注:該代碼只在可視化界面下才能輸出上述圖形,學員可在自己本地環境下測試。
3.2.1 指數分布
指數分布是一種連續概率分布,用于表示獨立隨機事件發生的時間間隔。比如旅客進入機場的時間間隔、打進客服中心電話的時間間隔等。
# 代碼輸入:
from scipy.stats import expon import numpy as np
import matplotlib.pyplot as plt
lam = 0.5
x = np.arange(0, 15, 0.1) y = expon.pdf(x, lam) plt.plot(x, y)
plt.title('Exponential: lam=%.2f' % lam) plt.xlabel('x')
plt.ylabel('density') plt.show()
# 分布圖如下:
注:該代碼只在可視化界面下才能輸出上述圖形,學員可在自己本地環境下測試。?
上一篇: {HTML5}常規選擇器-第一節
下一篇: {Gitee}版本控制工具