Python語法簡單,功能多樣,是開發人員最喜愛的AI開發程式語言之一。 對於開發人員來說,Python在機器學習上的應用非常令人高興,因為它比C ++和Java等語言要簡單。 Python也是一種非常便攜的語言,因為它可以在Linux,Windows,Mac OS和UNIX平臺上使用。 Python也很受開發人員的歡迎,因為它允許開發人員創建交互式,可解釋式性,模塊化,動態,可移植和高級的代碼,這使得它比Java語言更獨特。下面我們看下Python的5個機器學習算法(附代碼)
1、線性回歸
線性回歸通常用於根據連續變量估計實際數值(房價、呼叫次數、總銷售額等)。我們通過擬合最佳直線來建立自變量和因變量的關係。這條最佳直線叫做回歸線,並且用 Y= a *X + b 這條線性等式來表示。
理解線性回歸的最好辦法是回顧一下童年。假設在不問對方體重的情況下,讓一個五年級的孩子按體重從輕到重的順序對班上的同學排序,你覺得這個孩子會怎麼做?他(她)很可能會目測人們的身高和體型,綜合這些可見的參數來排列他們。這是現實生活中使用線性回歸的例子。實際上,這個孩子發現了身高和體型與體重有一定的關係,這個關係看起來很像上面的等式。
在這個等式中:
Y:因變量a:斜率x:自變量b :截距係數 a 和 b 可以通過最小二乘法獲得。
參見下例。我們找出最佳擬合直線 y=0.2811x+13.9。已知人的身高,我們可以通過這條等式求出體重。
線性回歸的兩種主要類型是一元線性回歸和多元線性回歸。一元線性回歸的特點是只有一個自變量。多元線性回歸的特點正如其名,存在多個自變量。找最佳擬合直線的時候,你可以擬合到多項或者曲線回歸。這些就被叫做多項或曲線回歸。
2、邏輯回歸
別被它的名字迷惑了!這是一個分類算法而不是一個回歸算法。該算法可根據已知的一系列因變量估計離散數值(比方說二進位數值 0 或 1 ,是或否,真或假)。簡單來說,它通過將數據擬合進一個邏輯函數來預估一個事件出現的概率。因此,它也被叫做邏輯回歸。因為它預估的是概率,所以它的輸出值大小在 0 和 1 之間(正如所預計的一樣)。
讓我們再次通過一個簡單的例子來理解這個算法。
假設你的朋友讓你解開一個謎題。這只會有兩個結果:你解開了或是你沒有解開。想像你要解答很多道題來找出你所擅長的主題。這個研究的結果就會像是這樣:假設題目是一道十年級的三角函數題,你有 70%的可能會解開這道題。然而,若題目是個五年級的歷史題,你只有30%的可能性回答正確。這就是邏輯回歸能提供給你的信息。
從數學上看,在結果中,機率的對數使用的是預測變量的線性組合模型。
在上面的式子裡,p 是我們感興趣的特徵出現的概率。它選用使觀察樣本值的可能性最大化的值作為參數,而不是通過計算誤差平方和的最小值(就如一般的回歸分析用到的一樣)。
現在你也許要問了,為什麼我們要求出對數呢?簡而言之,這種方法是複製一個階梯函數的最佳方法之一。我本可以更詳細地講述,但那就違背本篇指南的主旨了。
請點擊此處輸入圖
片描述
3、支持向量機
這是一種分類方法。在這個算法中,我們將每個數據在N維空間中用點標出(N是你所有的特徵總數),每個特徵的值是一個坐標的值。
舉個例子,如果我們只有身高和頭髮長度兩個特徵,我們會在二維空間中標出這兩個變量,每個點有兩個坐標(這些坐標叫做支持向量)。
上面示例中的黑線將數據分類優化成兩個小組,兩組中距離最近的點(圖中A、B點)到達黑線的距離滿足最優條件。這條直線就是我們的分割線。接下來,測試數據落到直線的哪一邊,我們就將它分到哪一類去。
更多請見:支持向量機的簡化
將這個算法想作是在一個 N 維空間玩 JezzBall。需要對遊戲做一些小變動:
比起之前只能在水平方向或者豎直方向畫直線,現在你可以在任意角度畫線或平面。遊戲的目的變成把不同顏色的球分割在不同的空間裡。球的位置不會改變。Python代碼
4、Gradient Boosting 和 AdaBoost 算法
當我們要處理很多數據來做一個有高預測能力的預測時,我們會用到 GBM 和 AdaBoost 這兩種 boosting 算法。
boosting 算法是一種集成學習算法。它結合了建立在多個基礎估計值基礎上的預測結果,來增進單個估計值的可靠程度。這些 boosting 算法通常在數據科學比賽如 Kaggl、AV Hackathon、CrowdAnalytix 中很有效。
GradientBoostingClassifier 和隨機森林是兩種不同的 boosting 樹分類器。人們常常問起這兩個算法之間的區別。
5、決策樹
這是我最喜愛也是最頻繁使用的算法之一。這個監督式學習算法通常被用於分類問題。令人驚奇的是,它同時適用於分類變量和連續因變量。在這個算法中,我們將總體分成兩個或更多的同類群。這是根據最重要的屬性或者自變量來分成儘可能不同的組別。想要知道更多,可以閱讀:簡化決策樹。
在上圖中你可以看到,根據多種屬性,人群被分成了不同的四個小組,來判斷 「他們會不會去玩」。為了把總體分成不同組別,需要用到許多技術,比如說 Gini、Information Gain、Chi-square、entropy。
理解決策樹工作機制的最好方式是玩Jezzball,一個微軟的經典遊戲(見下圖)。這個遊戲的最終目的,是在一個可以移動牆壁的房間裡,通過造牆來分割出沒有小球的、儘量大的空間。
因此,每一次你用牆壁來分隔房間時,都是在嘗試著在同一間房裡創建兩個不同的總體。相似地,決策樹也在把總體儘量分割到不同的組裡去。
Python是一種多範式程式語言,支持面向對象,面向過程和函數式編程風格。 由於它擁有簡單的函數庫和理想的結構,Python很適合神經網絡和自然語言處理(NLP)解決方案的開發。Python具有豐富多樣的庫和工具。2.在不必實施的情況下進行算法測試。3.Python的面向對象設計提高了開發人員的工作效率。4.與Java和C ++相比,Python在開發中運行速度更快。
好了,今天就知識就分享到這裡,獲取更多資源,歡迎在評論區留言討論。