新聞中心
R 還是 Python ? Python 腳本模仿易使用的 R 風(fēng)格函數(shù),使得數(shù)據(jù)統(tǒng)計(jì)變得簡(jiǎn)單易行。
為廣安等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及廣安網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為網(wǎng)站制作、網(wǎng)站建設(shè)、廣安網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!
“Python vs. R” 是數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)的現(xiàn)代戰(zhàn)爭(zhēng)之一。毫無(wú)疑問,近年來這兩者發(fā)展迅猛,成為數(shù)據(jù)科學(xué)、預(yù)測(cè)分析和機(jī)器學(xué)習(xí)領(lǐng)域的***編程語(yǔ)言。事實(shí)上,根據(jù) IEEE 最近的一篇文章,Python 已在 ***編程語(yǔ)言排行榜 中超越 C++ 成為***的語(yǔ)言,并且 R 語(yǔ)言也穩(wěn)居前 10 位。
但是,這兩者之間存在一些根本區(qū)別。R 語(yǔ)言設(shè)計(jì)的初衷主要是作為統(tǒng)計(jì)分析和數(shù)據(jù)分析問題的快速原型設(shè)計(jì)的工具,另一方面,Python 是作為一種通用的、現(xiàn)代的面向?qū)ο笳Z(yǔ)言而開發(fā)的,類似 C++ 或 Java,但具有更簡(jiǎn)單的學(xué)習(xí)曲線和更靈活的語(yǔ)言風(fēng)格。因此,R 仍在統(tǒng)計(jì)學(xué)家、定量生物學(xué)家、物理學(xué)家和經(jīng)濟(jì)學(xué)家中備受青睞,而 Python 已逐漸成為日常腳本、自動(dòng)化、后端 Web 開發(fā)、分析和通用機(jī)器學(xué)習(xí)框架的***語(yǔ)言,擁有廣泛的支持基礎(chǔ)和開源開發(fā)社區(qū)。
在 Python 環(huán)境中模仿函數(shù)式編程
R 作為函數(shù)式編程語(yǔ)言的本質(zhì)為用戶提供了一個(gè)極其簡(jiǎn)潔的用于快速計(jì)算概率的接口,還為數(shù)據(jù)分析問題提供了必不可少的描述統(tǒng)計(jì)和推論統(tǒng)計(jì)方法(LCTT 譯注:統(tǒng)計(jì)學(xué)從功能上分為描述統(tǒng)計(jì)學(xué)和推論統(tǒng)計(jì)學(xué))。例如,只用一個(gè)簡(jiǎn)潔的函數(shù)調(diào)用來解決以下問題難道不是很好嗎?
- 如何計(jì)算數(shù)據(jù)向量的平均數(shù) / 中位數(shù) / 眾數(shù)。
- 如何計(jì)算某些服從正態(tài)分布的事件的累積概率。如果服從泊松分布Poisson distribution又該怎樣計(jì)算呢?
- 如何計(jì)算一系列數(shù)據(jù)點(diǎn)的四分位距。
- 如何生成服從學(xué)生 t 分布的一些隨機(jī)數(shù)(LCTT 譯注: 在概率論和統(tǒng)計(jì)學(xué)中,學(xué)生 t-分布(Student’s t-distribution)可簡(jiǎn)稱為 t 分布,用于根據(jù)小樣本來估計(jì)呈正態(tài)分布且方差未知的總體的均值)。
R 編程環(huán)境可以完成所有這些工作。
另一方面,Python 的腳本編寫能力使分析師能夠在各種分析流程中使用這些統(tǒng)計(jì)數(shù)據(jù),具有***的復(fù)雜性和創(chuàng)造力。
要結(jié)合二者的優(yōu)勢(shì),你只需要一個(gè)簡(jiǎn)單的 Python 封裝的庫(kù),其中包含與 R 風(fēng)格定義的概率分布和描述性統(tǒng)計(jì)相關(guān)的最常用函數(shù)。 這使你可以非??焖俚卣{(diào)用這些函數(shù),而無(wú)需轉(zhuǎn)到正確的 Python 統(tǒng)計(jì)庫(kù)并理解整個(gè)方法和參數(shù)列表。
便于調(diào)用 R 函數(shù)的 Python 包裝腳本
我編寫了一個(gè) Python 腳本 ,用 Python 簡(jiǎn)單統(tǒng)計(jì)分析定義了最簡(jiǎn)潔和最常用的 R 函數(shù)。導(dǎo)入此腳本后,你將能夠原生地使用這些 R 函數(shù),就像在 R 編程環(huán)境中一樣。
此腳本的目標(biāo)是提供簡(jiǎn)單的 Python 函數(shù),模仿 R 風(fēng)格的統(tǒng)計(jì)函數(shù),以快速計(jì)算密度估計(jì)和點(diǎn)估計(jì)、累積分布和分位數(shù),并生成重要概率分布的隨機(jī)變量。
為了延續(xù) R 風(fēng)格,腳本不使用類結(jié)構(gòu),并且只在文件中定義原始函數(shù)。因此,用戶可以導(dǎo)入這個(gè) Python 腳本,并在需要單個(gè)名稱調(diào)用時(shí)使用所有功能。
請(qǐng)注意,我使用 mimic 這個(gè)詞。 在任何情況下,我都聲稱要模仿 R 的真正的函數(shù)式編程范式,該范式包括深層環(huán)境設(shè)置以及這些環(huán)境和對(duì)象之間的復(fù)雜關(guān)系。 這個(gè)腳本允許我(我希望無(wú)數(shù)其他的 Python 用戶)快速啟動(dòng) Python 程序或 Jupyter 筆記本程序、導(dǎo)入腳本,并立即開始進(jìn)行簡(jiǎn)單的描述性統(tǒng)計(jì)。這就是目標(biāo),僅此而已。
如果你已經(jīng)寫過 R 代碼(可能在研究生院)并且剛剛開始學(xué)習(xí)并使用 Python 進(jìn)行數(shù)據(jù)分析,那么你將很高興看到并在 Jupyter 筆記本中以類似在 R 環(huán)境中一樣使用一些相同的知名函數(shù)。
無(wú)論出于何種原因,使用這個(gè)腳本很有趣。
簡(jiǎn)單的例子
首先,只需導(dǎo)入腳本并開始處理數(shù)字列表,就好像它們是 R 中的數(shù)據(jù)向量一樣。
from R_functions import *lst=[20,12,16,32,27,65,44,45,22,18]
假設(shè)你想從數(shù)據(jù)向量計(jì)算 Tuckey 五數(shù)摘要。 你只需要調(diào)用一個(gè)簡(jiǎn)單的函數(shù) fivenum,然后將向量傳進(jìn)去。 它將返回五數(shù)摘要,存在 NumPy 數(shù)組中。
lst=[20,12,16,32,27,65,44,45,22,18]fivenum(lst)> array([12. , 18.5, 24.5, 41. , 65. ])
或許你想要知道下面問題的答案:
假設(shè)一臺(tái)機(jī)器平均每小時(shí)輸出 10 件成品,標(biāo)準(zhǔn)偏差為 2。輸出模式遵循接近正態(tài)的分布。 機(jī)器在下一個(gè)小時(shí)內(nèi)輸出至少 7 個(gè)但不超過 12 個(gè)單位的概率是多少?
答案基本上是這樣的:
使用 pnorm ,你可以只用一行代碼就能獲得答案:
pnorm(12,10,2)-pnorm(7,10,2)> 0.7745375447996848
或者你可能需要回答以下問題:
假設(shè)你有一個(gè)不公平硬幣,每次投它時(shí)有 60% 可能正面朝上。 你正在玩 10 次投擲游戲。 你如何繪制并給出這枚硬幣所有可能的勝利數(shù)(從 0 到 10)的概率?
只需使用一個(gè)函數(shù) dbinom 就可以獲得一個(gè)只有幾行代碼的美觀條形圖:
probs=[]import matplotlib.pyplot as pltfor i in range(11):probs.append(dbinom(i,10,0.6))plt.bar(range(11),height=probs)plt.grid(True)plt.show()
簡(jiǎn)單的概率計(jì)算接口
R 提供了一個(gè)非常簡(jiǎn)單直觀的接口,可以從基本概率分布中快速計(jì)算。 接口如下:
- d 分布:給出點(diǎn) x 處的密度函數(shù)值
- p 分布:給出 x 點(diǎn)的累積值
- q 分布:以概率 p 給出分位數(shù)函數(shù)值
- r 分布:生成一個(gè)或多個(gè)隨機(jī)變量
在我們的實(shí)現(xiàn)中,我們堅(jiān)持使用此接口及其關(guān)聯(lián)的參數(shù)列表,以便你可以像在 R 環(huán)境中一樣執(zhí)行這些函數(shù)。
目前已實(shí)現(xiàn)的函數(shù)
腳本中實(shí)現(xiàn)了以下 R 風(fēng)格函數(shù),以便快速調(diào)用。
- 平均數(shù)、中位數(shù)、方差、標(biāo)準(zhǔn)差
- Tuckey 五數(shù)摘要、四分位距interquartile range(IQR)
- 矩陣的協(xié)方差或兩個(gè)向量之間的協(xié)方差
- 以下分布的密度、累積概率、分位數(shù)函數(shù)和隨機(jī)變量生成:正態(tài)、均勻、二項(xiàng)式、泊松Poisson、F、學(xué)生 tStudent’s t、卡方Chi-square、貝塔beta和伽瑪gamma
進(jìn)行中的工作
顯然,這是一項(xiàng)正在進(jìn)行的工作,我計(jì)劃在此腳本中添加一些其他方便的R函數(shù)。 例如,在 R 中,單行命令 lm 可以為數(shù)字?jǐn)?shù)據(jù)集提供一個(gè)簡(jiǎn)單的最小二乘擬合模型,其中包含所有必要的推理統(tǒng)計(jì)(P 值,標(biāo)準(zhǔn)誤差等)。 這非常簡(jiǎn)潔! 另一方面,Python 中的標(biāo)準(zhǔn)線性回歸問題經(jīng)常使用 Scikit-learn 庫(kù)來處理,此用途需要更多的腳本,所以我打算使用 Python 的 statsmodels 庫(kù)合并這個(gè)單函數(shù)線性模型來擬合功能。
當(dāng)前標(biāo)題:如何用Python編寫你喜愛的R函數(shù)
當(dāng)前URL:http://www.5511xx.com/article/cojcsod.html


咨詢
建站咨詢

