NumPy隨機(jī)數(shù)據(jù)分布與Seaborn可視化詳解
隨機(jī)數(shù)據(jù)分布
什么是數(shù)據(jù)分布?
數(shù)據(jù)分布是指數(shù)據(jù)集中所有可能值出現(xiàn)的頻率,并用概率來(lái)表示。它描述了數(shù)據(jù)取值的可能性。
在統(tǒng)計(jì)學(xué)和數(shù)據(jù)科學(xué)中,數(shù)據(jù)分布是分析數(shù)據(jù)的重要基礎(chǔ)。
NumPy 中的隨機(jī)分布
NumPy 的 random 模塊提供了多種方法來(lái)生成服從不同分布的隨機(jī)數(shù)。
生成離散分布隨機(jī)數(shù)
choice(a, p, size):從數(shù)組 a 中隨機(jī)選擇元素,并根據(jù)概率 p 進(jìn)行選擇。 a:源數(shù)組,包含所有可能值。 p:每個(gè)值的概率數(shù)組,總和必須為 1。 size:輸出數(shù)組的形狀。
示例:生成 100 個(gè)隨機(jī)數(shù),其中 3 出現(xiàn)的概率為 0.2,5 出現(xiàn)的概率為 0.4,7 出現(xiàn)的概率為 0.3,9 出現(xiàn)的概率為 0.1:
import numpy as np x = np.random.choice([3, 5, 7, 9], p=[0.2, 0.4, 0.3, 0.1], size=100) print(x)
生成連續(xù)分布隨機(jī)數(shù)
NumPy 提供了多種方法來(lái)生成服從不同連續(xù)分布的隨機(jī)數(shù),例如正態(tài)分布、均勻分布、指數(shù)分布等。
randn(size):生成服從標(biāo)準(zhǔn)正態(tài)分布的隨機(jī)數(shù)。 rand(size):生成服從均勻分布的隨機(jī)數(shù)。 beta(a, b, size):生成服從 Beta 分布的隨機(jī)數(shù)。 gamma(shape, scale, size):生成服從 Gamma 分布的隨機(jī)數(shù)。 poisson(lam, size):生成服從泊松分布的隨機(jī)整數(shù)。
示例:生成 10 個(gè)服從標(biāo)準(zhǔn)正態(tài)分布的隨機(jī)數(shù):
import numpy as np x = np.random.randn(10) print(x)
隨機(jī)排列
洗牌數(shù)組
shuffle(arr):對(duì)數(shù)組 arr 進(jìn)行隨機(jī)洗牌,修改原始數(shù)組。
示例:隨機(jī)洗牌數(shù)組 [1, 2, 3, 4, 5]:
import numpy as np from numpy.random import shuffle arr = np.array([1, 2, 3, 4, 5]) shuffle(arr) print(arr)
生成數(shù)組的隨機(jī)排列
permutation(arr):生成數(shù)組 arr 元素的隨機(jī)排列,不修改原始數(shù)組。
示例:生成數(shù)組 [1, 2, 3, 4, 5] 的隨機(jī)排列:
import numpy as np from numpy.random import permutation arr = np.array([1, 2, 3, 4, 5]) x = permutation(arr) print(x)
練習(xí)
- 使用
choice方法生成 200 個(gè)隨機(jī)數(shù),其中 1 出現(xiàn)的概率為 0.1,2 出現(xiàn)的概率為 0.2,3 出現(xiàn)的概率為 0.7。 - 生成 10 個(gè)服從指數(shù)分布的隨機(jī)數(shù)。
- 對(duì)數(shù)組
[10, 20, 30, 40, 50]進(jìn)行隨機(jī)洗牌。 - 生成數(shù)組
[6, 7, 8, 9, 10]元素的隨機(jī)排列。
解決方案
import numpy as np from numpy.random import choice, permutation, expon # 1. 使用 choice 方法生成隨機(jī)數(shù) random_numbers = choice([1, 2, 3], p=[0.1, 0.2, 0.7], size=200) print(random_numbers) # 2. 生成服從指數(shù)分布的隨機(jī)數(shù) exponential_randoms = expon(scale=1, size=10) print(exponential_randoms) # 3. 對(duì)數(shù)組進(jìn)行隨機(jī)洗牌 arr = np.array([10, 20, 30, 40, 50]) shuffle(arr) print(arr) # 4. 生成數(shù)組的隨機(jī)排列 random_permutation = permutation([6, 7, 8, 9, 10]) print(random_permutation)
使用 Seaborn 可視化分布
簡(jiǎn)介
Seaborn 是一個(gè)基于 Matplotlib 的 Python 數(shù)據(jù)可視化庫(kù),用于創(chuàng)建統(tǒng)計(jì)圖表。它提供了一系列高級(jí)繪圖函數(shù),可以輕松創(chuàng)建美觀且信息豐富的統(tǒng)計(jì)圖形。
安裝 Seaborn
如果您已經(jīng)安裝了 Python 和 pip,可以使用以下命令安裝 Seaborn:
pip install seaborn
如果您使用的是 Jupyter Notebook,可以使用以下命令安裝 Seaborn:
!pip install seaborn
繪制分布圖
分布圖是一種可視化數(shù)據(jù)分布的圖表。它顯示了數(shù)據(jù)集中每個(gè)值的出現(xiàn)頻率。
在 Seaborn 中,可以使用 sns.distplot() 函數(shù)繪制分布圖。該函數(shù)接受以下參數(shù):
data:要繪制分布的數(shù)據(jù)??梢允菙?shù)組、列表或 Pandas 數(shù)據(jù)框。 hist:如果為 True(默認(rèn)),則繪制直方圖;如果為 False,則只繪制密度曲線。 kde:如果為 True(默認(rèn)),則使用核密度估計(jì) (KDE) 來(lái)估計(jì)數(shù)據(jù)的分布;如果為 False,則使用直方圖。 bins:用于創(chuàng)建直方圖的直方圖數(shù)量。 norm:用于規(guī)范分布的類型。例如,norm='kde' 將使用 KDE 來(lái)規(guī)范分布。
示例:繪制正態(tài)分布
以下示例演示如何使用 Seaborn 繪制正態(tài)分布:
import seaborn as sns import numpy as np # 生成隨機(jī)數(shù)據(jù) data = np.random.randn(1000) # 繪制分布圖 sns.distplot(data) plt.show()
該代碼將生成 1000 個(gè)服從標(biāo)準(zhǔn)正態(tài)分布的隨機(jī)數(shù),并使用 Seaborn 繪制它們的分布圖。
示例:繪制自定義分布
以下示例演示如何繪制自定義分布:
import seaborn as sns import numpy as np # 生成自定義數(shù)據(jù) data = [1, 2, 2, 3, 3, 3, 4, 4, 5, 5, 6, 7, 7, 8, 9] # 繪制分布圖 sns.distplot(data, hist=False, kde=False) plt.show()
該代碼將生成一個(gè)包含重復(fù)值的自定義數(shù)據(jù)數(shù)組,并使用 Seaborn 繪制它們的分布圖,不顯示直方圖或密度曲線。
練習(xí)
- 生成 500 個(gè)服從均勻分布的隨機(jī)數(shù),并繪制它們的分布圖。
- 生成 1000 個(gè)服從指數(shù)分布的隨機(jī)數(shù),并繪制它們的分布圖。
- 從以下數(shù)據(jù)中繪制分布圖:
data = [23, 37, 43, 29, 31, 32, 36, 27, 31, 33, 34, 25, 27, 28, 42, 38, 27, 27, 33, 31, 26, 29, 31, 35, 33, 30, 30, 32, 36, 28, 31, 33, 38, 29, 31, 31, 34, 36, 26, 25, 26, 34, 37, 28, 36, 31, 29, 31, 27, 28, 32, 37, 30, 33, 33, 27, 31, 32, 32, 36, 25, 32, 35, 37, 37, 30, 31, 34, 33, 29, 32, 31, 36, 26, 29, 31, 37, 28, 28, 37, 31, 32, 36, 33, 27, 31, 32, 33, 32, 32, 30, 27, 36, 38, 35, 26, 32, 37, 31, 30, 33, 30, 27,
到此這篇關(guān)于NumPy隨機(jī)數(shù)據(jù)分布與Seaborn可視化詳解的文章就介紹到這了,更多相關(guān)NumPy數(shù)據(jù)分布與Seaborn內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- NumPy數(shù)組排序、過(guò)濾與隨機(jī)數(shù)生成詳解
- Numpy創(chuàng)建數(shù)組和隨機(jī)數(shù)組的方法小結(jié)
- numpy中幾種隨機(jī)數(shù)生成函數(shù)的用法
- Python NumPy中的隨機(jī)數(shù)及ufuncs函數(shù)使用示例詳解
- numpy 產(chǎn)生隨機(jī)數(shù)的幾種方法
- numpy中生成隨機(jī)數(shù)的幾種常用函數(shù)(小結(jié))
- python numpy之np.random的隨機(jī)數(shù)函數(shù)使用介紹
- python numpy 常用隨機(jī)數(shù)的產(chǎn)生方法的實(shí)現(xiàn)
- Python使用numpy產(chǎn)生正態(tài)分布隨機(jī)數(shù)的向量或矩陣操作示例
- NumPy隨機(jī)數(shù)生成函數(shù)的多種實(shí)現(xiàn)方法
相關(guān)文章
使用Python創(chuàng)建一個(gè)功能完整的Windows風(fēng)格計(jì)算器程序
這篇文章主要介紹了如何使用Python和Tkinter創(chuàng)建一個(gè)功能完整的Windows風(fēng)格計(jì)算器程序,包括基本運(yùn)算、高級(jí)科學(xué)計(jì)算(如三角函數(shù)、對(duì)數(shù)、冪運(yùn)算等)、歷史記錄和圖形繪制功能,需要的朋友可以參考下2025-05-05
Python將Word文檔轉(zhuǎn)為PDF的兩種方法
這篇文章主要介紹了兩種將docx和doc文件轉(zhuǎn)換為PDF的方法,方法一使用了docx2pdf模塊,方法二使用了win32com模塊,文中通過(guò)代碼及圖文介紹的非常詳細(xì),需要的朋友可以參考下2024-12-12
基于Python+Pyqt5開(kāi)發(fā)一個(gè)應(yīng)用程序
今天給大家?guī)?lái)的是關(guān)于Python的相關(guān)知識(shí),文章圍繞著Python+Pyqt5開(kāi)發(fā)一個(gè)應(yīng)用程序展開(kāi),文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下2021-06-06
一個(gè)基于flask的web應(yīng)用誕生 記錄用戶賬戶登錄狀態(tài)(6)
一個(gè)基于flask的web應(yīng)用誕生第六篇,這篇文章主要介紹了記錄用戶賬戶登錄狀態(tài)功能開(kāi)發(fā),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04
pyspark.sql.DataFrame與pandas.DataFrame之間的相互轉(zhuǎn)換實(shí)例
今天小編就為大家分享一篇pyspark.sql.DataFrame與pandas.DataFrame之間的相互轉(zhuǎn)換實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-08-08
selenium攜帶cookies模擬登陸CSDN的實(shí)現(xiàn)
這篇文章主要介紹了selenium攜帶cookies模擬登陸CSDN的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01

