05.09 Pick一下?Python機器學習實用技巧

雷鋒網按:本文為雷鋒字幕組編譯的技術博客,原標題Some Essential Hacks and Tricks for Machine Learning with Python,作者為Tirthajyoti Sarkar。

翻譯 | 趙朋飛 Noodlesslee 整理 | 凡江

我們Pick了一些用Python進行機器學習實踐的基本技巧。

我是一名計算機科學與技術專業的學生。我怎麼才能入門機器學習/深度學習/人工智能?

入門機器學習從來不是一件簡單的事。除了成熟的MOOC,網絡上還有海量的免費資源,這裡列舉了一些曾經對我有幫助的資源:

  1. 從YouTube上的一些精彩的視頻開始入門。讀一些優秀的教材或文章。例如,你讀過《 終極算法: 機器學習和人工智能如何重塑世界》嗎?並且我敢保證,你會深深的愛上這本書裡有關機器學習的精彩頁面。

  2. 首先要明確區分相關術語——機器學習、人工智能、深度學習、數據科學、計算機視覺、機器人。閱讀或聆聽專家的講座。觀看Brandon Rohrer的精彩視頻,他是一位很有影響力的數據科學家,這些視頻清晰的講述了數據科學相關概念的定義和區別。

  3. 清楚知道自己學習想要達到的目標。然後,學習Coursera的課程,或者一些來自華盛頓大學的課程,也是不錯的選擇。

  4. 關注一些優秀的博客: KDnuggets,Mark Meloon的博客,是關於數據科學的,Brandon Rohrer的博客,Open AI的博客,主要是關於他們的研究的。

  5. 如果你對在線mooc課程充滿熱情,不妨看看這篇文章的指導。

  6. 最重要的是,培養一種感覺。加入一些好的社交論壇, 但是要抵制住誘惑,不要去關注那些聳人聽聞的標題和新聞內容。做你自己的閱讀,瞭解它是什麼,它不是什麼,它可能去哪裡,它會有什麼樣的可能性。 然後坐下來思考如何將機器學習或者將數據科學原理應用到日常工作中。 建立一個簡單的迴歸模型來預測下一頓午餐的成本,或者從電力公司那裡下載你的用電數據,然後在Excel中做一個簡單的時間序列圖來發現一些用電規律。 在您完全沉迷於機器學習之後,可以看看這個視頻。


對於機器學習/人工智能,Python是一款優秀的語言嗎?

除非你是一個研究複雜算法的純理論證明的博士研究員,否則你將主要使用現有的機器學習算法,並將它們應用於解決新問題。這就需要你懂得如何編程。

關於“最優秀的數據科學語言”有很多爭論。當爭論激烈的時候,停下來讀讀這篇有見地的文章,瞭解你的想法,看看你的選擇。或者,看看 KDnuggets 的文章。目前,大家普遍認為,從開發到部署及維護,Python可以幫助開發人員更有效率。與 Java、C 和 C++ 相比,Python 的語法更簡單,更高級。 它擁有充滿活力的社區,開源文化,數以百計高質量的機器學習程序庫,以及來自行業巨頭的鼎力支持(例如:谷歌,Dropbox,Airbnb 等)。這篇文章會關注PythonIt應用於機器學習上的相關基本技巧。

需要了解及掌握的基礎程序庫

為使機器學習實踐效率更高,你需要掌握一些 Python 核心庫。這些庫簡單介紹如下。

Numpy

Numerical Python的縮寫,NumPy 是採用 Python 進行科學計算和數據分析所必須的基本程序庫。幾乎所有的高級工具都是基於 Numpy 構建的,例如 Pandas 和 scikit-learn。 TensorFlow 使用 Numpy數組作為基礎構件模塊,基於此,為深度學習任務構建了 Tensor 對象和 graphflow 。很多 Numpy 操作都是用 C 實現的,這使它運行更快。對數據科學和現代機器學習任務來說,這是一個寶貴的優勢。

Pick一下?Python机器学习实用技巧

Pandas

這是 Python 科學計算領域進行通用數據分析方面最流行的庫。Pandas 基於 Numpy 數組構建,因此保留了計算速度快的特性,並且提供了很多數據工程領域的功能,包括:

  • 可以讀/寫多種不同的數據格式;

  • 選擇數據子集;

  • 跨行列計算;

  • 查找並填充缺失的數據;

  • 將操作應用到數據中的獨立組 ;

  • 將數據重組成不同的形式;

  • 合併多個數據集;

  • 高級的時序功能;

  • 通過 Matplotlib 和 Seaborn 實現可視化;

Pick一下?Python机器学习实用技巧

Matplotlib 與 Seaborn

數據可視化和善於用數據表達是每一位數據科學家應有的基本技能,這些技能可以有效傳達從分析中獲得的信息。這對於掌握並精通機器學習是非常重要的,在你的機器學習工作流(ML Pipeline)中也是如此。在決定應用特定的ML算法之前,您需要對數據集進行探索性分析。

Matplotlib 是應用最廣泛的2維可視化庫,它擁有令人眼花繚亂的數組命令和接口,能夠從數據生成高質量的圖表。,可以幫你入門 Matplotlib 。

Pick一下?Python机器学习实用技巧

Seaborn 是另一個非常棒的專注於統計繪圖的可視化庫。機器學習從業者是值得學習的。在 Matplotlib 基礎之上,Seaborn 提供 API (具備繪圖樣式和顏色默認的靈活選擇),針對常見的統計繪圖類型它定義簡單的高級函數,針對 Pandas 庫可以無縫對接。這裡有一份適合初學者的很棒的 Seaborn 教程。

Pick一下?Python机器学习实用技巧

Seaborn plots的例子

Scikit-learn

Scikit-learn 是必備的最重要的常見 Python 的機器學習包。它支持多種分類、迴歸和聚類算法,包括支持向量機、隨機森林、梯度提升、k-means 和 DBSCAN 。Scikit-learn 可與 NumPy 庫 SciPy 庫交互操作。它通過一致界面提供一系列的監督和非監督算法。Scikit-learn 庫致力於實現一定程度的健壯性和支持生產實踐中的使用。這意味著要深入關注例如易於使用,代碼質量,協作,文檔和性能等問題。可以看看這篇關於Scikit-learn使用的機器學習詞彙的簡單介紹。這裡是另一篇文章,演示了使用 Scikit-learn 的簡單機器學習管道方法。這裡有另一篇使用Scikit-learn演示簡單的機器學習方法的文章。

Scikit-learn背後的閃光點

針對機器學習初學者和經驗豐富的專業人士,Scikit-learn 是非常容易上手的包。然而,即使是非常有經驗的ML從業人員也可能沒有意識到這個包背後所有的的閃光點,它們可以顯著提升效率。我試圖展示scikit-learn中少為人知的方法/接口。

管道:它可以將多個 estimators 封裝成一個。處理數據過程中通常有一系列固定步驟所以它非常有用,例如特徵選擇、規範化和分類。這裡有份教程供深入瞭解。

網格搜索:超參數不是在estimators直接學習到的參數。在 scikit-learn 中它們作為參數傳遞給估計類的構造函數。搜索超參數空間以便獲得最好交叉驗證分數是可行且被推薦的做法。當構建 estimators 時待估的任何參數都可以用這種方式優化。

驗證曲線:每個 estimator 都有其優缺點。泛化誤差可依據偏差,方差和噪音分解。estimators 的偏差是不同訓練集的平均誤差。estimators 的方差表示其對改變訓練集有多敏感。噪音是數據的一個屬性。繪製單個超參數在訓練集和驗證集的分數,以確定某些超參數估計量是過擬合還是欠擬合的做法是非常有用的。Scikit-learn 內置方法請移步於此。

Pick一下?Python机器学习实用技巧

分類數據的獨熱編碼:它是一種非常常見的數據預處理任務,用於將輸入的分類特徵轉換為分類或預測任務中使用的二進制編碼(例如:摻有數指和文本特徵的邏輯迴歸)。Scikit-learn 提供強大而簡單的方法實現上述過程。它直接在 Pandas 數據框或 Numpy 數組上操作,因此便於用戶為這些轉換編寫任何特殊的 map/apply 函數。

多項式特徵生成:對於不盡其數的迴歸建模任務,在輸入數據中考慮非線性特徵來增加模型的複雜性是有用的。一個簡單且常用的方法是使用多項式特徵,可得到特徵的高階和交互項。Scikit-learn有現成的函數,可根據給定的特徵集和用戶選擇的最高多項式的程度生成高階的交叉項。

數據集生成器:Scikit-learn包含各種隨機樣本生成器,可用於構建給定大小和複雜度的人工數據集。它具有分類,聚類,迴歸,矩陣分解和多種測試的函數。

Pick一下?Python机器学习实用技巧

實踐交互式機器學習

在2014年 Jupyter 項目於脫胎於 IPython 項目,並迅速演變為支持所有主流編程語言的交互式數據科學和科學計算的筆記本。毫無疑問,它在幫助數據科學家快速測試,為他/她的想法創建原型,展示成果給同行和開源社區等方面帶來巨大影響。

然而,只有當用戶能夠交互式地控制模型參數並實時看到效果(幾乎)的時侯,學習和測試數據才變得真正浸潤其中。Jupyter 中大多數呈現都是靜態的

但是你需要更多控制,你想通過簡單的滑動鼠標而不是通過編寫 for 循環改變變量。該怎麼辦?你可以使用 IPython 的插件。

插件是重要的 python 組件,它通過瀏覽器有所體現,通常作為一個前端 (HTML/JavaScript) 呈現通道控件,如滑塊、文本框等。

本文我演示使用簡單插件完成基礎的曲線擬合練習。後續文章將進一步擴展到交互式及其學習技術領域。

深度學習框架

本文介紹使用 Python 探索機器學習奇妙世界的重要技巧。但它不包括 TensorFlow,Keras 或 PyTorch等深度學習框架,因為它們每一個都需要深入討論。您可以在這裡閱讀一些關於上述主題的非常棒的文章,但稍後我們可能會對這些驚豔的框架進行專門討論。

  • 7 great articles on TensorFlow (Datascience Central)

  • Datacamp tutorial on neural nets and Keras example

  • AnalyticsVidhya tutorial on PyTorch

總結

文章不可能覆蓋機器學習主題的全部內容(即使是一小部分)。但是,希望這篇文章能激發你的興趣,也為你提供 Python 生態系統中已存在一些強大框架的明確指針,確保開始你的機器學習之旅。

博客原址 https://heartbeat.fritz.ai/some-essential-hacks-and-tricks-for-machine-learning-with-python-5478bc6593f2

雷鋒網雷鋒網


分享到:


相關文章: