當前位置:
首頁 > 新聞 > 面向數據科學和AI的開發庫推薦:Python、R各7個

面向數據科學和AI的開發庫推薦:Python、R各7個

雷鋒網 AI 科技評論按:本文作者 Favio Vázquez 是一位數據科學家、物理學家和計算機工程師,他從 2018 年初開始寫作並發布《數據科學和人工智慧每周文摘:Python & R》系列文章,為數據科學家介紹,能真正幫助他們更好地完成各項任務的最好的開發庫、開源項目、安裝包以及工具。隨著一年結束,Favio Vázquez 也應讀者需要,從該系列文章中盤點出了 Python/R 語言 7 大開發庫。雷鋒網 AI 科技評論編譯如下。

前言

如果你一直都有關注我,你就會知道今年我開始寫作《數據科學和 AI 每周治摘要:Python & R》(Weekly Digest for Data Science and AI: Python & R)系列文章,在這些文章中,我列出了能幫助我們數據科學家更好地完成各類任務的最好的開發庫、開源項目、安裝包以及工具。

Heartbeat(https://heartbeat.fritz.ai/)上的大量用戶對這些摘要給予了支持,並且他們還建議我從這些摘要中挑選出那些真正改變或改善了我們這一年的工作方式的開發庫,創建一份「最最好」的開發庫榜單。

如果你想要閱讀之前的摘要,可以前往以下地址進行查看:


https://www.getrevue.co/profile/favio

免責聲明:此清單基於我在個人文章中復盤的開發庫和安裝包,它們在某種程度上適用於程序員、數據科學家以及人工智慧愛好者,其中一些是在 2018 年之前創建的,但是如果它們依舊具有趨勢性,也同樣可以被考慮使用。

面向 R 語言的 TOP 7 開發庫

面向數據科學和AI的開發庫推薦:Python、R各7個

7. AdaNet—提供學習保證的快速、靈活的 AutoML


開源地址:https://github.com/tensorflow/adanet

面向數據科學和AI的開發庫推薦:Python、R各7個

AdaNet 是一個輕量級的、可擴展的 TensorFlow AutoML 框架,可使用 AdaNet 演算法(點擊查看相關論文:AdaNet: Adaptive Structural Learning of Artificial Neural Networks,https://arxiv.org/abs/1607.01097)來訓練和部署自適用神經網路。AdaNet 集成了多個學習的子網,來降低設計有效的神經網路的固有的複雜度。

這個安裝包可以幫助你選擇最優的神經網路架構,實現自適用演算法,來將神經架構當做子網的集成進行學習。

你使用這個包之前先要對 TensorFlow 有所了解,因為它實現了 TensorFlow Estimator 介面。然後它可以通過封裝訓練、評估、預測和服務導出來幫助簡化機器學習編程。

你可以創建一個神經網路的集成,然後這個開發庫可以幫助優化你的訓練目標——讓這個集成模型在訓練集上的表現和它泛化到未見過的數據之間的能力兩者之間取得平衡。

6. TPOT—使用遺傳編程優化機器學習工作流的自動 Python 機器學習工具

開源地址:https://github.com/EpistasisLab/tpot

面向數據科學和AI的開發庫推薦:Python、R各7個

在之前的一篇摘要中(https://heartbeat.fritz.ai/weekly-digest-for-data-science-and-ai-python-and-r-volume-6-830ed997cf07),我談到過 Python 領域面向自動機器學習的一個很好的開發庫——Auto-Keras。現在我要談談針對自動機器學習的另一個很有趣的工具。

這個工具叫做基於樹表示的工作流優化(Tree-based Pipeline Optimization Tool,TPOT),它是一個非常棒的開發庫。它基本上是一個 Python 自動機器學習工具,使用遺傳編程來優化機器學習工作流。

面向數據科學和AI的開發庫推薦:Python、R各7個

TPOT 可以實現特徵選擇、模型選擇、特徵構建等大量任務的自動化。幸運的是,如果你是一位 Python 機器學習者,TPOT 生成的所有代碼都是你比較熟悉的——因為其創建在 Scikit-learn 之上。

它所做的就是通過智能地探索數千種可能的工作流,來為數據找到最好的那個,從而將機器學習最冗長的部分自動化,之後,它會為其所找到的最好的工作流生成 Python 代碼,然後接下來你就可以對工作流進行修補了。

它的工作方式如下:

面向數據科學和AI的開發庫推薦:Python、R各7個

關於 TPOT 的更多細節,你可以閱讀其他作者所寫的這一系列文章:

  • Matthew Mayo,https://www.kdnuggets.com/2018/01/managing-machine-learning-workflows-scikit-learn-pipelines-part-4.html

  • Randy Olson,https://www.kdnuggets.com/2016/05/tpot-python-automating-data-science.html

5.SHAP——解釋機器學習模型輸出的統一方法


開源地址:https://github.com/slundberg/shap

面向數據科學和AI的開發庫推薦:Python、R各7個

解釋機器學習模型往往並不容易,但它對於一系列的商業應用卻非常重要。幸運的是,現在有一些很好的開發庫可以幫助解釋機器學習模型。在許多應用中,我們需要了解、理解或者驗證怎樣在模型中使用輸入變數,以及輸入變數怎樣影響最終的模型預測。

SHAP (SHapley Additive exPlanations) 是解釋機器學習模型輸出的統一方法,它將博弈論和局部解釋關聯起來,並將之前的一些方法進行了統一,然後基於解釋,表示唯一可能的一致的、局部精確的加性特徵屬性方法。

可前往以下地址閱讀更多 SHAP 相關信息:


https://github.com/slundberg/shap#sample-notebooks

4.Optimus——使用 Python 、Spark 即可輕易製作的敏捷的數據科學工作流

開源地址 :https://github.com/ironmussa/Optimus

坦誠地說,Optimus 這個開發庫就像是我自己的孩子。現在為止,我已經花了很長時間來開發這個庫,非常高興能向大家展示 Optimus 的第二個版本。

Optimus V2 專門針對簡化數據清洗而開發,它的 API 設計對於新手來說非常簡單,之前使用 pandas 的開發者也會對其非常熟悉。Optimus 擴展了 Spark DataFrame 的功能,為其增加了.rows 和.cols 的屬性。

由於 Optimus 的後端可以使用 Spark、TensorFlow 以及 Keras,你可以使用 Optimus 來清洗、準備以及分析數據,創建配置文件和圖表,並運行機器學習、深度學習,而且所有這一切都是可以分散式運行的。

對於我們來說,Optimus 非常易於使用。它就像是帶著點 dplyr 特色的、由 Keras 和 Spark 連接起來的 pandas 的進化版本。你使用 Optimus 創建的代碼可以在你的本地機器上工作,同時只要簡單改下命令,這個代碼就可以在本地集群或者雲端上運行。

為了幫助數據科學周期的每一個步驟,我為 Optimus 開發了大量有趣的功能。

作為數據科學敏捷方法的配套開發庫,Optimus 可以說是完美的,因為它幾乎能為數據處理過程中的每一步驟提供幫助,並且它可以輕易地與其他的開發庫和工具連接起來。

如果你想要閱讀更多關於敏捷方法的信息,可前往以下地址查看:


https://www.business-science.io/business/2018/08/21/agile-business-science-problem-framework.html

3.spaCy——結合 Python 和 Cython 使用的工業級的自然語言處理開發庫

項目地址:https://spacy.io/

面向數據科學和AI的開發庫推薦:Python、R各7個

spaCy 針對幫助開發者完成真實產品開發、真實意見收集等實際工作而設計,它會最大程度地幫助你節約時間。該開發庫易於安裝,並且它的 API 非常簡單和高效。我們喜歡將 spaCy 比作自然語言處理軌道上的「紅寶石」(Ruby)。

spaCy 是為深度學習準備文本的最佳方式,它可以與 TensorFlow、 PyTorch、Scikit-learn、 Gensim 以及 Python 良好 AI 生態系統中的其他開發庫無縫地互操作。你可以使用 spaCy,輕易地為各類 NLP 問題構建語言複雜的統計模型。

2.jupytext——相當於 Markdown 文檔、Julia、Python 或者 R scripts 的 Jupyter notebooks


開源地址:https://github.com/mwouts/jupytext

面向數據科學和AI的開發庫推薦:Python、R各7個

對於我來說,jupytext 是年度最佳安裝包之一,它對於我們數據科學家的工作非常重要。基本上,我們所有人都在 Jupyter 等類型的 notebook 上工作,但是我們也會使用 PyCharm 等 IDE 來完成項目更核心的部分。

現在的好消息是,在使用 jupytext 時,可以讓你在最愛的 IDE 中擬草稿和測試的普通的腳本,會一目了然地以 Jupyter notebooks 的格式打開。在 Jupyter 中運行 notebook,可以生成輸出,聯合 .ipynb 表示,同時或者以普通的腳本或者以傳統的 Jupyter notebook 的輸出形式,來保存和分享你的研究工作。

下面的動圖就展示了可以用這個包做的各種事情的工作流:

面向數據科學和AI的開發庫推薦:Python、R各7個

1.Charify—讓數據科學家更容易創建圖表的 Python 開發庫


開源地址:https://github.com/chartify/chartify

面向數據科學和AI的開發庫推薦:Python、R各7個

對於我來說,Chartify 是今年面向 Python 的開發庫中排名第一的開發庫。如果你從事 Python 相關工作,你可能要耗費大量的時間在嘗試創建合適的圖表上。幸運地是,我們有類似 Seaborn 這樣的開發庫可以讓我們的工作變得更簡單,但是它們的問題在於其圖表不是動態的。之後,我們又有了 Bokeh 這樣非常棒的開發庫,但是用它創建互動式的圖表是一件非常蛋疼的事情。如果你想知道更多關於 Bokeh 和針對數據科學的交互性圖表,可以閱讀 William Koehrsen 寫的這些優秀的文章:


  • https://towardsdatascience.com/data-visualization-with-bokeh-in-python-part-one-getting-started-a11655a467d4

  • https://towardsdatascience.com/data-visualization-with-bokeh-in-python-part-ii-interactions-a4cf994e2512

  • https://towardsdatascience.com/data-visualization-with-bokeh-in-python-part-ii-interactions-a4cf994e2512

Chartify 創建於 Bokeh 之上,不過它要比使用 Bokeh 創建交互性圖表簡單得多。來自 Chartify 作者自己的介紹:


為什麼使用 Chartify?

  • 一致的輸入數據格式:花費更少的時間轉換數據格式就能開始在圖表上處理數據,所有的圖表函數都使用一致的、有條理的輸入數據的格式。

  • 智能的默認樣式:只需要很少的用戶自定義操作就可以創建好看的圖表。

  • 簡單的 API:我們試圖讓 API 儘可能地直觀易學。

  • 靈活性:Chartify 創建於 Bokeh 之上,所以如果你需要進行更多控制操作,你可以依靠 Bokeh 的 API。

面向 R 語言的 TOP 7 開發庫

面向數據科學和AI的開發庫推薦:Python、R各7個

7.infer—面向友好型 tidyverse 統計推斷的 R 語言安裝包


開源地址:https://github.com/tidymodels/infer

面向數據科學和AI的開發庫推薦:Python、R各7個

推斷或者統計推斷是使用數據分析來推斷潛在概率分布的性質的過程。infer 這個安裝包的目標是,使用與 tidyverse 設計框架保持一致的表達統計語法來執行統計推斷。

如果你想要閱讀更多關於 infer 的信息,可前往以下地址查看:

https://infer.netlify.com/index.html

6. janitor—用 R 語言進行數據清洗的簡單工具


開源地址:https://github.com/sfirke/janitor

數據清洗是跟我關係緊密的領域。一直以來,我都在與我在 Iron-AI(https://iron-ai.com/)的團隊一起開發一項面向 Python 語言的工具——Optimus,你可以在這裡(https://hioptimus.com/)查看更多關於 Optimus 的信息。

不過,我現在給你展示的工具,是一個使用簡單函數就能進行數據清洗的很厲害的工具——janitor。

它主要有三個主要的功能:


  • 完美地對 data.frame 列名進行格式化

  • 創建和格式化一個、兩個或者三個變數的頻率表,如一個優化的 table ;以及

  • 隔離部分重複的記錄

同時,它也是一個面向 tidyverse(https://github.com/tidyverse/tidyverse/blob/master/vignettes/manifesto.Rmd)的安裝包。特別地,它在與 %>% 管道一起執行的時候表現很好,並且為通過 readr(https://github.com/tidyverse/readr)和 readxl(https://github.com/tidyverse/readxl)兩個包引入的數據的清洗做過優化。

5.Esquisse——使用 ggplot2 製作圖表的 RStudio 插件


開源地址:https://github.com/dreamRs/esquisse

面向數據科學和AI的開發庫推薦:Python、R各7個

這個插件讓你可以通過使用 ggplot2 安裝包將數據可視化,來交互地搜索這些數據。它可以讓你繪製條形圖、曲線、散點圖和柱狀圖,然後輸出圖表或者檢索到代碼來生成圖表。

4.DataExplorer—自動數據檢索和處理工具


開源地址:https://github.com/boxuancui/DataExplorer

面向數據科學和AI的開發庫推薦:Python、R各7個

探索性數據分析 (Exploratory Data Analysis,EDA,https://en.wikipedia.org/wiki/Exploratory_data_analysis)是創建數據分析/預測模型的關鍵階段。在這個過程中,分析師/建模師會先瀏覽一下數據,然後做出一些相關的假設並決定下一步驟。然而,EDA 這一過程有時候會很麻煩。DataExplorer 這個 R 語言安裝包旨在將大部數據處理和可視化實現自動化,從而讓用戶可以專註在研究數據和提取觀點上。

如果你想要閱讀更多關於 DataExplorer 的信息,可前往以下地址查看:


https://boxuancui.github.io/DataExplorer/articles/dataexplorer-intro.html

3.Sparklyr—面向 Apache Spark 的 R 介面


開源地址:https://github.com/rstudio/sparklyr

面向數據科學和AI的開發庫推薦:Python、R各7個

Sparklyr 有以下幾項功能:


  • 實現 R 和 Spark(http://spark.apache.org/)的連接。Sparklyr 安裝包提供了一個完整的 dplyr(https://github.com/tidyverse/dplyr)後端。

  • 篩選和聚合 Spark 數據集,然後將它們帶入到 R 中進行分析和實現可視化。

  • 使用 Spark 的 MLlib 機器學習開發庫(http://spark.apache.org/docs/latest/mllib-guide.html)在 R 中執行分散式機器學習演算法。

  • 創建一個用於調用 Spark API 的擴展(http://spark.rstudio.com/extensions.html),並為 Spark 的安裝包提供了一個介面。

如果你想要閱讀更多關於 Sparklyr 的信息,可前往以下地址查看:


https://spark.rstudio.com/mlib/

2.Drake—針對復現性、高性能計算的以 R 語言為中心的工作流工具包


開源地址:https://github.com/ropensci/drake

面向數據科學和AI的開發庫推薦:Python、R各7個

Drake 編程項目

配圖文字:(Drake是如何做程序員的:不喜歡真的編程,但是完全可以花30分鐘和別人爭論這個變數要起什麼名字)

開玩笑的,不過這個安裝包的名字真的就叫 Drake!

面向數據科學和AI的開發庫推薦:Python、R各7個

Drake 是一個非常棒的包,我之後將會發布一篇詳細介紹它的文章,敬請期待!

Drake 是一個用在數據驅動任務中的通用的工作流管理工具。當中間的數據目標的依賴性發生改變時,它可以對這些中間的數據目標進行重建,同時,當結果出爐時,它會跳過這項工作。

此外,並不是每一個完整的工作都從數據抓取開始,而完整的工作流都可以切實表示出它們是具有復現性的。

可復現性、好的管理以及跟蹤實驗對於輕易地檢測其他的工作和分析來說,都是必需的。在數據科學領域,Drake 是十分重要的,你可以前往以下地址閱讀更多關於該工具包的信息:

Zach Scott:


  • https://towardsdatascience.com/data-sciences-reproducibility-crisis-b87792d88513

  • https://towardsdatascience.com/toward-reproducibility-balancing-privacy-and-publication-77fee2366eee

以及我所寫的一篇文章:


https://towardsdatascience.com/manage-your-machine-learning-lifecycle-with-mlflow-part-1-a7252c859f72

Drake 可以幫助你實現自動地:


1. 開始處理與此前相比發生了改變的部分;

2. 跳過剩餘的工作。

1.DALEX—描述性機器學習解釋(Descriptive mAchine Learning EXplanations)


開源地址:https://github.com/pbiecek/DALEX

面向數據科學和AI的開發庫推薦:Python、R各7個

解釋機器學習模型往往並不容易,不過,它對於一系列的商業應用非常重要。幸運的是,現在有一些很好的開發庫可以幫助解釋機器學習模型。


https://github.com/thomasp85/lime

(順便一提,有時候,使用 ggplot 進行簡單的可視化可以幫助你更好地解釋模型。對此,Matthew Mayo 在其所寫的文章中進行了很好的介紹:https://www.kdnuggets.com/2017/11/interpreting-machine-learning-models-overview.html)

在許多應用中,我們需要了解、理解或者驗證怎樣在模型中使用輸入變數,以及輸入變數怎樣影響最終的模型預測。DALEX 是幫助解釋複雜模型是怎樣工作的一套工具。

via:https://heartbeat.fritz.ai/top-7-libraries-and-packages-of-the-year-for-data-science-and-ai-python-r-6b7cca2bf000?gi=27d5c4b5f4ef,雷鋒網 AI 科技評論編譯。

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

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


請您繼續閱讀更多來自 雷鋒網 的精彩文章:

這些人工智慧頂級會議明年移師中國!不出國門也能「華山論劍」
NeurIPS 2017 論文 2018 年引用量排名揭曉,這裡是排名前三的論文解讀

TAG:雷鋒網 |