簡單生活第一步:數據科學家該了解的4個Python自動庫

2021-01-07 讀芯術

全文共4739字,預計學習時長12分鐘

圖源:unsplash

機器學習(AutoML)是一個新興領域,其中用來建模數據的機器學習模型是一個自動化的過程,AutoML的功能使建模更為輕鬆。如果對AutoML感興趣,筆者向你推薦以下4個必學的Python庫。

1.auto-sklearn

auto-sklearn是一個自動機器學習工具包,無縫集成業內許多人都熟悉的標準sklearn界面。通過使用貝葉斯優化等最新方法,構建庫來導航可能的模型空間,並學習推斷特定的配置是否能很好地完成給定任務。

這個庫是由Matthias Feurer等人創建,其技術細節在一篇名為《高效和魯棒機器學習》的論文中進行了描述。Feurer寫道:「我們引入了一個基於scikit-learn的新魯棒性自動系統——使用15個分類器、14個特徵預處理方法和4個數據預處理方法生成110個超參數的結構化假設空間。」

auto-sklearn可能是入門AutoML的最佳庫。除了挖掘數據集的數據準備和模型選擇之外,它還能學習類似數據集上性能良好的模型。

圖源:Efficient and Robust Automated Machine Learning(2015)

在有效實施的基礎上,auto-sklearn將所需用戶交互降至最低。可以使用pip install auto-sklearn來安裝庫。

可以使用的兩大類是Auto Sklearn Classifier和Auto Sklearn Regressor,分別用於分類和回歸任務。兩者都有相同的用戶指定參數,其中最重要的是時間限制和集成大小。

import autosklearn as ask #ask.regression.AutoSklearnRegressor()for regression tasks model =ask.classification.AutoSklearnClassifier(ensemble_size=10, #size of the endensemble (minimum is 1) time_left_for_this_task=120, #the number ofseconds the process runs for per_run_time_limit=30) #maximum secondsallocated per model model.fit(X_train, y_train) #begin fittingthe search modelprint(model.sprint_statistics()) #printstatistics for the search y_predictions = model.predict(X_test) #get predictionsfrom the model

2.TPOT

TPOT是另一個自動化建模管道的Python庫,它更強調數據準備、建模算法和模型超參數。它通過一種進化的基於樹結構自動化特徵選擇、預處理和構造,「該結構稱為基於樹管道優化工具(TPOT),可以自動設計和優化機器學習管道。」

圖源:數據科學自動化中基於樹的流水線優化工具的評價(2016)

程序或管道以樹狀圖呈現。遺傳程序選擇並進化某些程序,以最大化每個自動機器學習管道的最終結果。

正如Pedro Domingos所說:「一個擁有大量數據的愚蠢算法勝過一個擁有有限數據的聰明算法。」事實確實如此,TPOT可以生成複雜的數據預處理管道。

圖源:TPOT documentation

就像許多AutoML算法一樣,TPOT管道優化器可能要花幾個小時才能產生好的結果,你可以在Kaggle commits或者谷歌Colab中運行這些長時間的程序。

import tpot pipeline_optimizer = tpot.TPOTClassifier(generations=5, #number ofiterations to run the training population_size=20, #number ofindividuals to train cv=5) #number of foldsin StratifiedKFold pipeline_optimizer.fit(X_train, y_train) #fit thepipeline optimizer - can take a long timeprint(pipeline_optimizer.score(X_test, y_test)) #print scoringfor the pipeline pipeline_optimizer.export('tpot_exported_pipeline.py') #export thepipeline - in Python code!

也許TPOT的最佳特性是可以將模型導出為Python代碼文件,方便以後使用。

3.HyperOpt

由James Bergstra開發的HyperOpt是一個用於貝葉斯優化的Python庫。為大規模優化具有數百個參數的模型而設計,該庫明確用於優化機器學習管道,並具有在多個核和機器之間擴展優化過程的選項。

「我們的方法是公開一個性能度量(例如驗證示例上的分類精度)如何從超參數計算的底層表達式圖,這些超參數不僅控制單個處理步驟的應用,而且甚至控制包含哪些處理步驟。」

然而,HyperOpt很難直接使用,因為它存在技術壁壘,需要仔細指定優化過程和參數。我建議使用HyperOpt-sklearn,這是一個包含sklearn庫的HyperOpt包裝器。

具體來說,儘管HyperOpt支持預處理,但其主要關注幾十個進入特定模型的超參數。考慮一次HyperOpt-sklearn搜索的結果,在沒有進行預處理的情況下,得到了一個梯度增強分類器:

{'learner': GradientBoostingClassifier(ccp_alpha=0.0, criterion='friedman_mse', init=None, learning_rate=0.009132299586303643, loss='deviance', max_depth=None, max_features='sqrt', max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None, min_samples_leaf=1, min_samples_split=2, min_weight_fraction_leaf=0.0, n_estimators=342, n_iter_no_change=None, presort='auto', random_state=2, subsample=0.6844206624548879, tol=0.0001, validation_fraction=0.1, verbose=0, warm_start=False), 'preprocs': (), 'ex_preprocs': ()}

構建HyperOpt-sklearn模型的文檔提到,它比auto-sklearn要複雜得多,比TPOT稍微複雜一點。但如果超參數的作用很重要,那麼多餘的繁瑣工作也是值得的。

4.AutoKeras

與標準的機器學習庫相比,神經網絡和深度學習要強大得多,因此也更難實現自動化。

· 使用AutoKeras,神經結構搜索算法會找到最好的結構,比如一層中的神經元數量,層的數量,要合併的層,層的特定參數,比如過濾器的大小或Dropout中丟失的神經元的百分比等等。一旦搜索完成,就可以將其當作一個普通的TensorFlow/Keras模型來使用這個模型。

· 通過使用AutoKeras,你可以構建一個包含複雜元素的模型,比如嵌入和空間縮減,否則那些仍在摸索深度學習的人將很難獲得這些元素。

· 當AutoKeras創建模型時,已完成並優化許多預處理,如向量化或清理文本數據。

· 啟動和訓練搜索只需要兩行代碼。而AutoKeras擁有一個類似於keras的界面,所以它易於記憶和使用。

AutoKeras支持文本、圖像和結構化數據,並為初學者和那些希望深入技術知識的人提供接口,AutoKeras使用進化神經結構搜索方法來消除困難和歧義。儘管AutoKeras運行的時間很長,但有許多用戶指定的參數可用來控制運行時間、探索的模型數量、搜索空間大小等。

Hyperparameter |Value |BestValueSoFar text_block_1/block_type|transformer|transformer classification_head_1/dropout|0 |0 optimizer |adam |adam learning_rate |0.001 |0.001 text_block_1/max_tokens|20000 |20000 text_block_1/text_to_int_sequence_1/output_sequence_length|200 |200 text_block_1/transformer_1/pretraining|none |none text_block_1/transformer_1/embedding_dim|32 |32 text_block_1/transformer_1/num_heads|2 |2 text_block_1/transformer_1/dense_dim|32 |32 text_block_1/transformer_1/dropout|0.25 |0.25 text_block_1/spatial_reduction_1/reduction_type|global_avg|global_avg text_block_1/dense_block_1/num_layers|1 |1 text_block_1/dense_block_1/use_batchnorm|False |False text_block_1/dense_block_1/dropout|0.5 |0.5 text_block_1/dense_block_1/units_0|20 |20

應該使用哪一個自動庫呢?

圖源:unsplash

· 如果你首選整潔、簡單的界面和相對快速的結果,請使用auto-sklearn。可以與sklearn的自然集成,與常用的模型和方法一起使用。

· 如果注重的是高精確度而不介意訓練所需消耗時間較長,可以使用TPOT。可通過用樹狀結構代表管道而達成其強調的先進預處理方法,它還能額外輸出最佳模型的Python代碼。

· 如果注重高精確度而不介意潛在的較長訓練時間,則使用HyperOpt-sklearn,強調模型的超參數優化是否有成效取決於數據集和算法。

· 如果你的問題涉及神經網絡,特別是文本或圖像形式的問題,請使用AutoKeras。其訓練確實需要很長時間,但有大量的措施可以控制時間和搜索空間的大小。

想實現自動化,千萬不要錯過這四個庫。

留言點讚關注

我們一起分享AI學習與發展的乾貨

如轉載,請後臺留言,遵守轉載規範

相關焦點

  • 一文總結數據科學家常用的Python庫(下)
    一文總結數據科學家常用的Python庫(上)用於建模的Python庫我們已經到達了本文最受期待的部分 - 構建模型!這就是我們大多數人首先進入數據科學領域的原因,不是嗎?讓我們通過這三個Python庫探索模型構建。
  • python定時獲取天氣數據並自動發送到郵箱
    自動發送郵件,python幾行代碼來搞定!我們說到如何用python來實現自動發送郵件。這篇文章我們就來談談如何獲取天氣數據,並定時將天氣數據發送到指定的郵箱中?另一種是通過python爬取相關天氣預報網頁的內容,從裡面提取相關的信息。由於之前沒有給大家介紹過相關爬蟲的知識,所以這裡採用第一種方法。以後再陸續介紹爬蟲怎麼去獲取天氣預報信息。
  • 十大被低估的Python自帶庫!
    大家往往只是關注自己安裝的python庫,卻忽略了python自帶的庫函數,或者是python自帶的庫,今天小編就為大家介紹一下,十大被低估的python自帶庫或者是python自帶的函數。5.MathMath模塊是python自帶的簡單數學函數模塊,包括了指數、對數、正弦餘弦等函數。
  • 2017年數據科學15個最好用的Python庫
    導讀:隨著近幾年Python已成為數據科學行業中大火的程式語言,我們將根據以往的經驗來為大家總結一下數據科學家和工程師幾個最實用的python庫。scikit-learn為常見的機器學習算法設計了一個簡潔通用的界面,使得在生產系統使用機器學習變的十分簡單。 該庫有著高質量的代碼和文檔,性能高,容易使用,是使用Python進行機器學習的行業實踐標準。
  • 10個被嚴重忽視的Python自帶庫
    python 的過程中,都會了解到 python 的一個強大的功能在於各種強大的第三方庫函數,大家只需要通過 pip install 即可安裝我們需要的庫函數。但通常我們更關注自己安裝的 python 庫,卻忽略了python自帶的庫或者內置函數。今天就來為大家介紹一下,十大被低估的 python 自帶庫/函數。1.
  • 5個奇妙的Python庫
    點擊上方「深度學習愛好者」,選擇加"星標"或「置頂」重磅乾貨,第一時間送達引言Python是一個非常神奇語言,無論我們要做什麼任務,python都有其解決方案,無論它與機器學習,數據可視化,圖像處理還是任何簡單的任務。
  • 數據科學家最喜歡的5個自然語言處理Python庫
    非結構化數據包括傳感器數據、圖像、視頻文件、音頻文件、網站和API的數據、社交媒體數據、電子郵件以及更多與文本相關的信息。由於其特殊的特性,我們無法以一種簡單的方式處理數據,為了解決這一問題,在大數據和數據科學環境下,出現了許多技術和工具來解決這一問題。自然語言處理是人工智慧領域的前沿技術之一。
  • 每個python人都離不開的12個python庫
    如果說python能取得今天的成就,一方面是它簡介的語法,更重要的一方面就是它豐富的第三方庫,可以毫不誇張的說,只要你能想到的任何一個功能模塊,都有對應的python庫,可以說正是因為有了豐富的python庫,python才發展得如此迅速,下面我們來看看python人最常用的20個python
  • 數據科學家需要簡潔的Python代碼
    最近,我寫了一篇關於為什麼數據科學家的代碼傾向於遭受平庸之苦的評論文章,在這篇文章中,我希望介紹一些方法供新手數據科學家編寫更清晰的Python代碼並更好地構建小型項目,以及闡明減少技術債務在不經意間給你和所在團隊帶來的負作用。下面的內容既不詳盡也不足夠嚴謹,旨在以淺顯的方式介紹深層次建立數據科學項目的方式。
  • 盤點數據科學20個最好的Python庫(附連結)
    本文將給大家介紹數據科學領域20個最好的Python庫。Python 在解決數據科學任務和挑戰方面繼續處於領先地位。去年,我們曾發表一篇博客文章 Top 15 Python Libraries for Data Science in 2017,概述了當時業已證明最有幫助的Python庫。
  • wxpy庫+Pyecharts庫:用Python對微信好友進行數據分析
    本文結構:一、前言二、Python庫簡單介紹wxpy庫Pyechats庫re庫jieba庫和collections庫三、分析結果和代碼展示1、數據準備導入需要的Python庫使用wxpy庫登錄微信整合數據2、數據分析微信好友的男女比例微信好友的省份分布微信好友的城市分布微信好友個性籤名分析一、前言之前在某個微信公眾號上貌似看到過一個文章
  • 盤點python數據工程師需要掌握的18個庫
    很多同學學習Python的目的都是為了進行數據分析。今天我們就來整理一下Python中在數據分析領域使用最廣泛的一些庫。掌握這些庫,進行數據分析相關任務時就可以隨心所欲了!所以使用 來安裝,然後使用 來安裝scrapy就可以了數據獲取Beautiful SoupBeautiful Soup也是一個從網站爬取數據的庫,他提供一些簡單的、python式的函數用來處理導航、搜索、修改分析樹等功能。它是一個工具箱,通過解析文檔為用戶提供需要抓取的數據,因為簡單,所以不需要多少代碼就可以寫出一個完整的應用程式。
  • 掌握了這24個頂級Python庫,你就是大神!
    這是數據科學中一個永恆的問題。這也是為什麼學習提取和收集數據對數據科學家來說是一項非常重要的技能。數據提取和收集開闢了前所未有的道路。以下是三個用於提取和收集數據的Python庫:Beautiful Soup收集數據的最佳方式之一就是抓取網站(當然是以合乎道德和法律的手段!)徒手做這件事需要耗費大量的勞動和時間。Beautiful Soup無疑是一大救星。
  • 2020年10個不錯的Python庫
    這是第六屆年度 Python 庫排行榜。這個排行榜的依據是什麼?規則很簡單。我們尋找的庫需要滿足下列條件:它們是在 2020 年推出或普及的。它們從發布後就一直有良好的維護。它們非常炫酷,很值得一看。免責聲明:今年,我們的選擇受到機器學習 / 數據科學庫的極大影響,雖然有些庫對非數據科學家來說確實很有用。
  • 2017年最流行的15個數據科學Python庫
    這個 stack 相當龐大,其中有十幾個庫,所以我們想聚焦在核心包上(特別是最重要的)。NumPy(代表 Numerical Python)是構建科學計算 stack 的最基礎的包。它為 Python 中的 n 維數組和矩陣的操作提供了大量有用的功能。該庫還提供了 NumPy 數組類型的數學運算向量化,可以提升性能,從而加快執行速度。
  • 這幾個常用的python庫你需要知道
    python可以說是近幾年最火熱、最實用的、最容易上手的工具之一了。功能強大、應用廣泛,可以幫你搜集工作數據,還能幫你下載音樂,電影,於是就掀起了一波學習python的大潮,小編也毫不猶豫的加入了。但是對於向小編一樣的小白來說,剛開始學習還是有些困難的,需要首先了解python的一些基礎知識。所以小編就整理了一些常用的python庫,希望對正在學習python的小夥伴有所幫助。1.MatplotlibMatplotlib是一個用於創建二維圖和圖形的底層庫。藉由它的幫助,你可以構建各種不同的圖標,從直方圖和散點圖到費笛卡爾坐標圖。
  • ​數據可視化 | 6個基本可視化Python庫
    數據可視化是使用可視元素(例如圖表,圖形等)表示數據的過程,有助於從數據中獲取有意義的見解。它旨在揭示數據背後的信息,並進一步幫助查看者查看數據中的結構。數據可視化將使任何人只要對數據科學的了解最少,即可獲得科學發現,並幫助人們輕鬆地交流信息。畢竟,一張圖片勝過千言萬語。在本文中我們將介紹一些Python支持的最出色的可視化庫。
  • 數據分析從業者必看,10 個加速 python 數據分析的簡單的小技巧
    數據科學愛好者 Parul Pandey 在近日發表了一篇博文,分享了在數據科學中非常實用的 10 個小技巧。雷鋒網(公眾號:雷鋒網) AI 科技評論將他的文章編譯整理如下。有時候,一點小小的黑客行為可以節省時間,挽救生命。一個小小的快捷方式或附加組件有時會被證明是天賜之物,並且可以真正提高生產力。
  • 2020年最流行的十個Python庫(上)
    Python是最著名的程式語言之一,由於它最簡單的語法結構而受到開發人員的青睞,更隨著近年來它在人工智慧和機器學習領域中正變得越來越重要。Python之所以強大,還因為它擁有大量的庫,這使得python滲透於任何類型的開發,藉助python可以進行網絡開發,腳本編寫,遊戲開發,數據科學等工作。
  • Python常用庫大全
    pathlib – (Python3.4+ 標準庫)跨平臺的、面向對象的路徑操作庫。 python-magic- 文件類型檢測的第三方庫 libmagic 的 Python 接口。 python-nameparser – 把一個人名分解為幾個獨立的部分。 python-user-agents – 瀏覽器 user agent 解析器。 sqlparse – 一個無驗證的 SQL 解析器。