您好,登錄后才能下訂單哦!
數(shù)據(jù)科學(xué)中Python實(shí)現(xiàn)的常見6種概率分布是什么,相信很多沒有經(jīng)驗(yàn)的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。
介紹
擁有良好的統(tǒng)計背景對于數(shù)據(jù)科學(xué)家的日常工作可能會大有裨益。每次我們開始探索新的數(shù)據(jù)集時,我們首先需要進(jìn)行探索性數(shù)據(jù)分析(EDA),以了解某些特征的概率分布是什么。如果我們能夠了解數(shù)據(jù)分布中是否存在特定模式,則可以量身定制最適合我們的機(jī)器學(xué)習(xí)模型。這樣,我們將能夠在更短的時間內(nèi)獲得更好的結(jié)果(減少優(yōu)化步驟)。實(shí)際上,某些機(jī)器學(xué)習(xí)模型被設(shè)計為在某些分布假設(shè)下效果最佳。因此,了解我們正在使用哪個概率分布可以幫助我們確定最適合使用哪些模型。
不同類型的數(shù)據(jù)
每次我們使用數(shù)據(jù)集時,我們的數(shù)據(jù)集都會代表總體的樣本。然后使用這個樣本,我們可以嘗試了解其概率分布,以便我們可以使用它對總體進(jìn)行預(yù)測。
假設(shè)我們要根據(jù)一組數(shù)據(jù)來預(yù)測房屋的價格,我們可以找到一個包含舊金山所有房價的數(shù)據(jù)集(我們的樣本),進(jìn)行一些統(tǒng)計分析之后,我們就可以對美國其他任何城市的房價做出相當(dāng)準(zhǔn)確的預(yù)測(我們的總體)。
數(shù)據(jù)集由兩種主要類型的數(shù)據(jù)組成:數(shù)值(例如整數(shù),浮點(diǎn)數(shù))和標(biāo)簽(例如名字,電腦品牌)。
數(shù)值數(shù)據(jù)還可以分為其他兩類:離散和繼續(xù)。離散數(shù)據(jù)只能采用某些值(例如,學(xué)校中的學(xué)生人數(shù)),而連續(xù)數(shù)據(jù)可以采用任何實(shí)際或分?jǐn)?shù)值(例如,身高和體重的概念)。
從離散隨機(jī)變量中,可以計算出概率質(zhì)量函數(shù),而從連續(xù)隨機(jī)變量中,可以得出概率密度函數(shù)。
概率質(zhì)量函數(shù)給出了變量可以等于某個值的概率,概率密度函數(shù)的值本身并不是概率,需要在給定范圍內(nèi)進(jìn)行積分。
自然界中存在許多不同的概率分布,在本文中,我將向大家介紹數(shù)據(jù)科學(xué)中最常用的概率分布。
我將提供有關(guān)如何創(chuàng)建每個不同概率分布的代碼。首先,讓我們導(dǎo)入所有必要的庫:
import pandas as pd import numpy as np import matplotlib.pyplot as plt import scipy.stats as stats import seaborn as sns
伯努利分布
伯努利分布是最容易理解的分布之一,可用作導(dǎo)出更復(fù)雜分布的起點(diǎn)。這種分布只有兩個可能的結(jié)果,一個簡單的例子就是拋擲偏斜/無偏硬幣。在此示例中,可以認(rèn)為結(jié)果可能是正面的概率等于p,而對于反面則是(1-p)(包含所有可能結(jié)果的互斥事件的概率總和為1)。
probs = np.array([0.75, 0.25]) face = [0, 1] plt.bar(face, probs) plt.title('Loaded coin Bernoulli Distribution', fontsize=12) plt.ylabel('Probability', fontsize=12) plt.xlabel('Loaded coin Outcome', fontsize=12) axes = plt.gca() axes.set_ylim([0,1])
均勻分布
均勻分布可以很容易地從伯努利分布中得出。在這種情況下,結(jié)果的數(shù)量可能不受限制,并且所有事件的發(fā)生概率均相同。例如擲骰子,存在多個可能的事件,每個事件都有相同的發(fā)生概率。
probs = np.full((6), 1/6) face = [1,2,3,4,5,6] plt.bar(face, probs) plt.ylabel('Probability', fontsize=12) plt.xlabel('Dice Roll Outcome', fontsize=12) plt.title('Fair Dice Uniform Distribution', fontsize=12) axes = plt.gca() axes.set_ylim([0,1])
二項分布
二項分布被認(rèn)為是遵循伯努利分布的事件結(jié)果的總和。因此,二項分布用于二元結(jié)果事件,并且所有后續(xù)試驗(yàn)中成功和失敗的概率均相同。此分布采用兩個參數(shù)作為輸入:事件發(fā)生的次數(shù)和試驗(yàn)成功與否的概率。二項式分布最簡單的示例就是將有偏/無偏硬幣拋擲一定次數(shù)。
大家可以觀察一下不同概率情況下二項分布的圖形:
# pmf(random_variable, number_of_trials, probability) for prob in range(3, 10, 3): x = np.arange(0, 25) binom = stats.binom.pmf(x, 20, 0.1*prob) plt.plot(x, binom, '-o', label="p = {:f}".format(0.1*prob)) plt.xlabel('Random Variable', fontsize=12) plt.ylabel('Probability', fontsize=12) plt.title("Binomial Distribution varying p") plt.legend()
二項式分布的主要特征是:
給定多個試驗(yàn),每個試驗(yàn)彼此獨(dú)立(一項試驗(yàn)的結(jié)果不會影響另一項試驗(yàn))。
每個試驗(yàn)只能得出兩個可能的結(jié)果(例如,獲勝或失敗),其概率分別為p和(1- p)。
如果獲得成功概率(p)和試驗(yàn)次數(shù)(n),則可以使用以下公式計算這n次試驗(yàn)中的成功概率(x)。
正態(tài)(高斯)分布
正態(tài)(高斯)分布是數(shù)據(jù)科學(xué)中最常用的分布之一。
我們?nèi)粘I钪邪l(fā)生的許多常見現(xiàn)象都遵循正態(tài)分布,例如:經(jīng)濟(jì)中的收入分布,學(xué)生的平均報告數(shù)量,平均身高等。此外,中心極限定理說明,在適當(dāng)?shù)臈l件下,大量相互獨(dú)立隨機(jī)變量的均值經(jīng)適當(dāng)標(biāo)準(zhǔn)化后依分布收斂于正態(tài)分布。
n = np.arange(-50, 50) mean = 0 normal = stats.norm.pdf(n, mean, 10) plt.plot(n, normal) plt.xlabel('Distribution', fontsize=12) plt.ylabel('Probability', fontsize=12) plt.title("Normal Distribution")
可以看出正態(tài)分布的特征:
曲線在中心對稱。 因此,均值,眾數(shù)和中位數(shù)都相等,從而使所有值圍繞均值對稱分布。
分布曲線下的面積等于1(所有概率之和必須等于1)
可以使用以下公式得出正態(tài)分布
使用正態(tài)分布時,均值和標(biāo)準(zhǔn)差起著非常重要的作用。如果我們知道它們的值,通過概率分布即可輕松找出預(yù)測精確值的概率。根據(jù)正態(tài)分布的特性,68%的數(shù)據(jù)位于均值的一個標(biāo)準(zhǔn)差范圍內(nèi),95%的數(shù)據(jù)位于均值的兩個標(biāo)準(zhǔn)差范圍內(nèi),99.7%的數(shù)據(jù)位于均值的三個標(biāo)準(zhǔn)差范圍內(nèi)。
許多機(jī)器學(xué)習(xí)模型被設(shè)計為遵循正態(tài)分布有最佳效果。以下是一些示例:
高斯樸素貝葉斯分類器
線性判別分析
二次判別分析
基于最小二乘的回歸模型
在某些情況下可以通過對數(shù)和平方根等變換將非正態(tài)數(shù)據(jù)轉(zhuǎn)換為正態(tài)形式。
泊松分布
泊松分布通常用于查找事件可能發(fā)生或不發(fā)生的頻率,還可用于預(yù)測事件在給定時間段內(nèi)可能發(fā)生多少次。
例如,保險公司經(jīng)常使用泊松分布來進(jìn)行風(fēng)險分析(預(yù)測在預(yù)定時間段內(nèi)發(fā)生的車禍?zhǔn)鹿蕯?shù)),以決定汽車保險的定價。
當(dāng)使用泊松分布時,我們可以確信發(fā)生不同事件之間的平均時間,但是事件發(fā)生的確切時刻在時間上是隨機(jī)間隔的。
泊松分布可以使用以下公式建模,其中λ表示單位時間(或單位面積)內(nèi)隨機(jī)事件的平均發(fā)生率。
泊松分布的主要特征是:
事件彼此獨(dú)立
一個事件可以發(fā)生任何次數(shù)(在定義的時間段內(nèi))
兩個事件不能同時發(fā)生
事件發(fā)生之間的平均發(fā)生率是恒定的。
下圖顯示了改變λ的值是如何影響泊松分布的:
for lambd in range(2, 8, 2): n = np.arange(0, 10) poisson = stats.poisson.pmf(n, lambd) plt.plot(n, poisson, '-o', label="λ = {:f}".format(lambd)) plt.xlabel('Number of Events', fontsize=12) plt.ylabel('Probability', fontsize=12) plt.title("Poisson Distribution varying λ") plt.legend()
指數(shù)分布
指數(shù)分布用于對不同事件之間的時間進(jìn)行建模。
舉例來說,假設(shè)我們在一家餐廳工作,并且希望預(yù)測不同顧客來就餐的時間間隔。針對此類問題使用指數(shù)分布一個理想的起點(diǎn)。指數(shù)分布的另一個常見應(yīng)用是生存分析(例如設(shè)備/機(jī)器的預(yù)期壽命)。
指數(shù)分布由參數(shù)λ調(diào)節(jié)。λ值越大,曲線的斜率變化越快。
for lambd in range(1,10, 3): x = np.arange(0, 15, 0.1) y = 0.1*lambd*np.exp(-0.1*lambd*x) plt.plot(x,y, label="λ = {:f}".format(0.1*lambd)) plt.xlabel('Random Variable', fontsize=12) plt.ylabel('Probability', fontsize=12) plt.title("Exponential Distribution varying λ") plt.legend()
指數(shù)分布使用以下公式建模
看完上述內(nèi)容,你們掌握數(shù)據(jù)科學(xué)中Python實(shí)現(xiàn)的常見6種概率分布是什么的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。