對於任何有興趣從事機器學習和數據科學方面的職業或研究的人來說,總有一天他們會超越python庫,跟隨好奇心進入這一切背後的數學世界。你越深入地理解核心數學,你就越有可能靈光一現地創造出一種新方法。
對於已經學習數學多年的任何人,可以將這樣的方程式解析為代碼。但是對於許多其他人來說,這看起來像象形文字。事實是,古代數學領袖似乎似乎選擇了最有趣的外觀符號來描述相當直觀的方法。結果是:方程和變量看起來比實際複雜得多。
我發現,代碼不僅可以用來編寫程序,還可以用來解釋複雜的數學語言。當我在學習一切數據科學背後的數學時,我總是發現獲得對數學的普遍理解的最佳方法是編寫代碼片段來描述。最終,這些符號被理解到一個程度,幾乎可以被理解為一篇典型論文中的文本。在本文中,我希望分享一些用代碼描述簡單數學的例子!
求和與乘積
求和符號是迭代數學中最有用、最常用的符號之一。儘管其設計複雜,實現卻相當簡單,也非常有用。
如上所示,此符號代表的所有內容都是從頂部的數字開始的for循環,在頂部的數字範圍內。在底部設置的變量將成為索引變量,並且每個循環的所有結果都將添加到總值中。較不常見的是,可以使用以下方法:
通常稱為乘積運算符,這個符號以相同的方式執行函數,但不是將每個結果相加,而是將它們相乘。
階乘
它存在於幾乎所有的計算器上。對於許多人來說,這一點可能更明顯一些,但是仍然值得編寫一些代碼來理解其中的機制。
5 !將表示為:
條件表達式
對於編碼人員,這只是常見的「 if」語句。以上條件可以表示為:
如上所示,括號中每一行的正確表示法指示了每條路徑應該執行的內容。我也將多餘的「包含」符號添加到每個條件中,以增加更多的見解。如上所示,我們檢查了i值是否在y列表中。認識到確實如此,我們返回了數組的總和。如果i值不在數組中,我們將基於該值返回0或1。
點乘和笛卡爾矩陣乘法
最後,我想快速介紹一下數據科學家通常使用他們最喜歡的語言庫——矩陣乘法來完成的操作。最容易理解的形式是逐點運算。這是簡單地寫為:
注意,第一個要求是每個矩陣必須具有相同的形狀(即# rows= & #Columns=)
代碼如下:
最後,讓我們看一下機器學習中最常用的典型矩陣乘法過程。用複雜的術語來說,此運算將找到每個主要行與每個次要列的點積。這樣做的主要要求是:假設[#rows,#columns]→矩陣ixj要求#columns(i)== #rows(j)→最終產品的形狀為[#rows(i), #columns(j)]
這可能看起來有些令人困惑,我最好的建議是查看一些很好的可視化效果。
這個方程的代碼如下(使用numpy點方法):
這只是幾個示例,但是對這種簡單代碼的理解可以使任何程式設計師承擔起初不祥的數學世界。當然,這些方法都可以合併以提高效率,並且通常具有易於使用的庫方法。用簡單的代碼編寫這些代碼的目的是查看以真實操作的形式寫出它們時的意義。