僅需10分鐘:開啟你的機器學習之路

2020-12-13 騰訊網

  選自freecodecamp

  作者:Tirmidzi Faizal Aflahi

  機器之心編譯

  參與:李詩萌、杜偉

  機器學習之路雖漫漫無垠,但莘莘學子依然紛紛投入到機器學習的洪流中。如何更有效地開始機器學習呢?所謂「八仙過海,各顯神通」,本文作者以Python語言為工具進行機器學習,並以Kaggle競賽中的鐵達尼號項目進行詳細解讀。跟著小編來看看吧!

  隨著行業內機器學習的崛起,能夠幫用戶快速迭代整個過程的工具變得至關重要。Python,機器學習技術領域冉冉升起的一顆新星,往往是帶你走向成功的首選。因此,用 Python 實現機器學習的指南是非常必要的。

  用 Python 實現機器學習的介紹

  那麼為什麼是 Python 呢?根據我的經驗,Python 是最容易學習的程式語言之一。現在需要快速迭代整個過程,與此同時,數據科學家不需要深入了解這種語言,因為他們可以快速掌握它。

  有多容易呢?

  就這麼容易。Python 的語法和英語(或人類語言,而不是機器語言)語法關係密切。在 Python 的語法中沒有愚蠢的大括號造成的困擾。我有一個從事質量保證(Quality Assurance)工作的同事,雖然不是軟體工程師,但她可以在一天內寫出產品級的 Python 代碼。(真的!)

  我將在下文中介紹幾個基於 Python 的庫。作為數據分析師和數據科學家,我們可以利用他們的傑作來幫助我們完成任務。這些不可思議的庫是用 Python 實現機器學習的必備工具。

  NumPy

  這是一個非常有名的數據分析庫。從計算數據分布的中位數,到處理多維數組,NumPy 都可以幫你完成。

  Pandas

  這是用來處理 CSV 文件的。當然了,你還需要處理一些表格、查看統計數據等,那 Pandas 就是可以滿足你的需求的工具。

  Matplotlib

  把數據存儲在 Pandas 的數據框後,你可能需要做一些可視化來理解數據的更多信息。畢竟一圖抵千言。

  Seaborn

  這是另一個可視化工具,但這個工具更側重於統計結果的可視化,比如直方圖、餅圖、曲線圖或相關性表等。

  Scikit-Learn

  這是用 Python 實現機器學習的終極工具。所謂用 Python 實現機器學習指的就是這個——Scikit-Learn。所有你需要的從算法到提升的內容都能在這裡找到。

  Tensorflow 和 Pytorch

  針對這兩個工具我不會說太多。但如果你對深度學習感興趣的話,可以詳細了解一下,它們值得你花時間去學習。(我下次會再寫一篇關於深度學習的教程,敬請期待!)

  Python 機器學習項目

  當然,只是閱讀和學習是沒法讓你達成心願的。你需要實際練習。正如我博客中所說的,如果你沒有深入數據的話,那學習這些工具將毫無意義。因此,我在這裡介紹一個可以輕鬆找到 Python 機器學習項目的地方。

  博客地址:https://thedatamage.com/

  Kaggle 是一個可以直接研究數據的平臺。你可以在這個平臺中解決一些項目,並達到真的擅長機器學習的地步。你可能更感興趣另外一些東西——Kaggle 舉辦的機器學習競賽,獎金高達 100,000 美元。你可能會想著碰碰運氣,哈哈。

  Kaggle:https://www.kaggle.com/

  但最重要的並不是錢——你真的可以在這裡找到用 Python 實現的機器學習項目。你可以試著完成很多項目。但如果你是個新手,你可能會想參加這項競賽。

  我們將在後面的教程中用到一個示例項目:

  泰坦尼克:從災難中進行機器學習(https://www.kaggle.com/c/titanic)

  這就是眾所周知的鐵達尼號。這是一場發生在 1912 年的災難,這場災難波及到的乘客和機組成員共 2224 人,其中 1502 人遇難死亡。這項 Kaggle 競賽(或者說是教程)提供了災難中的真實數據。你的任務是解釋這些數據,並預測出災難中哪些人會活下來,哪些人不會。

  用 Python 實現機器學習的教程

  在深入了解鐵達尼號的數據之前,我們要先安裝一些必需的工具。

  首先當然是 Python。第一次安裝 Python 需要從官網上安裝。你要安裝 3.6 以上的版本,這樣才能跟最新版本的庫保持同步。

  Python 官方網站:https://www.python.org/downloads/

  然後可以用 Python 的 pip 安裝所有的庫。你剛剛下載的 Python 發行版會自動安裝 pip。

  需要的其他工具都可以用 pip 安裝。打開終端、命令行或 PowerShell,命令如下:

  看起來一切都運行良好。但是等一下,什麼叫 jupyter?jupyter 表示 Julia、Python 和 R,因此它實際上是 Jupytr。但這個單詞看起來太奇怪了,所以他們把它變成了 Jupyter。這是一個很有名的筆記本,你可以在這個筆記本上寫交互式的 Python 代碼。

  只要在終端中輸入 jupyter notebook,就可以打開如下圖所示的瀏覽器頁面:

  你可以把代碼寫在綠色矩形中,而且可以交互式地編寫並評價 Python 代碼。

  現在你已經安裝了所有的工具。我們開始吧!

  數據探索

  探索數據是第一步。你需要從 Kaggle 的 Titanic 頁面下載數據,然後將下載的數據放到你啟動 Jupyter 筆記本的文件夾中。

  數據下載地址:https://www.kaggle.com/c/titanic/data

  然後導入必要的庫:

  載入數據:

  輸出如下:

  這就是我們的數據。它有下面幾列:

  PassengerId,乘客的標識符;

  Survived,他(她)是否存活了下來;

  Pclass,艙室類別,也許 1 表示經濟艙,2 表示商務艙,3 表示頭等艙;

  Name,乘客的名字;

  Sex,性別;

  Age,年齡;

  SibSp,即兄弟姐妹(siblings)或配偶(spouses),表示在船上的兄弟姐妹以及配偶的數目;

  Parch,即父母(Parents)或子女(Children),表示在船上的父母和子女的數目;

  Ticket,船票詳情;

  Cabin,艙號,NaN 表示未知;

  Embarked,登船的起始地,S 表示南安普頓(Southampton),Q 表示皇后鎮(Queenstown),C 表示瑟堡(Cherbourg)

  在探索數據時,常常會遇到數據缺失的問題。我們來看一下

  我們會看到這樣的結果:

  艙號、年齡以及登船地的數據都有一些缺失值,而艙號信息有大量的缺失。我們需要對它們進行處理,也就是所謂的數據清理(Data Cleaning)。

  數據清理

  我們 90% 的時間都花在這上面。我們要針對每一個機器學習項目進行大量的數據清理。當數據清理乾淨時,我們就可以輕鬆地進行下一步了,什麼都不用擔心。

  數據清理中最常用的技術是填充缺失數據。你可以用眾數、平均數或中位數來填充缺失數據。選擇這些數據沒有絕對規則,你可以一一嘗試,然後看看它們的表現如何。但是根據經驗來講,分類數據只能用眾數,連續數據可以用中位數或平均數。所以我們用眾數來填充登船地數據,用中位數來填充年齡數據。

  接下來的重要操作是刪除數據,尤其針對大量缺失的數據。我們針對艙號數據進行以下處理:

  現在檢查一下清理過的數據。

  完美!沒有任何缺失數據了!這表示數據已經清理乾淨了。

  特徵工程

  現在數據已經清理乾淨了。接下來我們要進行特徵工程。

  特徵工程基本上就是根據當前可用數據發現特徵或數據的技術。有幾種方法可以實現這種技術。在很多時候這都是常識。

  我們以登船地數據為例——這是用 Q、S 或 C 填充的數據。Python 庫不能處理這個,因為它只能處理數字。所以你需要用所謂的獨熱向量化(One Hot Vectorization)來處理,它可以把一列變成三列。用 0 或 1 填充 Embarked_Q、Embarked_S 和 Embarked_C,來表示這個人是不是從這個港口出發的。

  再以 SibSp 和 Parch 為例。這兩列沒有什麼有趣的,但是你可能會想知道某個乘客有多少家人登上了這艘船。如果家人多的話可能會增加生存機率,因為他們可以互相幫助。從另一個角度說,單獨登船的乘客可能很難生存下去。

  因此你可以創建新的一列,這一列是成員數量(family size),family size = SibSp + Parch + 1(乘客自己)。

  最後一個例子是以 bin 列為例的。由於你認為很難區分具有相似值的事物,所以這種操作創建了值範圍(ranges of values),然後將多個值組合在一起。比如,5 歲和 6 歲的乘客之間有顯著的差異嗎?或者 45 和 46 歲的人之間有顯著的差異嗎?

  這就是創建 bin 列的原因。也許就年齡而言,我們可以創建 4 列——幼兒(0~14 歲)、青少年(14~20 歲)、成年人(20~40 歲)以及年長的人(40 歲以上)。

  編碼如下:

  現在,你已經創建完成所有的特徵了。接著我們看看這些特徵之間的相關性:

  相關值接近 1 意味著高度正相關,-1 意味著高度負相關。例如,性別為男和性別為女之間就呈負相關,因為必須將乘客識別為一種性別(或另一種)。此外,你還可以看到,除了用特徵工程創建的內容外,沒有哪兩種是高度相關的。這證明我們做得對。

  如果某些因素之間高度相關會怎麼樣?我們可以刪除其中的一個,新列中的信息並不能給系統提供任何新信息,因為這兩者是完全一樣的。

  用 Python 實現機器學習

  現在我們已經到達本教程的高潮——機器學習建模。

  Scikit-Learn 庫中有多種算法供你選擇:

  邏輯回歸

  隨機森林

  支持向量機

  K 最近鄰

  樸素貝葉斯

  決策樹

  AdaBoost

  LDA

  梯度增強

  你可能感到不知所措,想弄清什麼是什麼。別擔心,只要將它當做「黑箱」對待就好——選一個表現最好的。(我之後會寫一篇完整的文章討論如何選擇這些算法。)

  以我最喜歡的隨機森林算法為例:

  哇哦!準確率高達 83%。就第一次嘗試而言,這個結果已經很好了。

  交叉驗證分數的意思是 K 折驗證方法。如果 K=10,就是說要把數據分成 10 個變量,計算所有分數的均值,並將它們作為最終分數。

  微調

  現在你已經完成了用 Python 實現機器學習的步驟。但再加一個步驟可以讓你得到更好的結果——微調。微調的意思是為機器學習算法找到最佳參數。以上面的隨機森林代碼為例:

  你需要設置許多參數。順便說一下,上面的都是默認值。你可以根據需要改變參數。但當然了,這需要花費很多時間。

  別擔心——有一種叫做網格搜索(Grid Search)的工具,它可以自動找出最佳參數。聽起來還不錯,對吧?

  好了,你可以自己嘗試一下,並從中享受機器學習的樂趣。

  總結

  怎麼樣?機器學習看起來似乎並不難吧?用 Python 實現機器學習很簡單。一切都已經為你準備好了。你可以做一些神奇的事,並給人們帶來快樂。

  本文為機器之心編譯,轉載請聯繫本公眾號獲得授權。

  ------------------------------------------------

相關焦點

  • 10分鐘:開啟你的機器學習&可視化之路
    最近老哥潛心修煉"機器學習"相關知識,發現高大上的機器學習,入門竟然是如此的簡單。了解了基本原理之後,上手只需要10分鐘。今天,老哥用自己寫的一個小案例,帶你走進機器學習的世界~本次老哥使用了sklearn提供的案例數據集「fetch_20newsgroups」,採用樸素貝葉斯算法對新聞進行分類,並用pyecharts對結果可視化。
  • 10分鐘快速入門機器學習之路!
    -隨著行業內機器學習的崛起,能夠幫用戶快速迭代整個過程的工具變得至關重要。Python,機器學習技術領域冉冉升起的一顆新星,往往是帶你走向成功的首選。因此,用 Python 實現機器學習的指南是非常必要的。用 Python 實現機器學習的介紹那麼為什麼是 Python 呢?
  • 乾貨 | 如何用Python開啟你的機器學習之路
    作者:Tirmidzi Faizal Aflahi編譯:李詩萌、杜偉本文轉自公眾號 機器之心機器學習之路雖漫漫無垠如何更有效地開始機器學習呢?所謂「八仙過海,各顯神通」,本文作者以Python語言為工具進行機器學習,並以Kaggle競賽中的鐵達尼號項目進行詳細解讀。跟著小編來看看吧!隨著行業內機器學習的崛起,能夠幫用戶快速迭代整個過程的工具變得至關重要。Python,機器學習技術領域冉冉升起的一顆新星,往往是帶你走向成功的首選。因此,用 Python 實現機器學習的指南是非常必要的。
  • 僅需15分鐘,使用OpenCV+Keras輕鬆破解驗證碼
    本文作者 Adam Geitgey 告訴你:僅需 15 分鐘。每個人都討厭 CAPTCHA——這些惱人的圖片中包含你必須輸入的文字,正確地填寫它你才能訪問網站。他可以讓我們更加輕鬆地定義、訓練和使用深度神經網絡——僅需編寫很少的代碼。TensorFlowTensorFlow 是谷歌推出與維護的機器學習庫,也是目前人工智慧領域裡最為流行的框架。我們會在 Keras 之上寫代碼,但 Keras 實際上並沒有實現神經網絡運算的方法——它需要使用 TensorFlow 作為後端來完成具體的工作。
  • 我的機器學習算法之路
    "我正在為我的團隊招聘機器學習專家,但你的MOOC並不會給你帶來工作機會。事實上,大多數機器學習方向的碩士也並不會得到工作機會,因為他們(與大多數上過MOOC的人一樣)並沒有深入地去理解。他們都沒法幫助我的團隊解決問題。"-- Ross C. Taylor3. 找一份機器學習相關的工作需要掌握怎樣的技能?"首先,你得有正兒八經的計科或數學專業背景。
  • 荷城至南莊僅需12分鐘!一環西拓工程又有新進展
    荷城至南莊僅需12分鐘!隨著一環西拓(西樵段) 工程持續推進,該路段計劃在2022年10月完工。高明至南莊,只需12分鐘一環西拓(西樵段)路線起點位於高明大橋,利用龍高路、南九複線,然後在南海顯崗村道附近往東偏轉新建道路(南九公路),跨越順德水道,在禪城接入佛山一環,全長約15公裡,途經南海區的西樵鎮和九江鎮。
  • 小白python機器學習之路(一)
    寫這個系列之前想了很久,作為一個非科班出身的學習者,面對一大片的數學公式和計算機語言,眼前的學習之路艱難得難以邁出哪怕是一步。
  • 12306看了會沉默,國外大神利用機器學習15分鐘破解網站驗證碼!
    本文作者 Adam Geitgey 告訴你:僅需 15 分鐘。每個人都討厭 CAPTCHA——這些惱人的圖片中包含你必須輸入的文字,正確地填寫它你才能訪問網站。他可以讓我們更加輕鬆地定義、訓練和使用深度神經網絡——僅需編寫很少的代碼。TensorFlowTensorFlow 是谷歌推出與維護的機器學習庫,也是目前人工智慧領域裡最為流行的框架。
  • 五四大道下月通車 二郎至楊家坪僅需10分鐘
    重慶晚報記者從市城鄉建委獲悉,五四大道將於下月正式打通,之後,從二郎途經五四大道前往楊家坪,僅需10分鐘車程。  據了解,五四大道全長1939米,雙向四車道,是連接二郎片區和石坪橋片區、盤龍新城等區域的咽喉要道,道路分為重慶高新區段(約1299米)和九龍坡區段(約640米)分別建設。
  • 成為數據科學家、人工智慧和機器學習工程師的自學之路
    來源:大數據文摘本文約2600字,建議閱讀6分鐘但你必須花時間,並避免同時學習多種語言,因為這可能會使你感到困惑,並使你暫時迷失方向。花時間,一次學習一種語言,並確保僅學習職業所需的部分。我建議你先學習Python,因為它是一種相對容易理解的語言。我還建議你在學習用於數據科學和人工智慧 / 機器學習的Python之前先學習一般的Python。相關連結:https://www.youtube.com/watch?
  • 五分鐘向長輩解釋機器學習,這樣最通俗!
    全文共2746字,預計學習時長5分鐘什麼是機器學習呢?如果是對此一竅不通的長輩來問你這個問題,你該如何回答?本文將用最簡單的詞彙來嘗試解釋這一話題,包括每個人都應該知道的最主要也是最重要的部分。再比如說,機器學習在自動駕駛汽車上發揮著重要作用。汽車會收集大量的數據來學習怎樣開得更好更安全。顯而易見的是,機器學習將在未來的生活中扮演重要的角色。機器學習不是什麼首先,機器學習並不是像你在電影中看到的那樣,機器人想要摧毀人類。
  • 陳天奇:十年機器學習科研之路(附連結)
    本文約6100字,建議閱讀15+分鐘。
  • 技術專欄丨10大機器學習算法速覽,帶你開啟AI之旅
    使用這些變量的組合,我們可以生成一個由輸入映射到所需輸出的的函數。該算法的訓練過程會嘗試將模型的預測準確度提高到訓練數據所需的程度。具體的算法有:回歸、決策樹、隨機森林、kNN、Logistic回歸等等。無監督學習該算法中,沒有任何的目標/結果變量以用來預測/估計。
  • 市民換證僅需10分鐘 義烏身份證自助受理機受歡迎
    拍照、信息錄入、採集指紋、繳費......目前,義烏市民換領身份證只需在一臺類似ATM機的身份證自助受理機上簡單操作,即可完成身份證申領,整個過程僅需10分鐘。今天(12月12日)上午,記者從義烏市行政服務中心的公安窗口了解到,身份證自助受理機是市公安局今年最新引進的設備,投入運行以來因其方便快捷受到了市民歡迎,現有千餘名人享受了這一自助辦證服務。
  • 快速充電僅需30分鐘 充一次電可以跑一星期!僅10萬
    隨著目前汽車市場電動汽車的不斷普及,越來越多的合資與自主車企加入了純電動汽車的行列,比亞迪,作為一家電池起家的企業,在新能源汽車領域一直扮演著「老大哥」的角色,為了迎合國人的消費習慣,比亞迪推出了一款價格區間在10萬元的小型純電動SUV——比亞迪元EV360,而且它的最高續航裡程可達
  • 5分鐘入門到精通,適合AI初學者的10個機器學習項目!
    隨著機器學習的激增,越來越多的專業人員從事機器學習工程師的職業。入門的最佳方法之一是動手實踐並開發項目,並且在線上有許多免費資源。這是一些適合初學者的最佳機器學習項目,所有這些都需要一定程度的機器學習知識。通過AI和機器學習增強職業技能並促進職業發展。
  • 英語高效複習預習法 奇速英語同步微課每日英語僅需學習10分鐘!
    科學數據表明:一堂40分鐘的課程裡,學生在集中注意力認真聽課的時間可能20分鐘都不到,如何保證長時間的專心聽講、如何保證課堂知識的充分吸收、如何保證孩子「學而不煩」?短視頻的時代已經到來,「教育教學短視頻」或將受到更多學生家長寵愛!短視頻學習更能維持學生學習注意力!
  • Python 機器學習庫 Top 10,你值得擁有!
    Python 在眾多開發者中如此受追捧的原因之一便是其擁有大量的與機器學習相關的開源框架以及工具庫,本文介紹了其中最受歡迎的10大Python庫。下面我們就來探索一下機器學習領域中最受歡迎的十大框架或工具庫:Tensorflow如果你正在使用 Python 來從事機器學習項目,那麼你一定聽說過其中一個著名的框架
  • 吐司這樣做,僅需10分鐘,一整天能量滿滿
    吐司這樣做,僅需10分鐘,一整天能量滿滿。打蛋前可以預熱烤箱了,上下火180℃,至少10分鐘。7.牛奶蛋液過篩後倒入有嘴的容器,方便倒撻液。用湯勺舀也可以。8.吐司杯中加兩塊切成小塊的牛油果(其他水果也行,不放也可以),倒入蛋撻液,倒滿。因為吐司片會吸水,倒八分滿的話,烤完只有一點點內餡了。
  • 日本3000家711年內將提供免稅服務 手續僅需5分鐘
    人民網東京7月7日電 據日本《日本經濟新聞》網站報導,2015年內日本3000家711便利店將引進免稅辦理系統,外國遊客僅需5分鐘便可完成免稅手續。目前,外國遊客每年為日本帶去2萬億日元的消費,東京的大型百貨商店、家電賣場,以及地方各大店鋪都相繼推出了免稅服務。