9個鮮為人知的Python數(shù)據(jù)科學(xué)庫
除了 pandas、scikit-learn 和 matplotlib,還要學(xué)習(xí)一些用 Python 進(jìn)行數(shù)據(jù)科學(xué)的新技巧。
Python 是一種令人驚嘆的語言。事實(shí)上,它是世界上增長最快的編程語言之一。它一次又一次地證明了它在各個行業(yè)的開發(fā)者和數(shù)據(jù)科學(xué)者中的作用。Python 及其庫的整個生態(tài)系統(tǒng)使其成為全世界用戶的恰當(dāng)選擇,無論是初學(xué)者還是高級用戶。它成功和受歡迎的原因之一是它的一組強(qiáng)大的庫,使它如此動態(tài)和快速。
在本文中,我們將看到 Python 庫中的一些數(shù)據(jù)科學(xué)工具,而不是那些常用的工具,如 pandas、scikit-learn 和 matplotlib。雖然像 pandas、scikit-learn 這樣的庫是機(jī)器學(xué)習(xí)中最常想到的,但是了解這個領(lǐng)域的其他 Python 庫也是非常有幫助的。
Wget
提取數(shù)據(jù),尤其是從網(wǎng)絡(luò)中提取數(shù)據(jù),是數(shù)據(jù)科學(xué)家的重要任務(wù)之一。Wget 是一個免費(fèi)的工具,用于從網(wǎng)絡(luò)上非交互式下載文件。它支持 HTTP、HTTPS 和 FTP 協(xié)議,以及通過 HTTP 代理進(jìn)行訪問。因?yàn)樗欠墙换ナ降模约词褂脩魶]有登錄,它也可以在后臺工作。所以下次你想下載一個網(wǎng)站或者網(wǎng)頁上的所有圖片,wget 會提供幫助。
安裝:
$ pip install wget
例子:
import wget
url = 'http://www.futurecrew.com/skaven/song_files/mp3/razorback.mp3'
filename = wget.download(url)
100% [................................................] 3841532 / 3841532
filename
'razorback.mp3'
鐘擺
對于在 Python 中處理日期時間感到沮喪的人來說, Pendulum 庫是很有幫助的。這是一個 Python 包,可以簡化日期時間操作。它是 Python 原生類的一個替代品。有關(guān)詳細(xì)信息,請參閱其文檔。
安裝:
$ pip install pendulum
例子:
import pendulum
dt_toronto = pendulum.datetime(2012, 1, 1, tz='America/Toronto')
dt_vancouver = pendulum.datetime(2012, 1, 1, tz='America/Vancouver')
print(dt_vancouver.diff(dt_toronto).in_hours())
3
不平衡學(xué)習(xí)
當(dāng)每個類別中的樣本數(shù)幾乎相同(即平衡)時,大多數(shù)分類算法會工作得***。但是現(xiàn)實(shí)生活中的案例中充滿了不平衡的數(shù)據(jù)集,這可能會影響到機(jī)器學(xué)習(xí)算法的學(xué)習(xí)和后續(xù)預(yù)測。幸運(yùn)的是,imbalanced-learn 庫就是為了解決這個問題而創(chuàng)建的。它與 scikit-learn 兼容,并且是 scikit-learn-contrib 項(xiàng)目的一部分。下次遇到不平衡的數(shù)據(jù)集時,可以嘗試一下。
安裝:
pip install -U imbalanced-learn
# or
conda install -c conda-forge imbalanced-learn
例子:
有關(guān)用法和示例,請參閱其文檔 。
FlashText
在自然語言處理(NLP)任務(wù)中清理文本數(shù)據(jù)通常需要替換句子中的關(guān)鍵詞或從句子中提取關(guān)鍵詞。通常,這種操作可以用正則表達(dá)式來完成,但是如果要搜索的術(shù)語數(shù)達(dá)到數(shù)千個,它們可能會變得很麻煩。
Python 的 FlashText 模塊,基于 FlashText 算法,為這種情況提供了一個合適的替代方案。FlashText 的***部分是運(yùn)行時間與搜索項(xiàng)的數(shù)量無關(guān)。你可以在其 文檔 中讀到更多關(guān)于它的信息。
安裝:
$ pip install flashtext
例子:
提取關(guān)鍵詞:
from flashtext import KeywordProcessor
keyword_processor = KeywordProcessor()
# keyword_processor.add_keyword(<unclean name>, <standardised name>)
keyword_processor.add_keyword('Big Apple', 'New York')
keyword_processor.add_keyword('Bay Area')
keywords_found = keyword_processor.extract_keywords('I love Big Apple and Bay Area.')
keywords_found
['New York', 'Bay Area']
替代關(guān)鍵詞:
keyword_processor.add_keyword('New Delhi', 'NCR region')
new_sentence = keyword_processor.replace_keywords('I love Big Apple and new delhi.')
new_sentence
'I love New York and NCR region.'
有關(guān)更多示例,請參閱文檔中的 用法 一節(jié)。
模糊處理
這個名字聽起來很奇怪,但是 FuzzyWuzzy 在字符串匹配方面是一個非常有用的庫。它可以很容易地實(shí)現(xiàn)字符串匹配率、令牌匹配率等操作。對于匹配保存在不同數(shù)據(jù)庫中的記錄也很方便。
安裝:
$ pip install fuzzywuzzy
例子:
from fuzzywuzzy import fuzz
from fuzzywuzzy import process
# 簡單的匹配率
fuzz.ratio("this is a test", "this is a test!")
97
# 部分的匹配率
fuzz.partial_ratio("this is a test", "this is a test!")
100
更多的例子可以在 FuzzyWuzy 的 GitHub 倉庫得到。
PyFlux
時間序列分析是機(jī)器學(xué)習(xí)中最常遇到的問題之一。PyFlux 是 Python 中的開源庫,專門為處理時間序列問題而構(gòu)建的。該庫擁有一系列優(yōu)秀的現(xiàn)代時間序列模型,包括但不限于 ARIMA、GARCH 以及 VAR 模型。簡而言之,PyFlux 為時間序列建模提供了一種概率方法。這值得一試。
安裝:
pip install pyflux
例子:
有關(guān)用法和示例,請參閱其 文檔。
IPyvolume
交流結(jié)果是數(shù)據(jù)科學(xué)的一個重要方面,可視化結(jié)果提供了顯著優(yōu)勢。 IPyvolume 是一個 Python 庫,用于在 Jupyter 筆記本中可視化 3D 體積和形狀(例如 3D 散點(diǎn)圖),配置和工作量極小。然而,它目前處于 1.0 之前的階段。一個很好的類比是這樣的: IPyVolumee volshow 是 3D 陣列,Matplotlib 的 imshow 是 2D 陣列。你可以在其 文檔 中讀到更多關(guān)于它的信息。
安裝:
Using pip
$ pip install ipyvolume
Conda/Anaconda
$ conda install -c conda-forge ipyvolume
例子:
動畫:
體繪制:
Dash
Dash 是一個用于構(gòu)建 Web 應(yīng)用程序的高效 Python 框架。它構(gòu)建于 Flask、Plotty.js 和 Response.js 之上,將下拉菜單、滑塊和圖形等流行 UI 元素與你的 Python 分析代碼聯(lián)系起來,而不需要JavaScript。Dash 非常適合構(gòu)建可在 Web 瀏覽器中呈現(xiàn)的數(shù)據(jù)可視化應(yīng)用程序。有關(guān)詳細(xì)信息,請參閱其 用戶指南 。
安裝:
pip install dash==0.29.0 # The core dash backend
pip install dash-html-components==0.13.2 # HTML components
pip install dash-core-components==0.36.0 # Supercharged components
pip install dash-table==3.1.3 # Interactive DataTable component (new!)
例子:
下面的示例顯示了一個具有下拉功能的高度交互的圖表。當(dāng)用戶在下拉列表中選擇一個值時,應(yīng)用程序代碼將數(shù)據(jù)從 Google Finance 動態(tài)導(dǎo)出到 Pandas 數(shù)據(jù)框架中。
Gym
從 OpenAI 而來的 Gym 是開發(fā)和比較強(qiáng)化學(xué)習(xí)算法的工具包。它與任何數(shù)值計(jì)算庫兼容,如 TensorFlow 或 Theano。Gym 是一個測試問題的集合,也稱為“環(huán)境”,你可以用它來制定你的強(qiáng)化學(xué)習(xí)算法。這些環(huán)境有一個共享的接口,允許您編寫通用算法。
安裝:
pip install gym
例子:
以下示例將在 CartPole-v0 環(huán)境中,運(yùn)行 1000 次,在每一步渲染環(huán)境。
你可以在 Gym 網(wǎng)站上讀到 其它的環(huán)境 。
結(jié)論
這些是我挑選的有用但鮮為人知的數(shù)據(jù)科學(xué) Python 庫。如果你知道另一個要添加到這個列表中,請?jiān)谙旅娴脑u論中提及。