0
本文作者: 叢末 | 2019-01-10 17:00 |
雷鋒網(wǎng) AI 科技評論按:本文作者 Favio Vázquez 是一位數(shù)據(jù)科學(xué)家、物理學(xué)家和計(jì)算機(jī)工程師,他從 2018 年初開始寫作并發(fā)布《數(shù)據(jù)科學(xué)和人工智能每周文摘:Python & R》系列文章,為數(shù)據(jù)科學(xué)家介紹,能真正幫助他們更好地完成各項(xiàng)任務(wù)的最好的開發(fā)庫、開源項(xiàng)目、安裝包以及工具。隨著一年結(jié)束,F(xiàn)avio Vázquez 也應(yīng)讀者需要,從該系列文章中盤點(diǎn)出了 Python/R 語言 7 大開發(fā)庫。雷鋒網(wǎng) AI 科技評論編譯如下。
如果你一直都有關(guān)注我,你就會(huì)知道今年我開始寫作《數(shù)據(jù)科學(xué)和 AI 每周治摘要:Python & R》(Weekly Digest for Data Science and AI: Python & R)系列文章,在這些文章中,我列出了能幫助我們數(shù)據(jù)科學(xué)家更好地完成各類任務(wù)的最好的開發(fā)庫、開源項(xiàng)目、安裝包以及工具。
Heartbeat(https://heartbeat.fritz.ai/)上的大量用戶對這些摘要給予了支持,并且他們還建議我從這些摘要中挑選出那些真正改變或改善了我們這一年的工作方式的開發(fā)庫,創(chuàng)建一份「最最好」的開發(fā)庫榜單。
如果你想要閱讀之前的摘要,可以前往以下地址進(jìn)行查看:
免責(zé)聲明:此清單基于我在個(gè)人文章中復(fù)盤的開發(fā)庫和安裝包,它們在某種程度上適用于程序員、數(shù)據(jù)科學(xué)家以及人工智能愛好者,其中一些是在 2018 年之前創(chuàng)建的,但是如果它們依舊具有趨勢性,也同樣可以被考慮使用。
7. AdaNet—提供學(xué)習(xí)保證的快速、靈活的 AutoML
AdaNet 是一個(gè)輕量級的、可擴(kuò)展的 TensorFlow AutoML 框架,可使用 AdaNet 算法(點(diǎn)擊查看相關(guān)論文:AdaNet: Adaptive Structural Learning of Artificial Neural Networks,https://arxiv.org/abs/1607.01097)來訓(xùn)練和部署自適用神經(jīng)網(wǎng)絡(luò)。AdaNet 集成了多個(gè)學(xué)習(xí)的子網(wǎng),來降低設(shè)計(jì)有效的神經(jīng)網(wǎng)絡(luò)的固有的復(fù)雜度。
這個(gè)安裝包可以幫助你選擇最優(yōu)的神經(jīng)網(wǎng)絡(luò)架構(gòu),實(shí)現(xiàn)自適用算法,來將神經(jīng)架構(gòu)當(dāng)做子網(wǎng)的集成進(jìn)行學(xué)習(xí)。
你使用這個(gè)包之前先要對 TensorFlow 有所了解,因?yàn)樗鼘?shí)現(xiàn)了 TensorFlow Estimator 接口。然后它可以通過封裝訓(xùn)練、評估、預(yù)測和服務(wù)導(dǎo)出來幫助簡化機(jī)器學(xué)習(xí)編程。
你可以創(chuàng)建一個(gè)神經(jīng)網(wǎng)絡(luò)的集成,然后這個(gè)開發(fā)庫可以幫助優(yōu)化你的訓(xùn)練目標(biāo)——讓這個(gè)集成模型在訓(xùn)練集上的表現(xiàn)和它泛化到未見過的數(shù)據(jù)之間的能力兩者之間取得平衡。
6. TPOT—使用遺傳編程優(yōu)化機(jī)器學(xué)習(xí)工作流的自動(dòng) Python 機(jī)器學(xué)習(xí)工具
在之前的一篇摘要中(https://heartbeat.fritz.ai/weekly-digest-for-data-science-and-ai-python-and-r-volume-6-830ed997cf07),我談到過 Python 領(lǐng)域面向自動(dòng)機(jī)器學(xué)習(xí)的一個(gè)很好的開發(fā)庫——Auto-Keras?,F(xiàn)在我要談?wù)勧槍ψ詣?dòng)機(jī)器學(xué)習(xí)的另一個(gè)很有趣的工具。
這個(gè)工具叫做基于樹表示的工作流優(yōu)化(Tree-based Pipeline Optimization Tool,TPOT),它是一個(gè)非常棒的開發(fā)庫。它基本上是一個(gè) Python 自動(dòng)機(jī)器學(xué)習(xí)工具,使用遺傳編程來優(yōu)化機(jī)器學(xué)習(xí)工作流。
TPOT 可以實(shí)現(xiàn)特征選擇、模型選擇、特征構(gòu)建等大量任務(wù)的自動(dòng)化。幸運(yùn)的是,如果你是一位 Python 機(jī)器學(xué)習(xí)者,TPOT 生成的所有代碼都是你比較熟悉的——因?yàn)槠鋭?chuàng)建在 Scikit-learn 之上。
它所做的就是通過智能地探索數(shù)千種可能的工作流,來為數(shù)據(jù)找到最好的那個(gè),從而將機(jī)器學(xué)習(xí)最冗長的部分自動(dòng)化,之后,它會(huì)為其所找到的最好的工作流生成 Python 代碼,然后接下來你就可以對工作流進(jìn)行修補(bǔ)了。
它的工作方式如下:
關(guān)于 TPOT 的更多細(xì)節(jié),你可以閱讀其他作者所寫的這一系列文章:
5.SHAP——解釋機(jī)器學(xué)習(xí)模型輸出的統(tǒng)一方法
解釋機(jī)器學(xué)習(xí)模型往往并不容易,但它對于一系列的商業(yè)應(yīng)用卻非常重要。幸運(yùn)的是,現(xiàn)在有一些很好的開發(fā)庫可以幫助解釋機(jī)器學(xué)習(xí)模型。在許多應(yīng)用中,我們需要了解、理解或者驗(yàn)證怎樣在模型中使用輸入變量,以及輸入變量怎樣影響最終的模型預(yù)測。
SHAP (SHapley Additive exPlanations) 是解釋機(jī)器學(xué)習(xí)模型輸出的統(tǒng)一方法,它將博弈論和局部解釋關(guān)聯(lián)起來,并將之前的一些方法進(jìn)行了統(tǒng)一,然后基于解釋,表示唯一可能的一致的、局部精確的加性特征屬性方法。
可前往以下地址閱讀更多 SHAP 相關(guān)信息:
4.Optimus——使用 Python 、Spark 即可輕易制作的敏捷的數(shù)據(jù)科學(xué)工作流
坦誠地說,Optimus 這個(gè)開發(fā)庫就像是我自己的孩子。現(xiàn)在為止,我已經(jīng)花了很長時(shí)間來開發(fā)這個(gè)庫,非常高興能向大家展示 Optimus 的第二個(gè)版本。
Optimus V2 專門針對簡化數(shù)據(jù)清洗而開發(fā),它的 API 設(shè)計(jì)對于新手來說非常簡單,之前使用 pandas 的開發(fā)者也會(huì)對其非常熟悉。Optimus 擴(kuò)展了 Spark DataFrame 的功能,為其增加了.rows 和.cols 的屬性。
由于 Optimus 的后端可以使用 Spark、TensorFlow 以及 Keras,你可以使用 Optimus 來清洗、準(zhǔn)備以及分析數(shù)據(jù),創(chuàng)建配置文件和圖表,并運(yùn)行機(jī)器學(xué)習(xí)、深度學(xué)習(xí),而且所有這一切都是可以分布式運(yùn)行的。
對于我們來說,Optimus 非常易于使用。它就像是帶著點(diǎn) dplyr 特色的、由 Keras 和 Spark 連接起來的 pandas 的進(jìn)化版本。你使用 Optimus 創(chuàng)建的代碼可以在你的本地機(jī)器上工作,同時(shí)只要簡單改下命令,這個(gè)代碼就可以在本地集群或者云端上運(yùn)行。
為了幫助數(shù)據(jù)科學(xué)周期的每一個(gè)步驟,我為 Optimus 開發(fā)了大量有趣的功能。
作為數(shù)據(jù)科學(xué)敏捷方法的配套開發(fā)庫,Optimus 可以說是完美的,因?yàn)樗鼛缀跄転閿?shù)據(jù)處理過程中的每一步驟提供幫助,并且它可以輕易地與其他的開發(fā)庫和工具連接起來。
如果你想要閱讀更多關(guān)于敏捷方法的信息,可前往以下地址查看:
https://www.business-science.io/business/2018/08/21/agile-business-science-problem-framework.html
3.spaCy——結(jié)合 Python 和 Cython 使用的工業(yè)級的自然語言處理開發(fā)庫
項(xiàng)目地址:https://spacy.io/
spaCy 針對幫助開發(fā)者完成真實(shí)產(chǎn)品開發(fā)、真實(shí)意見收集等實(shí)際工作而設(shè)計(jì),它會(huì)最大程度地幫助你節(jié)約時(shí)間。該開發(fā)庫易于安裝,并且它的 API 非常簡單和高效。我們喜歡將 spaCy 比作自然語言處理軌道上的「紅寶石」(Ruby)。
spaCy 是為深度學(xué)習(xí)準(zhǔn)備文本的最佳方式,它可以與 TensorFlow、 PyTorch、Scikit-learn、 Gensim 以及 Python 良好 AI 生態(tài)系統(tǒng)中的其他開發(fā)庫無縫地互操作。你可以使用 spaCy,輕易地為各類 NLP 問題構(gòu)建語言復(fù)雜的統(tǒng)計(jì)模型。
2.jupytext——相當(dāng)于 Markdown 文檔、Julia、Python 或者 R scripts 的 Jupyter notebooks
對于我來說,jupytext 是年度最佳安裝包之一,它對于我們數(shù)據(jù)科學(xué)家的工作非常重要?;旧希覀兯腥硕荚?Jupyter 等類型的 notebook 上工作,但是我們也會(huì)使用 PyCharm 等 IDE 來完成項(xiàng)目更核心的部分。
現(xiàn)在的好消息是,在使用 jupytext 時(shí),可以讓你在最愛的 IDE 中擬草稿和測試的普通的腳本,會(huì)一目了然地以 Jupyter notebooks 的格式打開。在 Jupyter 中運(yùn)行 notebook,可以生成輸出,聯(lián)合 .ipynb 表示,同時(shí)或者以普通的腳本或者以傳統(tǒng)的 Jupyter notebook 的輸出形式,來保存和分享你的研究工作。
下面的動(dòng)圖就展示了可以用這個(gè)包做的各種事情的工作流:
1.Charify—讓數(shù)據(jù)科學(xué)家更容易創(chuàng)建圖表的 Python 開發(fā)庫
對于我來說,Chartify 是今年面向 Python 的開發(fā)庫中排名第一的開發(fā)庫。如果你從事 Python 相關(guān)工作,你可能要耗費(fèi)大量的時(shí)間在嘗試創(chuàng)建合適的圖表上。幸運(yùn)地是,我們有類似 Seaborn 這樣的開發(fā)庫可以讓我們的工作變得更簡單,但是它們的問題在于其圖表不是動(dòng)態(tài)的。之后,我們又有了 Bokeh 這樣非常棒的開發(fā)庫,但是用它創(chuàng)建交互式的圖表是一件非常蛋疼的事情。如果你想知道更多關(guān)于 Bokeh 和針對數(shù)據(jù)科學(xué)的交互性圖表,可以閱讀 William Koehrsen 寫的這些優(yōu)秀的文章:
Chartify 創(chuàng)建于 Bokeh 之上,不過它要比使用 Bokeh 創(chuàng)建交互性圖表簡單得多。來自 Chartify 作者自己的介紹:
為什么使用 Chartify?
一致的輸入數(shù)據(jù)格式:花費(fèi)更少的時(shí)間轉(zhuǎn)換數(shù)據(jù)格式就能開始在圖表上處理數(shù)據(jù),所有的圖表函數(shù)都使用一致的、有條理的輸入數(shù)據(jù)的格式。
智能的默認(rèn)樣式:只需要很少的用戶自定義操作就可以創(chuàng)建好看的圖表。
簡單的 API:我們試圖讓 API 盡可能地直觀易學(xué)。
靈活性:Chartify 創(chuàng)建于 Bokeh 之上,所以如果你需要進(jìn)行更多控制操作,你可以依靠 Bokeh 的 API。
7.infer—面向友好型 tidyverse 統(tǒng)計(jì)推斷的 R 語言安裝包
推斷或者統(tǒng)計(jì)推斷是使用數(shù)據(jù)分析來推斷潛在概率分布的性質(zhì)的過程。infer 這個(gè)安裝包的目標(biāo)是,使用與 tidyverse 設(shè)計(jì)框架保持一致的表達(dá)統(tǒng)計(jì)語法來執(zhí)行統(tǒng)計(jì)推斷。
如果你想要閱讀更多關(guān)于 infer 的信息,可前往以下地址查看:
6. janitor—用 R 語言進(jìn)行數(shù)據(jù)清洗的簡單工具
數(shù)據(jù)清洗是跟我關(guān)系緊密的領(lǐng)域。一直以來,我都在與我在 Iron-AI(https://iron-ai.com/)的團(tuán)隊(duì)一起開發(fā)一項(xiàng)面向 Python 語言的工具——Optimus,你可以在這里(https://hioptimus.com/)查看更多關(guān)于 Optimus 的信息。
不過,我現(xiàn)在給你展示的工具,是一個(gè)使用簡單函數(shù)就能進(jìn)行數(shù)據(jù)清洗的很厲害的工具——janitor。
它主要有三個(gè)主要的功能:
完美地對 data.frame 列名進(jìn)行格式化
創(chuàng)建和格式化一個(gè)、兩個(gè)或者三個(gè)變量的頻率表,如一個(gè)優(yōu)化的 table() ;以及
隔離部分重復(fù)的記錄
同時(shí),它也是一個(gè)面向 tidyverse(https://github.com/tidyverse/tidyverse/blob/master/vignettes/manifesto.Rmd)的安裝包。特別地,它在與 %>% 管道一起執(zhí)行的時(shí)候表現(xiàn)很好,并且為通過 readr(https://github.com/tidyverse/readr)和 readxl(https://github.com/tidyverse/readxl)兩個(gè)包引入的數(shù)據(jù)的清洗做過優(yōu)化。
5.Esquisse——使用 ggplot2 制作圖表的 RStudio 插件
這個(gè)插件讓你可以通過使用 ggplot2 安裝包將數(shù)據(jù)可視化,來交互地搜索這些數(shù)據(jù)。它可以讓你繪制條形圖、曲線、散點(diǎn)圖和柱狀圖,然后輸出圖表或者檢索到代碼來生成圖表。
4.DataExplorer—自動(dòng)數(shù)據(jù)檢索和處理工具
探索性數(shù)據(jù)分析 (Exploratory Data Analysis,EDA,https://en.wikipedia.org/wiki/Exploratory_data_analysis)是創(chuàng)建數(shù)據(jù)分析/預(yù)測模型的關(guān)鍵階段。在這個(gè)過程中,分析師/建模師會(huì)先瀏覽一下數(shù)據(jù),然后做出一些相關(guān)的假設(shè)并決定下一步驟。然而,EDA 這一過程有時(shí)候會(huì)很麻煩。DataExplorer 這個(gè) R 語言安裝包旨在將大部數(shù)據(jù)處理和可視化實(shí)現(xiàn)自動(dòng)化,從而讓用戶可以專注在研究數(shù)據(jù)和提取觀點(diǎn)上。
如果你想要閱讀更多關(guān)于 DataExplorer 的信息,可前往以下地址查看:
https://boxuancui.github.io/DataExplorer/articles/dataexplorer-intro.html
3.Sparklyr—面向 Apache Spark 的 R 接口
Sparklyr 有以下幾項(xiàng)功能:
實(shí)現(xiàn) R 和 Spark(http://spark.apache.org/)的連接。Sparklyr 安裝包提供了一個(gè)完整的 dplyr(https://github.com/tidyverse/dplyr)后端。
篩選和聚合 Spark 數(shù)據(jù)集,然后將它們帶入到 R 中進(jìn)行分析和實(shí)現(xiàn)可視化。
使用 Spark 的 MLlib 機(jī)器學(xué)習(xí)開發(fā)庫(http://spark.apache.org/docs/latest/mllib-guide.html)在 R 中執(zhí)行分布式機(jī)器學(xué)習(xí)算法。
創(chuàng)建一個(gè)用于調(diào)用 Spark API 的擴(kuò)展(http://spark.rstudio.com/extensions.html),并為 Spark 的安裝包提供了一個(gè)接口。
如果你想要閱讀更多關(guān)于 Sparklyr 的信息,可前往以下地址查看:
2.Drake—針對復(fù)現(xiàn)性、高性能計(jì)算的以 R 語言為中心的工作流工具包
Drake 編程項(xiàng)目
配圖文字:(Drake是如何做程序員的:不喜歡真的編程,但是完全可以花30分鐘和別人爭論這個(gè)變量要起什么名字)
開玩笑的,不過這個(gè)安裝包的名字真的就叫 Drake!
Drake 是一個(gè)非常棒的包,我之后將會(huì)發(fā)布一篇詳細(xì)介紹它的文章,敬請期待!
Drake 是一個(gè)用在數(shù)據(jù)驅(qū)動(dòng)任務(wù)中的通用的工作流管理工具。當(dāng)中間的數(shù)據(jù)目標(biāo)的依賴性發(fā)生改變時(shí),它可以對這些中間的數(shù)據(jù)目標(biāo)進(jìn)行重建,同時(shí),當(dāng)結(jié)果出爐時(shí),它會(huì)跳過這項(xiàng)工作。
此外,并不是每一個(gè)完整的工作都從數(shù)據(jù)抓取開始,而完整的工作流都可以切實(shí)表示出它們是具有復(fù)現(xiàn)性的。
可復(fù)現(xiàn)性、好的管理以及跟蹤實(shí)驗(yàn)對于輕易地檢測其他的工作和分析來說,都是必需的。在數(shù)據(jù)科學(xué)領(lǐng)域,Drake 是十分重要的,你可以前往以下地址閱讀更多關(guān)于該工具包的信息:
Zach Scott:
以及我所寫的一篇文章:
Drake 可以幫助你實(shí)現(xiàn)自動(dòng)地:
1. 開始處理與此前相比發(fā)生了改變的部分;
2. 跳過剩余的工作。
1.DALEX—描述性機(jī)器學(xué)習(xí)解釋(Descriptive mAchine Learning EXplanations)
解釋機(jī)器學(xué)習(xí)模型往往并不容易,不過,它對于一系列的商業(yè)應(yīng)用非常重要。幸運(yùn)的是,現(xiàn)在有一些很好的開發(fā)庫可以幫助解釋機(jī)器學(xué)習(xí)模型。
(順便一提,有時(shí)候,使用 ggplot 進(jìn)行簡單的可視化可以幫助你更好地解釋模型。對此,Matthew Mayo 在其所寫的文章中進(jìn)行了很好的介紹:https://www.kdnuggets.com/2017/11/interpreting-machine-learning-models-overview.html)
在許多應(yīng)用中,我們需要了解、理解或者驗(yàn)證怎樣在模型中使用輸入變量,以及輸入變量怎樣影響最終的模型預(yù)測。DALEX 是幫助解釋復(fù)雜模型是怎樣工作的一套工具。
via:https://heartbeat.fritz.ai/top-7-libraries-and-packages-of-the-year-for-data-science-and-ai-python-r-6b7cca2bf000?gi=27d5c4b5f4ef,雷鋒網(wǎng) AI 科技評論編譯。
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。