Numpy學習打卡task03

2020-12-05 學習其實很有趣

今天帶來的是Datawhal自主學習Numpy下學習打卡筆記第三部分—統計相關。

本文大致介紹了數理統計的相關背景知識,以及神奇的本福特定律。

本文素材來自網絡及Datawhale。

統計學

統計學是一門與數據的收集、組織、分析、解釋和呈現有關的學科。在將統計學應用於一個科學、工業或社會問題時,傳統的做法是先從要研究的統計群體或統計模型開始。人口可以是不同的人群或物體,如 "居住在一個國家的所有人 "或 "組成晶體的每個原子"。統計學涉及數據的方方面面,包括調查和實驗設計方面的數據收集規劃參見概率和統計學詞彙表。

當無法收集普查數據時,統計學家通過制定具體的實驗設計和調查樣本來收集數據。代表性抽樣保證了推論和結論可以合理地從樣本擴展到整個人口。實驗研究包括對所研究的系統進行測量,對系統進行操作,然後用同樣的程序進行額外的測量,以確定操作是否改變了測量值。相反,觀察性研究不涉及實驗操作。

在數據分析中主要使用兩種統計方法:描述性統計,使用平均值或標準差等指標對樣本數據進行總結;推斷性統計,從存在隨機變化的數據中得出結論(如:觀測誤差、抽樣變異)。描述性統計最常關注的是分布(樣本或人群)的兩組特性:中心傾向(或位置)旨在表徵分布的中心值或典型值,而分散性(或變異性)則表徵分布中各成員偏離其中心和彼此的程度。數理統計的推論是在概率論的框架下進行的,概率論涉及隨機現象的分析。

標準統計程序涉及收集數據,以測試兩個統計數據集之間的關係,或者測試從理想化模型中提取的數據集和綜合數據。為兩個數據集之間的統計關係提出了一個假設,並將其作為兩個數據集之間不存在關係的理想化零假設的替代選擇。拒絕或反駁零假設是使用統計測試完成的,該測試量化了在給定測試中使用的數據的情況下可以證明零假設為假的意義。從零假設出發,可以識別兩種基本形式的錯誤:類型I錯誤(錯誤假設否定了零假設,給出了「假陽性」)和類型II錯誤(錯誤假設未被拒絕且未考慮總體之間的實際關係)一個「假陰性」)。與該框架相關的問題很多:從獲得足夠的樣本量到指定充分的零假設。

生成統計數據的測量過程也會出錯。這些錯誤中有許多被分類為隨機(噪聲)或系統性(偏差),但也可能發生其他類型的錯誤(例如,失誤,例如分析人員報告不正確的單位時)。丟失數據或檢查的存在可能導致估計偏差,並且已經開發出解決這些問題的特定技術。

關於概率和統計的最早著作,是從概率論中借鑑的統計方法,可以追溯到阿拉伯數學家和密碼學家,尤其是Al-Khalil(717-786)和Al-Kindi(801-873)。在18世紀,統計數據也開始大量地來自微積分。近年來,統計數據越來越依賴統計軟體來進行這些測試,例如描述性分析。

數理統計是數學在統計學中的應用。用於此的數學技術包括數學分析、線性代數、隨機分析、微分方程和計量理論概率論 。

最早的概率和統計學著作可以追溯到8世紀至13世紀的伊斯蘭黃金時代的阿拉伯數學家和密碼學家。Al-Khalil (717-786)撰寫的《密碼電文書》,書中首次使用了換元和組合,列出了所有可能的帶元音和不帶元音的阿拉伯語單詞,最早的統計學著作是9世紀阿拉伯學者Al-Kindi (801-873)寫的論文《解密密碼電文手稿》。在書中,Al-Kindi詳細介紹了如何利用統計學和頻率分析來破譯加密信息。這篇文章奠定了統計學和密碼分析的基礎。Al-Kindi也是已知最早使用統計推理的人,同時他和後來的阿拉伯密碼學家發展了早期的統計方法來解密加密信息。Ibn Adlan(1187-1268)後來做出了重要的貢獻,就是在頻率分析中使用樣本量。

歐洲最早的統計學著作可以追溯到1663年,John Graunt發表了《關於死亡率法案的自然和政治觀察》。統計學思想的早期應用圍繞著國家根據人口和經濟數據制定政策的需要,因此其統計學的起源也就隨之而來。19世紀初,統計學科的範圍擴大到包括一般數據的收集和分析。今天,統計學被廣泛地應用於政府、商業、自然科學和社會科學。

現代統計學的數學基礎是在17世紀隨著Gerolamo Cardano、Blaise Pascal和Pierre de Fermat對概率論的發展而奠定的。數學概率論產生於對偶然性遊戲的研究,中世紀的Juan Caramuel等哲學家對概率的概念進行了研究,1805年Adrien-Marie Legendre首先描述了最小二乘法。

現代統計學領域出現在19世紀末20世紀初,分為三個階段。第一波浪潮在世紀之交,由Francis Galton和Karl Pearson的工作引領,他們將統計學轉變為一門嚴謹的數學學科,不僅用於科學領域,也用於工業和政治領域的分析。Galton的貢獻包括引入標準差、相關、回歸分析的概念,並將這些方法應用於研究人類的各種特徵--身高、體重、睫毛長度等。Pearson發展了皮爾遜乘積矩相關係數,定義為乘積矩,對樣本進行分布擬合的矩法和皮爾遜分布等,Galton和Pearson創辦了《生物統計學》(Biometrika),作為第一本數理統計學和生物統計學(當時稱為生物測量學)雜誌,後者在倫敦大學學院創辦了世界上第一個大學統計系。

Ronald Fisher在貴婦品茶實驗中創造了 "零假設 "一詞,"在實驗過程中,零假設永遠不會被證明或成立,但有可能被否定"。

20世紀10、20年代的第二波浪潮由William Sealy Gosset發起,並在Ronald Fisher的見解中達到頂峰,他撰寫的教科書為世界各大學的學術學科下了定義。Fisher最重要的著作是1918年的開創性論文《孟德爾遺傳假設下親屬間的相關性》(第一次使用統計學術語--方差),1925年的經典著作《研究工作者的統計方法》和1935年的《實驗設計》,他發展了嚴格的實驗設計模型並首創了充分性、輔助統計、費雪線性判別器和費雪信息等概念。 在1930年出版的《自然選擇的遺傳理論》一書中,他將統計學應用於各種生物學概念,如費雪原理(A. W. F. Edwards稱其為 "可能是進化生物學中最著名的論點")和費雪失控,是性選擇中關於進化中發現的一種正反饋失控影響的概念。

最後一次浪潮主要是對早期發展的完善和擴展,出現在20世紀30年代Egon Pearson和Jerzy Neyman的合作工作中。他們引入了 "二型"誤差、檢驗效能和置信區間的概念。Jerzy Neyman在1934年表明,分層隨機抽樣一般來說是比目的性(配額)抽樣更好的估計方法。

今天,統計方法被應用於所有涉及決策的領域,用於從經過整理的數據中作出準確的推斷,以及在面對不確定性的情況下根據統計方法作出決定。現代計算機的使用加快了大規模統計計算的速度,也使人力難以實現的新方法成為可能。如今統計學仍然是一個積極研究的領域,例如,如何分析大數據的問題。

數據收集

數據取樣

在無法收集完整的普查數據時,統計人員通過制定具體的實驗設計和調查樣本來收集樣本數據。統計學本身也提供了通過統計模型進行預測和預報的工具。根據抽樣數據進行推斷的想法大約始於16世紀中葉,與估計人口和開發人壽保險的前身有關 。

為了將一個樣本作為整個人口的參照物,重要的是它要真正代表整個人口。有代表性的抽樣可以保證推論和結論可以安全地從樣本延伸到整個人口。一個主要的問題在於確定所選樣本的實際代表性。統計學提供了估計和糾正樣本和數據收集程序中任何偏差的方法。還有一些實驗設計的方法,可以在研究的一開始就減少這些問題,加強其辨別人口真相的能力。

抽樣理論是概率論這門數學學科的一部分。在數理統計學中,概率論用於研究抽樣統計的抽樣分布,更一般地用於研究統計程序的特性。當所考慮的系統或人群滿足方法的假設時,任何統計方法的使用都是有效的。經典概率論與抽樣理論在觀點上的區別,大致是概率論從總人口的給定參數出發,推導出與樣本有關的概率。而統計推理則是反其道而行之--從樣本出發,歸納推斷出大群體或總群體的參數。

實驗性和觀察性研究

統計研究項目的一個共同目標是研究因果關係,特別是得出預測因素或獨立變量值的變化對因變量的影響的結論。因果統計研究主要有兩類:實驗研究和觀察研究。在這兩類研究中,都是觀察一個獨立變量(或變量)的差異對因變量行為的影響。兩種類型的區別在於如何實際進行研究。每一種研究都可以非常有效。實驗研究包括對被研究的系統進行測量,對系統進行操作,然後用同樣的程序進行額外的測量,以確定操作是否改變了測量值。相反,觀察性研究不涉及實驗性操作。取而代之的是,收集數據並研究預測因素和反應之間的相關性。雖然數據分析工具在隨機研究的數據上效果最好,但它們也適用於其他類型的數據,如自然實驗和觀察性研究--對於這些數據,統計學家會使用經過修改的、更有條理的估計方法(例如,差異估計和工具變量等),以產生一致的估計器。

實驗

統計實驗的基本步驟:

制定研究計劃,包括確定研究的重複次數,使用以下信息:關於處理效果大小的初步估計,替代假設,以及估計的實驗變異性。考慮實驗對象的選擇和研究倫理是必要的。統計學家建議實驗將(至少)一種新的處理與標準處理或對照組進行比較,以便對處理效果的差異進行無偏估計。設計實驗,使用區塊以減少混雜變量的影響,並將處理隨機分配給受試對象,以便對處理效果和實驗誤差進行無偏估計。在這一階段,實驗人員和統計人員編寫實驗方案,指導實驗的執行,方案規定了實驗數據的主要分析。按照實驗方案進行實驗,並按照實驗方案對數據進行分析。進一步對數據集進行二次分析研究,為今後的研究提出新的假設。記錄並展示研究結果。關於人類行為的實驗有特殊的關注點。著名的霍桑研究考察了西電公司霍桑工廠工作環境的變化。研究人員有興趣確定增加照度是否會提高流水線工人的生產率。研究人員首先測量了工廠的生產率,然後修改了工廠一個區域的照度,並檢查照度的變化是否會影響生產率。結果發現,生產率確實有所提高(在實驗條件下)。但是,這項研究由於實驗程序上的錯誤,特別是缺乏對照組和盲目性,今天受到了嚴厲的批評。霍桑效應指的是發現一個結果(在這種情況下,工人的生產率)由於觀察本身而發生了變化。在霍桑研究中,那些人變得更有生產力,不是因為照明被改變,而是因為他們被觀察到了(想到了當年被注視著完成家庭作業的恐懼)。

觀察性研究

觀察性研究的一個例子是探討吸菸與肺癌之間的關係。這種類型的研究通常使用調查收集對感興趣範疇的觀察結果,然後進行統計分析。在這種情況下,研究者會收集吸菸者和非吸菸者的觀察結果,也許是通過(cohort study)組群研究,然後尋找每組中肺癌的病例數。 病例對照研究是另一種類型的觀察性研究,在這種研究中,邀請有或沒有相關結果(如肺癌)的人參加,並收集他們的接觸史。

數據種類

科學家們曾做過各種嘗試,以產生測量水平的分類學。心理物理學家Stanley Smith Stevens定義了名義量表、序數、區間和比率量表。名義測量在數值之間沒有有意義的等級順序,並且允許任何一對一(注入式)的轉換。有序測量在連續的值之間有不精確的差異,但對這些值有一個有意義的順序,並允許任何順序保存的轉換。區間測量有定義的測量值之間的有意義的距離,但零值是任意的(如在經度和溫度測量的情況下,在攝氏度或華氏度),並允許任何線性轉換。比率測量既有一個有意義的零值,又定義了不同測量值之間的距離,並且允許任何重新縮放變換。

由於只符合名義測量或序數測量的變量不能合理地進行數值測量,所以有時將它們歸為分類變量,而比值測量和區間測量則歸為定量變量,由於它們的數值性質,可以是離散的,也可以是連續的。這樣的區分往往可以與計算機科學中的數據類型鬆散相關,二元分類變量可以用布爾數據類型表示,多元分類變量用積分數據類型中任意賦值的整數表示,連續變量用涉及浮點計算的實數數據類型表示。但計算機科學數據類型與統計數據類型的映射取決於對後者實施哪種分類。

還有人提出了其他的分類方法。例如,Mosteller和Tukey(1977)區分了等級、行列、計數分數、計數、份量和結餘。Nelder(1990)描述了數據的連續計數、連續比率、計數比率和分類模式。(另見 Chrisman(1998),van den Berg(1991)。

關於是否應該對從不同種類的測量程序中獲得的數據採用不同種類的統計方法的問題,由於涉及變量的轉換和對研究問題的準確解釋等問題而變得複雜。"數據與其所描述的內容之間的關係,只是反映了某些種類的統計報表可能具有真值,而這些真值在某些變換下並不是不變的。考慮一種轉換是否合理,取決於人們試圖解決的問題"。

統計方法

描述性統計

描述性統計(在計數名詞意義上)是一種總結性統計,它能定量地描述或總結信息集合的特徵,而廣泛意義上的描述性統計則是使用和分析這些統計數據的過程。描述性統計與推斷性統計(或歸納性統計)的區別在於,描述性統計的目的是對樣本進行總結,而不是利用數據來了解數據樣本被認為代表的人群。

推斷性統計

統計推斷是利用數據分析推斷基本概率分布屬性的過程。推斷性統計分析推斷一個群體的屬性,例如通過檢驗假設和推導估計。它假設觀察到的數據集是從一個更大的群體中抽樣出來的。推斷性統計可以與描述性統計進行對比。描述性統計只關注觀察到的數據的屬性,它並不以數據來自較大群體的假設為基礎。【1】

Benford's law

本福德定律,又稱紐科姆-本福德定律、異常數字定律或首位數定律,是關於許多現實生活中數字數據集合中前導數字的頻率分布的觀察。該定律指出,在許多自然出現的數字集合中,前導數字很可能在服從該定律的集合中,數字1作為前導重要數字出現的次數約為30%,而9作為前導重要數字出現的次數不到5%。如果這些數字是均勻分布的,那麼它們各自出現的次數約佔11.1%。本福德定律還對第二位數字、第三位數字、數字組合等的分布進行了預測。

這是關於任意(整數)基數表示的數的廣義定律的無限多案例之一,它排除了這種現象可能是10號基數系統的人為因素。Hill 在1995年發表了進一步的廣義結果,包括對第n個前導數位以及前導數位的聯合分布的類比聲明,後者導致了一個推論,其中重要數位被證明是一個統計學上依賴的量。

事實證明,這個結果適用於各種各樣的數據集,包括電費單、街道地址、股票價格、房價、人口數量、死亡率、河流長度以及物理和數學常數。就像其他關於自然數據的一般原理一樣--例如許多數據集都能很好地近似於正態分布這一事實--有一些說明性的例子和解釋涵蓋了許多適用於本福德定律的情況,儘管還有許多適用於本福德定律的其他情況難以得到簡單的解釋當數值分布在多個數量級上時,它往往是最準確的,特別是當產生數字的過程是由冪律描述的時候(這在自然界中很常見)。

該定律以物理學家Frank Benford的名字命名,他於1938年在一篇名為 "異常數定律 "的論文中指出了這一定律,儘管西蒙-紐科姆(Simon Newcomb)在1881年就曾提出過這一定律。【2】

公式

Datawhale講義

講義連結:

http://datawhale.club/t/topic/185

統計相關

次序統計

計算最小值

numpy.amin(a[, axis=None, out=None, keepdims=np._NoValue, initial=np._NoValue, where=np._NoValue])Return the minimum of an array or minimum along an axis.【例】計算最小值

import numpy as npx = np.array([[11, 12, 13, 14, 15], [16, 17, 18, 19, 20], [21, 22, 23, 24, 25], [26, 27, 28, 29, 30], [31, 32, 33, 34, 35]])y = np.amin(x)print(y) # 11y = np.amin(x, axis=0)print(y) # [11 12 13 14 15]y = np.amin(x, axis=1)print(y) # [11 16 21 26 31]

計算最大值

numpy.amax(a[, axis=None, out=None, keepdims=np._NoValue, initial=np._NoValue, where=np._NoValue])Return the maximum of an array or maximum along an axis.【例】計算最大值

import numpy as npx = np.array([[11, 12, 13, 14, 15], [16, 17, 18, 19, 20], [21, 22, 23, 24, 25], [26, 27, 28, 29, 30], [31, 32, 33, 34, 35]])y = np.amax(x)print(y) # 35y = np.amax(x, axis=0)print(y) # [31 32 33 34 35]y = np.amax(x, axis=1)print(y) # [15 20 25 30 35]

計算極差

numpy.ptp(a, axis=None, out=None, keepdims=np._NoValue) Range of values (maximum - minimum) along an axis. The name of the function comes from the acronym for 『peak to peak』.【例】計算極差

import numpy as npnp.random.seed(20200623)x = np.random.randint(0, 20, size=[4, 5])print(x)# [[10 2 1 1 16]# [18 11 10 14 10]# [11 1 9 18 8]# [16 2 0 15 16]]print(np.ptp(x)) # 18print(np.ptp(x, axis=0)) # [ 8 10 10 17 8]print(np.ptp(x, axis=1)) # [15 8 17 16]

計算分位數

numpy.percentile(a, q, axis=None, out=None, overwrite_input=False, interpolation='linear', keepdims=False) Compute the q-th percentile of the data along the specified axis. Returns the q-th percentile(s) of the array elements.a:array,用來算分位數的對象,可以是多維的數組。q:介於0-100的float,用來計算是幾分位的參數,如四分之一位就是25,如要算兩個位置的數就[25,75]。axis:坐標軸的方向,一維的就不用考慮了,多維的就用這個調整計算的維度方向,取值範圍0/1。【例】計算分位數

import numpy as npnp.random.seed(20200623)x = np.random.randint(0, 20, size=[4, 5])print(x)# [[10 2 1 1 16]# [18 11 10 14 10]# [11 1 9 18 8]# [16 2 0 15 16]]print(np.percentile(x, [25, 50])) # [ 2. 10.]print(np.percentile(x, [25, 50], axis=0))# [[10.75 1.75 0.75 10.75 9.5 ]# [13.5 2. 5. 14.5 13. ]]print(np.percentile(x, [25, 50], axis=1))# [[ 1. 10. 8. 2.]# [ 2. 11. 9. 15.]]

均值與方差

計算中位數

numpy.median(a, axis=None, out=None, overwrite_input=False, keepdims=False) Compute the median along the specified axis. Returns the median of the array elements.【例】計算中位數

import numpy as npnp.random.seed(20200623)x = np.random.randint(0, 20, size=[4, 5])print(x)# [[10 2 1 1 16]# [18 11 10 14 10]# [11 1 9 18 8]# [16 2 0 15 16]]print(np.percentile(x, 50))print(np.median(x))# 10.0print(np.percentile(x, 50, axis=0))print(np.median(x, axis=0))# [13.5 2. 5. 14.5 13. ]print(np.percentile(x, 50, axis=1))print(np.median(x, axis=1))# [ 2. 11. 9. 15.]

計算平均值

numpy.mean(a[, axis=None, dtype=None, out=None, keepdims=np._NoValue)])Compute the arithmetic mean along the specified axis.【例】計算平均值(沿軸的元素的總和除以元素的數量)。

import numpy as npx = np.array([[11, 12, 13, 14, 15], [16, 17, 18, 19, 20], [21, 22, 23, 24, 25], [26, 27, 28, 29, 30], [31, 32, 33, 34, 35]])y = np.mean(x)print(y) # 23.0y = np.mean(x, axis=0)print(y) # [21. 22. 23. 24. 25.]y = np.mean(x, axis=1)print(y) # [13. 18. 23. 28. 33.]

計算加權平均值

numpy.average(a[, axis=None, weights=None, returned=False])Compute the weighted average along the specified axis.mean和average都是計算均值的函數,在不指定權重的時候average和mean是一樣的。指定權重後,average可以計算加權平均值。

【例】計算加權平均值(將各數值乘以相應的權數,然後加總求和得到總體值,再除以總的單位數。)

import numpy as npx = np.array([[11, 12, 13, 14, 15], [16, 17, 18, 19, 20], [21, 22, 23, 24, 25], [26, 27, 28, 29, 30], [31, 32, 33, 34, 35]])y = np.average(x)print(y) # 23.0y = np.average(x, axis=0)print(y) # [21. 22. 23. 24. 25.]y = np.average(x, axis=1)print(y) # [13. 18. 23. 28. 33.]y = np.arange(1, 26).reshape([5, 5])print(y)# [[ 1 2 3 4 5]# [ 6 7 8 9 10]# [11 12 13 14 15]# [16 17 18 19 20]# [21 22 23 24 25]]z = np.average(x, weights=y)print(z) # 27.0z = np.average(x, axis=0, weights=y)print(z)# [25.54545455 26.16666667 26.84615385 27.57142857 28.33333333]z = np.average(x, axis=1, weights=y)print(z)# [13.66666667 18.25 23.15384615 28.11111111 33.08695652]

計算方差

numpy.var(a[, axis=None, dtype=None, out=None, ddof=0, keepdims=np._NoValue])Compute the variance along the specified axis.ddof=0:是「Delta Degrees of Freedom」,表示自由度的個數。要注意方差和樣本方差的無偏估計,方差公式中分母上是n;樣本方差無偏估計公式中分母上是n-1(n為樣本個數)。

證明的連結 3

【例】計算方差

import numpy as npx = np.array([[11, 12, 13, 14, 15], [16, 17, 18, 19, 20], [21, 22, 23, 24, 25], [26, 27, 28, 29, 30], [31, 32, 33, 34, 35]])y = np.var(x)print(y) # 52.0y = np.mean((x - np.mean(x)) ** 2)print(y) # 52.0y = np.var(x, ddof=1)print(y) # 54.166666666666664y = np.sum((x - np.mean(x)) ** 2) / (x.size - 1)print(y) # 54.166666666666664y = np.var(x, axis=0)print(y) # [50. 50. 50. 50. 50.]y = np.var(x, axis=1)print(y) # [2. 2. 2. 2. 2.]

計算標準差

numpy.std(a[, axis=None, dtype=None, out=None, ddof=0, keepdims=np._NoValue])Compute the standard deviation along the specified axis.標準差是一組數據平均值分散程度的一種度量,是方差的算術平方根。

【例】計算標準差

import numpy as npx = np.array([[11, 12, 13, 14, 15], [16, 17, 18, 19, 20], [21, 22, 23, 24, 25], [26, 27, 28, 29, 30], [31, 32, 33, 34, 35]])y = np.std(x)print(y) # 7.211102550927978y = np.sqrt(np.var(x))print(y) # 7.211102550927978y = np.std(x, axis=0)print(y)# [7.07106781 7.07106781 7.07106781 7.07106781 7.07106781]y = np.std(x, axis=1)print(y)# [1.41421356 1.41421356 1.41421356 1.41421356 1.41421356]

相關

計算協方差矩陣

numpy.cov(m, y=None, rowvar=True, bias=False, ddof=None, fweights=None,aweights=None) Estimate a covariance matrix, given data and weights.【例】計算協方差矩陣

import numpy as npx = [1, 2, 3, 4, 6]y = [0, 2, 5, 6, 7]print(np.cov(x)) # 3.7 #樣本方差print(np.cov(y)) # 8.5 #樣本方差print(np.cov(x, y))# [[3.7 5.25]# [5.25 8.5 ]]print(np.var(x)) # 2.96 #方差print(np.var(x, ddof=1)) # 3.7 #樣本方差print(np.var(y)) # 6.8 #方差print(np.var(y, ddof=1)) # 8.5 #樣本方差z = np.mean((x - np.mean(x)) * (y - np.mean(y))) #協方差print(z) # 4.2z = np.sum((x - np.mean(x)) * (y - np.mean(y))) / (len(x) - 1) #樣本協方差print(z) # 5.25z = np.dot(x - np.mean(x), y - np.mean(y)) / (len(x) - 1) #樣本協方差 print(z) # 5.25

計算相關係數

numpy.corrcoef(x, y=None, rowvar=True, bias=np._NoValue, ddof=np._NoValue) Return Pearson product-moment correlation coefficients.理解了np.cov()函數之後,很容易理解np.correlate(),二者參數幾乎一模一樣。

np.cov()描述的是兩個向量協同變化的程度,它的取值可能非常大,也可能非常小,這就導致沒法直觀地衡量二者協同變化的程度。相關係數實際上是正則化的協方差,n個變量的相關係數形成一個n維方陣。

【例】計算相關係數

import numpy as npnp.random.seed(20200623)x, y = np.random.randint(0, 20, size=(2, 4))print(x) # [10 2 1 1]print(y) # [16 18 11 10]z = np.corrcoef(x, y)print(z)# [[1. 0.48510096]# [0.48510096 1. ]]a = np.dot(x - np.mean(x), y - np.mean(y))b = np.sqrt(np.dot(x - np.mean(x), x - np.mean(x)))c = np.sqrt(np.dot(y - np.mean(y), y - np.mean(y)))print(a / (b * c)) # 0.4851009629263671

直方圖

numpy.digitize(x, bins, right=False)Return the indices of the bins to which each value in input array belongs.x:numpy數組bins:一維單調數組,必須是升序或者降序right:間隔是否包含最右返回值:x在bins中的位置。【例】

import numpy as npx = np.array([0.2, 6.4, 3.0, 1.6])bins = np.array([0.0, 1.0, 2.5, 4.0, 10.0])inds = np.digitize(x, bins)print(inds) # [1 4 3 2]for n in range(x.size): print(bins[inds[n] - 1], "<=", x[n], "<", bins[inds[n]])# 0.0 <= 0.2 < 1.0# 4.0 <= 6.4 < 10.0# 2.5 <= 3.0 < 4.0# 1.0 <= 1.6 < 2.5

【例】

import numpy as npx = np.array([1.2, 10.0, 12.4, 15.5, 20.])bins = np.array([0, 5, 10, 15, 20])inds = np.digitize(x, bins, right=True)print(inds) # [1 2 3 4 4]inds = np.digitize(x, bins, right=False)print(inds) # [1 3 3 4 5]

【1】WIKI百科

https://en.wikipedia.org/wiki/Statistics

【2】WIKI百科

https://en.wikipedia.org/wiki/Benford's_law

相關焦點

  • Numpy學習打卡task01
    今天帶來的是Datawhale自主學習Numpy下學習打卡筆記第一部分—輸入輸出(為什麼沒有上,別問,問就是numpy.tan(90))。本文大致介紹了numpy的相關背景知識。本文素材來自網絡及datawhale,糾錯指正、深入探討,咱們評論區見。
  • Numpy學習打卡task02
    今天帶來的是Datawhale零基礎入門Numpy的學習打卡筆記第二部分—隨機抽樣。本文大致介紹了隨機數的相關背景知識。本文素材來自網絡及datawhale。【1】Numpy.random()參考地址:https://numpy.org/doc/stable/reference/random/index.html?
  • numpy庫學習總結(基礎知識)
    最近在學習Python中OpenCV庫,學習花了很多時間,發現基礎知識很重要,尤其是numpy這個庫,在進行程序開發時,處理大量類似數組這種數據結構時,它的重要性等同於Python中的列表,像前篇我們寫的《使用Python中OpenCV庫創建一幅圖片的RGB通道圖片》中,對於圖片的處理,大部分時間我們是在跟類似數組這種數據結構在打交道
  • D03 Numpy排序、篩選、統計
    title: D03|Numpy排序、篩選、統計author: Adolph Leecategories: 數據挖掘基礎tags:Python數據挖掘基礎統計篩選排序在進行數據挖掘工作之前,我們常常需要對數據的全貌今昔概覽,利用描述性統計獲取數據的特徵,例如數據的均值
  • Python學習第119課——numpy中的broadcasting
    這節課我們學習numpy中的數據的一個多變的特性--broadcasting,broadcasting的官方的說明比較麻煩,我們這裡把它簡化一下,就把它當做「腦補」的意思。我們舉例來說明。例:運行結果:從上例中,我們看到,x的「形狀」是3行2列,y的「形狀」是1行2列,之前我們學習numpy中的四則運算,所舉的例子中,兩個數組都是相同的「形狀」,在相加的時候每個數組對應位置上的元素分別相加,形成新的數組。
  • Python學習第114課——numpy中ndarray的四則運算
    我們為什麼要學習numpy?numpy其實就是number+Python的簡寫,意思就是通過Python對數據進行處理。要對數據進行處理,就少不了最基本的加減乘除等操作。這節我們學習numpy中數組的一些基本的四則運算。●numpy中數組的加法運算我們首先生成x和y兩個float類型的數組,然後把它們進行相加。
  • 資源|用Python和NumPy學習《深度學習》中的線性代數基礎
    本文系巴黎高等師範學院在讀博士 Hadrien Jean 的一篇基礎學習博客,其目的是幫助初學者/高級初學者基於深度學習和機器學習來掌握線性代數的概念。掌握這些技能可以提高你理解和應用各種數據科學算法的能力。
  • Python數據分析之Numpy學習 2——NumPy 基礎 ndarray對象
    Python數據分析之Numpy學習 2 —— NumPy 基礎學習NumPy(Numerical Python)是高性能科學計算和數據分析的基礎包。NumPy的主要對象是同構數據多維容器(homogeneous multidimensional array)——ndarray,也就是說每一個ndarray都是一個相同類型元素組成的表格(二維)。
  • 手把手 | OpenAI開發可拓展元學習算法Reptile,能快速學習
    大數據文摘作品編譯:Zoe Zuo、丁慧、Aileen本文來自OpenAI博客,介紹一種新的元學習算法Retile。在OpenAI, 我們開發了一種簡易的元學習算法,稱為Reptile。它通過對任務進行重複採樣,利用隨機梯度下降法,並將初始參數更新為在該任務上學習的最終參數。
  • Python數據分析之numpy學習(一)
    這裡向大家推薦兩本書《Python數據分析》和《利用Python進行數據分析》,而這兩本書也是目前我正在學習的材料,雖然這兩本書都是基於Python2.x,但對於Python3.x也能正常運行。本期將會涉及到Python模塊中的numpy,這是一個處理數組的強大模塊,而該模塊也是其他數據分析模塊(如pandas和scipy)的核心。
  • Python學習第117課——numpy中dot的運用舉例
    上節我們學習了最基礎的matrix的運算,可能有小夥伴覺得這都要涉及高等數學知識了,確實如果你想做數據科學、做人工智慧,統計學、概率論等數學知識,尤其是算法是繞不過去的坎,但是不要怕!!!我們現在入門階段知道有這個概念就行,能解決實際問題就行,後面遇到了問題再去深入。現在我們是為了入門,入門之後,你可以根據自身的底子去選擇發展方向。
  • 深度學習中的NumPy基礎
    import numpy as npa = np.array([1,2,3])a.shapea.dim此外,您可以直接從標準的 Python 列表創建。Numpy 數組是智能的。如果將 Python 列表傳遞給 array()函數,它將自動執行操作並返回 Numpy 數組。
  • OpenAI提出Reptile:可擴展的元學習算法
    元學習是學習如何學習的過程。元學習算法會學習任務的一個分布,每項任務都是學習問題,並輸出快速學習器,學習器可從少量樣本中學習並進行泛化。一個得到充分研究的元學習問題是few-shot分類,其中每項任務都是分類問題,學習器只能看到1-5個輸入 - 輸出樣本(每個類別),之後學習器必須對新輸入進行分類。
  • Python學習第116課——numpy.dot和矩陣相乘的數學運算
    關於numpy中數組的相乘,我們學習了對位相乘(用numpy.multiply、或*直接相乘,比如數組a和b的對位相乘就是numpy.multiply(a,b)或a*b)和一維數組的點乘(dot product,也有人叫inner product,比如一維數組a和b的點乘就是a.b)。
  • Python學習第113課——numpy中用條件判斷去篩選數組中的元素
    之前我們學習了如何在numpy中查找數組元素的方法和技巧,現在我們學習如何用條件判斷的方式篩選數組的元素。●numpy中的數組可以直接進行比較直接上代碼:運行結果:我們看到,condition列印出來,它的結構和h的結構一樣。
  • 史上最強:numpy 實現全部機器學習算法
    地址:https://github.com/ddbourgin/numpy-ml 手擼算法的目的在於能夠更好的學習和深入理解算法,而不是要替代已有的框架,畢竟成熟的框架在效率和精準度上都已經得到驗證。
  • 如何獲取numpy數組的真實地址?如何與ctypes數組共享內存?
    01如何獲取numpy數組元素的真實地址?在Python編程中,numpy是一個很好用的擴展程序庫,將其與SciPy庫和 Matplotlib繪圖庫一起使用,可構成一個強大的類似於Matlab的科學計算環境,有助於我們通過 Python 學習數據科學或者機器學習。在Python中,當你定義了一個numpy類型的數組後,它內部元素的真實地址如何獲得呢?
  • 如何把小豬佩奇放到多維空間裡(深入理解numpy中的ndarray對象)
    第三個數代表03室。好吧,如這樣:佩奇A家:(2,1,03),相信學過Python的人肯定會知道,用字典存儲比較好了{'佩奇A家':(2,1,03), ……},它還能存儲好多的其它佩奇家的信息,是不是很爽?但是問題來了,如果佩奇王國裡面都住著無數的小豬佩奇,我們怎麼才能精確的定位某一個佩奇呢?字典的容量夠不夠?有沒有更好的數據結構呢?
  • python數據分析基礎之numpy
    支持高級大量的維度數組與矩陣運算,是學習數據挖掘的基礎,今天我們就來總結下numpy的一些基礎用法。首先,在講numpy之前,我先帶領大家預習下大學學習過的矩陣的基礎知識。1、矩陣的基本概念矩陣:由m×n個數排列成 的m行n列的數表,稱為m行n列矩陣。實矩陣:元素是實數的矩陣。復矩陣:元素是負數的矩陣。
  • 學習筆記,從NumPy到Scrapy,學習Python不能錯過這些庫
    在網絡上看到幾位前輩寫了關於python深度學習庫的文章,對於小小白來說,因為我剛開始學python,我得承認自己看完後依然覺得雲裡霧裡的,不知道這些庫到底對我有什麼用處。所以我到網絡上搜集補充關於這些庫的說明內容,感覺在這個整理資料的過程中,對於這些python程序庫了解了更多,以下是我整理的學習筆記。