numpy 轉載學習

熟悉數(shù)據(jù)科學的人都很喜歡NumPy庫,它是時下最流行的Python系數(shù)據(jù)科學的中流砥柱,是Python科學計算讲逛、數(shù)據(jù)分析以及AI 機器學習的基礎組件。在最流行的三大數(shù)據(jù)處理棧R岭埠、Matlab和Python中盏混,NumPy是最重要的組件之一,有很多Python系的數(shù)據(jù)處理系統(tǒng)都依賴NumPy作為其基礎架構的基礎部分惜论,比如tensorflow许赃、pandas、SciPy和scikit-learn等馆类。

NumPy和機器學習數(shù)據(jù)表示的可視化介紹

NumPy極大地簡化了向量和矩陣的操作和處理混聊。本文中蟲蟲將一圖像可視化方式介紹NumPy的主要方法,以及在ML數(shù)據(jù)模型中的數(shù)據(jù)表示乾巧,圖文并茂的方式系統(tǒng)對大家的學習有所幫助句喜。

數(shù)組

創(chuàng)建數(shù)組

數(shù)組的創(chuàng)建通常是通過使用np.array(),并將列表傳遞給它沟于。如下圖:

NumPy和機器學習數(shù)據(jù)表示的可視化介紹

在創(chuàng)建時候NumPy也提供了很多方法幫我們初始化數(shù)組咳胃,這些方法包括:ones(),zeros()和random.random()旷太。其參數(shù)為要生成的元素個數(shù):

NumPy和機器學習數(shù)據(jù)表示的可視化介紹

數(shù)組計算

做為例子我們首先創(chuàng)建兩個數(shù)組data和one:

NumPy和機器學習數(shù)據(jù)表示的可視化介紹

最其做加法運算展懈,其實很簡單就是對應位置元素互相想加。

NumPy和機器學習數(shù)據(jù)表示的可視化介紹

NumPy在處理這些計算時候供璧,簡單就想正常數(shù)學計算一樣标沪,不像其他語言中那樣復雜的處理方式(比如做計算符號重載)。從而可以讓我們專注于數(shù)學計算而不是怎么用循環(huán)表示嗜傅。更多計算:

NumPy和機器學習數(shù)據(jù)表示的可視化介紹

實際中金句,也有數(shù)組和單個數(shù)字之間執(zhí)行計算(也稱為向量和標量之間的計算)。比如吕嘀,我們的數(shù)組表示以英里為單位的距離违寞,我們希望將其轉換為公里數(shù)贞瞒。我們可以簡單使用data *1.6:

NumPy和機器學習數(shù)據(jù)表示的可視化介紹

NumPy對每個元素都會做了乘法計算。這個又叫做廣播趁曼,一個非常有用的概念军浆。

索引

我們可以通過各種方式列表切片方式來表示NumPy數(shù)組部分和對其索引:

NumPy和機器學習數(shù)據(jù)表示的可視化介紹

聚合計算

NumPy也支持各種聚合函數(shù):

NumPy和機器學習數(shù)據(jù)表示的可視化介紹

除了最小值,最大值和總和之外挡闰,還支持很多其他統(tǒng)計函數(shù)你乒融,比如平均值mean,所有元素相乘的累乘prod摄悯,標準差std赞季,及其他。

多維度

截止當前奢驯,我們所有例子都是在一個維度上處理向量申钩。 NumPy強大之處的關鍵是它能夠將所有方法都應用到任意數(shù)量的維度。

創(chuàng)建矩陣

我們可以給array函數(shù)傳遞如下python列表參數(shù)瘪阁,NumPy就會創(chuàng)建一個矩陣:

np.array([[1,2],[3,4]])

NumPy和機器學習數(shù)據(jù)表示的可視化介紹

也可以使用上面提到的相同方法(ones()撒遣,zeros()和random.random()),只要我們給它們一個元組來表示正在創(chuàng)建的矩陣的維度:

NumPy和機器學習數(shù)據(jù)表示的可視化介紹

矩陣計算

如果兩個矩陣的大小相同管跺,我們可以使用算術運算符(+ - * /)來對矩陣計算义黎。 NumPy將這些作為位置操作處理:

NumPy和機器學習數(shù)據(jù)表示的可視化介紹

只有當不同維度為1時(例如矩陣只有一列或一行),我們才能在不同大小的矩陣上進行這些算術運算豁跑,在這種情況下廉涕,NumPy將其廣播規(guī)則用于該操作:

NumPy和機器學習數(shù)據(jù)表示的可視化介紹

點計算

與算術相關的一個關鍵區(qū)別是使用點積的矩陣乘法。 NumPy為每個矩陣提供了一個dot()方法贩绕,我們可以用它來執(zhí)行與其他矩陣的點積運算:

NumPy和機器學習數(shù)據(jù)表示的可視化介紹

這個圖的底部添加了矩陣尺寸火的,以強調兩個矩陣在它們彼此面對的一側必須具有相同的尺寸∈缜悖可以將此操作可視化為如下所示:

NumPy和機器學習數(shù)據(jù)表示的可視化介紹

矩陣索引

當我們操作矩陣時馏鹤,索引和切片操作會變得更加有用:

NumPy和機器學習數(shù)據(jù)表示的可視化介紹

矩陣聚合

我們可以像聚合數(shù)組一樣聚合矩陣:

NumPy和機器學習數(shù)據(jù)表示的可視化介紹

我們不僅可以聚合矩陣中的所有值,還可以使用axis參數(shù)對行或列進行聚合:

NumPy和機器學習數(shù)據(jù)表示的可視化介紹

轉置和重塑

處理矩陣時的一個共同需求是需要旋轉矩陣娇哆。當我們需要采用兩個矩陣的點積并??需要對齊它們共享的維度時湃累,通常就是這種情況。 NumPy數(shù)組有一個方便的屬性叫做T來獲得矩陣的轉置:

NumPy和機器學習數(shù)據(jù)表示的可視化介紹

在更高級的用例中碍讨,可能需要切換某個矩陣的維度治力。在機器學習應用程序中通常會有這種情況,其中某個模型期望輸入的某個維度與數(shù)據(jù)集不同勃黍。在這些情況下宵统,NumPy的reshape()方法很有用。只需將矩陣所需的新尺寸傳遞給它即可,可以為維度傳遞-1覆获,NumPy可以根據(jù)已有矩陣推斷出正確的維度:

NumPy和機器學習數(shù)據(jù)表示的可視化介紹

更多維度

NumPy可以完成我們在任何維度上提到的所有內容马澈。其中心數(shù)據(jù)結構稱為ndarray(N維數(shù)組)瓢省。

NumPy和機器學習數(shù)據(jù)表示的可視化介紹

在很多時候,處理新維度只是在NumPy函數(shù)的參數(shù)中添加逗號:

NumPy和機器學習數(shù)據(jù)表示的可視化介紹

實際用法——數(shù)據(jù)表示方法

最后來干貨痊班,我們來舉一些NumPy能幫助你完成的有用示例包括公式和數(shù)據(jù)表示:

公式

實現(xiàn)適用于矩陣和向量的數(shù)學公式是考慮NumPy的關鍵用例勤婚。這就是NumPy是科學Python社區(qū)的寵兒主要原因。例如涤伐,考慮平均誤差公式馒胆,它是監(jiān)督機器學習模型處理回歸問題的核心:

NumPy和機器學習數(shù)據(jù)表示的可視化介紹

在NumPy中實現(xiàn)它是輕而易舉的:

NumPy和機器學習數(shù)據(jù)表示的可視化介紹

這樣做的好處是,numpy并不會關心預測和標簽是否包含一個或一千個值(只要它們的大小相同)凝果∽S兀可以通過一個示例逐步執(zhí)行該代碼行中的四個操作:

NumPy和機器學習數(shù)據(jù)表示的可視化介紹

預測和標簽向量都包含三個值。這意味著n的值為3豆村。執(zhí)行減法后液兽,最終得到如下值:

NumPy和機器學習數(shù)據(jù)表示的可視化介紹

然后就可以對矢量中的值進行平方

NumPy和機器學習數(shù)據(jù)表示的可視化介紹

最后:

NumPy和機器學習數(shù)據(jù)表示的可視化介紹

數(shù)據(jù)表示

試想我們需要緊縮和構建模型所需的所有數(shù)據(jù)類型(電子表格骂删,圖像掌动,音頻......等)。其中很多都非常適合在n維數(shù)組中表示:

表格和電子表格

電子表格或值表是二維矩陣宁玫。電子表格中的每個工作表都可以是自己的變量粗恢。 Python中最受歡迎的抽象是pandas數(shù)據(jù)幀,它實際上使用NumPy并在其上構建欧瘪。

NumPy和機器學習數(shù)據(jù)表示的可視化介紹

音頻和時間序列

音頻文件是一維樣本數(shù)組眷射。每個樣本都是一個代表音頻信號的一小部分的數(shù)字。 CD質量的音頻每秒可能有44,100個樣本佛掖,每個樣本是-65535到65536之間的整數(shù)妖碉。這意味著如果你有一個10秒的CD質量的WAVE文件,你可以將它加載到長度為10 * 44,100的NumPy數(shù)組中= 441,000個樣本芥被。想要提取音頻的第一秒欧宜?只需將文件加載到音頻的NumPy數(shù)組中,然后獲取音頻[:44100]拴魄。

以下是一段音頻文件:

NumPy和機器學習數(shù)據(jù)表示的可視化介紹

時間序列數(shù)據(jù)也是如此(例如冗茸,股票價格隨時間變化)。

圖片

圖像是大衅ブ小(高x寬)像素的矩陣夏漱。

如果圖像是黑白的(a.k.a.灰度),則每個像素可以用單個數(shù)字表示(通常在0(黑色)和255(白色)之間)顶捷。想要裁剪圖像的左上角10 x 10像素部分挂绰?告訴NumPy通過image[:10,:10]。

下面一個圖像文件的片段:

NumPy和機器學習數(shù)據(jù)表示的可視化介紹

如果圖像是彩色的服赎,則每個像素由三個數(shù)字表示:紅色葵蒂,綠色和藍色各自的值芳室。在這種情況下,我們需要第三維(因為每個單元格只能包含一個數(shù)字)刹勃。因此彩色圖像由尺寸的ndarray表示:(高x寬x 3)堪侯。

NumPy和機器學習數(shù)據(jù)表示的可視化介紹

自然語言

如果我們處理文本,數(shù)據(jù)就會有所不同荔仁。文本的數(shù)字表示需要一個構建詞匯表的步驟(模型知道的所有唯一單詞的清單)和嵌入步驟伍宦。讓我們看看用古代用數(shù)字表示這個引用的步驟:

我們可以繼續(xù)處理一個小數(shù)據(jù)集并使用它來構建一個詞匯表(71,290個單詞):

NumPy和機器學習數(shù)據(jù)表示的可視化介紹

然后可以將句子分成一系列標記(基于通用規(guī)則的單詞或單詞部分):

NumPy和機器學習數(shù)據(jù)表示的可視化介紹

然后我們用詞匯表中的id替換每個單詞:

NumPy和機器學習數(shù)據(jù)表示的可視化介紹

這些ID仍然不能為模型提供太多信息價值。因此乏梁,在將一系列單詞提供給模型之前次洼,需要使用嵌入來替換標記/單詞(比如:50維word2vec嵌入):

NumPy和機器學習數(shù)據(jù)表示的可視化介紹

以看到此NumPy數(shù)組的維度為[embedding_dimension x sequence_length]。在實踐中遇骑,這些將是另一種方式卖毁,但我以這種方式呈現(xiàn)它的視覺一致性。出于性能原因落萎,深度學習模型傾向于保留批量大小的第一維(因為如果并行訓練多個示例亥啦,則可以更快地訓練模型)。這是一個明顯的情況练链,reshape()變得非常有用翔脱。例如,像BERT這樣的模型會期望其輸入形狀為:[batch_size媒鼓,sequence_length届吁,embedding_size]。

NumPy和機器學習數(shù)據(jù)表示的可視化介紹

現(xiàn)在這是一個數(shù)字卷绿鸣,模型可以處理并執(zhí)行有用的操作疚沐。其他行被留空了,但是他們會填充其他示例以供模型訓練(或預測)潮模。

轉載

https://www.toutiao.com/a6707983457248608771/
感謝原創(chuàng) 蟲蟲安全 2019-06-30 00:01:46

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末亮蛔,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子再登,更是在濱河造成了極大的恐慌尔邓,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,366評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件锉矢,死亡現(xiàn)場離奇詭異梯嗽,居然都是意外死亡,警方通過查閱死者的電腦和手機沽损,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評論 3 395
  • 文/潘曉璐 我一進店門灯节,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事炎疆】睿” “怎么了?”我有些...
    開封第一講書人閱讀 165,689評論 0 356
  • 文/不壞的土叔 我叫張陵形入,是天一觀的道長全跨。 經(jīng)常有香客問我,道長亿遂,這世上最難降的妖魔是什么浓若? 我笑而不...
    開封第一講書人閱讀 58,925評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮蛇数,結果婚禮上挪钓,老公的妹妹穿的比我還像新娘。我一直安慰自己耳舅,他們只是感情好碌上,可當我...
    茶點故事閱讀 67,942評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著浦徊,像睡著了一般馏予。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上辑畦,一...
    開封第一講書人閱讀 51,727評論 1 305
  • 那天吗蚌,我揣著相機與錄音腿倚,去河邊找鬼纯出。 笑死,一個胖子當著我的面吹牛敷燎,可吹牛的內容都是我干的暂筝。 我是一名探鬼主播,決...
    沈念sama閱讀 40,447評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼硬贯,長吁一口氣:“原來是場噩夢啊……” “哼焕襟!你這毒婦竟也來了?” 一聲冷哼從身側響起饭豹,我...
    開封第一講書人閱讀 39,349評論 0 276
  • 序言:老撾萬榮一對情侶失蹤鸵赖,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后拄衰,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體它褪,經(jīng)...
    沈念sama閱讀 45,820評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,990評論 3 337
  • 正文 我和宋清朗相戀三年翘悉,在試婚紗的時候發(fā)現(xiàn)自己被綠了茫打。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,127評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖老赤,靈堂內的尸體忽然破棺而出轮洋,到底是詐尸還是另有隱情,我是刑警寧澤抬旺,帶...
    沈念sama閱讀 35,812評論 5 346
  • 正文 年R本政府宣布弊予,位于F島的核電站,受9級特大地震影響开财,放射性物質發(fā)生泄漏块促。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,471評論 3 331
  • 文/蒙蒙 一床未、第九天 我趴在偏房一處隱蔽的房頂上張望竭翠。 院中可真熱鬧,春花似錦薇搁、人聲如沸斋扰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽传货。三九已至,卻和暖如春宏娄,著一層夾襖步出監(jiān)牢的瞬間问裕,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評論 1 272
  • 我被黑心中介騙來泰國打工孵坚, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留粮宛,地道東北人。 一個月前我還...
    沈念sama閱讀 48,388評論 3 373
  • 正文 我出身青樓卖宠,卻偏偏與公主長得像智听,于是被迫代替她去往敵國和親赌躺。 傳聞我的和親對象是個殘疾皇子僧凰,可洞房花燭夜當晚...
    茶點故事閱讀 45,066評論 2 355

推薦閱讀更多精彩內容

  • 在逛知乎時發(fā)現(xiàn)機器之心轉發(fā)了一篇文章圖解Numpy窒百,感覺寫的非常好。一直想要系統(tǒng)學習一下Numpy可是一直沒有實踐...
    liulei_ahu閱讀 2,583評論 0 0
  • 那天是初夏時節(jié),老師要班里沒事兒的同學給本班助威逆航。同桌也鼓動著要我去看他打籃球鼎文,我最不愛去的地方之一就是人多的操場...
    南婕閱讀 114評論 0 0
  • 1 我們對待孩子經(jīng)常用的方式是成人的思考方式 比如:孩子不換鞋 成人做法:快穿鞋,穿好我們去玩了 怎么還沒穿好爸脚荨漂问?...
    張鑫Jackie閱讀 125評論 0 0
  • UIPasteboard *pab = [UIPasteboard generalPasteboard]; NSS...
    null_create閱讀 466評論 0 1
  • 第一章 引子 第二章初探農(nóng)莊 第二天蚤假,早上7點我就起床了栏饮,做好早飯,洗好衣服磷仰。本想叫趙文新起床一起吃早飯的袍嬉,結果,...
    云淑閱讀 570評論 0 1