當前位置:
首頁 > 知識 > Pick 一下?Python 機器學習實用技巧

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

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



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


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




  1. 從 YouTube 上的一些精彩的視頻開始入門。讀一些優秀的教材或文章。例如,你讀過《

    終極演算法: 機器學習和人工智慧如何重塑世界(https://www.goodreads.com/book/show/24612233-the-master-algorithm)

    》嗎?並且我敢保證,你會深深的愛上

    這本書里有關機器學習的精彩頁面(http://www.r2d3.us/visual-intro-to-machine-learning-part-1/)



  2. 首先要明確區分相關術語——機器學習、人工智慧、深度學習、數據科學、計算機視覺、機器人。閱讀或聆聽專家的講座。觀看

    Brandon Rohrer

    的精彩視頻,他是一位很有影響力的數據科學家,

    這些視頻(https://www.youtube.com/watch?v=Ura_ioOcpQI)

    清晰的講述了數據科學相關概念的定義和區別。



  3. 清楚知道自己學習想要達到的目標。然後,學習Coursera的課程,或者

    一些來自華盛頓大學的課程(https://www.coursera.org/specializations/machine-learning)

    ,也是不錯的選擇。



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



  5. 如果你對在線 mooc 課程充滿熱情,不妨看看

    這篇文章(https://towardsdatascience.com/how-to-choose-effective-moocs-for-machine-learning-and-data-science-8681700ed83f)

    的指導。








復仇者聯盟3:無限戰爭


主演:小羅伯特·唐尼 / 克里斯·海姆斯沃斯 / 馬克·魯法洛



貓眼電影演出

廣告

購買


最重要的是,培養一種感覺。加入一些好的社交論壇, 但是要抵制住誘惑,不要去關注那些聳人聽聞的標題和新聞內容。 做你自己的閱讀,了解它是什麼,它不是什麼,它可能去哪裡,它會有什麼樣的可能性。  然後坐下來思考如何將機器學習或者將數據科學原理應用到日常工作中。  建立一個簡單的回歸模型來預測下一頓午餐的成本,或者從電力公司那裡下載你的用電數據,然後在 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 實現的,這使它運行更快。對數據科學和現代機器學習任務來說,這是一個寶貴的優勢。



Pandas


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

數據工程領域的功能

,包括:




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



  • 選擇數據子集;



  • 跨行列計算;



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



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



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



  • 合併多個數據集;



  • 高級的時序功能;



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



Matplotlib 與 Seaborn


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


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

這裡有一個非常詳細和內容豐富的文章(https://realpython.com/python-matplotlib-guide/)

,可以幫你入門 Matplotlib 。



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

這裡有一份適合初學者的很棒的 Seaborn 教程(https://www.datacamp.com/community/tutorials/seaborn-python-tutorial)。




Seaborn plots 的例子


Scikit-learn


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

這裡是另一篇文章,演示了使用 Scikit-learn 的簡單機器學習管道方法(http://scikit-learn.org/stable/tutorial/basic/tutorial.html)


這裡有另一篇使用Scikit-learn演示簡單的機器學習方法的文章。


https://towardsdatascience.com/machine-learning-with-python-easy-and-robust-method-to-fit-nonlinear-data-19e8a1ddbd49


Scikit-learn 背後的閃光點


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


管道

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








後來的我們


主演:井柏然 / 周冬雨 / 田壯壯



貓眼電影演出

廣告

購買


網格搜索

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


http://scikit-learn.org/stable/modules/pipeline.html


驗證曲線

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



分類數據的獨熱編碼

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


多項式特徵生成

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


數據集生成器

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



實踐互動式機器學習


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


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


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


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


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



深度學習框架


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




  • 7 great articles on TensorFlow

    (Datascience Central)


    https://www.datasciencecentral.com/profiles/blogs/9-great-articles-about-tensorflow



  • Datacamp tutorial on neural nets and Keras example


    https://www.datacamp.com/community/tutorials/deep-learning-python



  • AnalyticsVidhya tutorial on PyTorch


    https://www.analyticsvidhya.com/blog/2018/02/pytorch-tutorial/


總結


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


博客原址


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


近期熱文




  • 乾貨 | NLP中的self-attention【自-注意力】機制



  • 這5小段代碼輕鬆實現數據可視化(Python+Matplotlib)



  • 詳解計算機視覺五大技術:圖像分類、對象檢測、目標跟蹤、語義分割和實例分割



  • 值得收藏的27個機器學習的小抄




  • 推薦 | 機器學習中的這12條經驗,希望對你有所幫助



  • 圖解機器學習的常見演算法




  • 利用Python實現卷積神經網路的可視化




  • 乾貨|淺談強化學習的方法及學習路線


廣告、商業合作


請添加微信:guodongwe1991


(備註:商務合作)

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!

TAG: |