PyHubWeekly | 第十七期:5款Python小工具,第4款超級實用!
- 2020 年 5 月 11 日
- AI
前言
PyHubWeekly每周定期更新,精選GitHub上優質的Python項目/小工具。
我把PyHubWeekly託管到了Github,感興趣的可以搜索Github項目PyHubWeekly,如果喜歡,麻煩給個Star支援一下吧。此外,歡迎大家通過提交issue來投稿和推薦自己的項目~
本期為大家推薦GitHub上5個優質的Python項目,<!–more–>它們分別是:
- jukebox
- python-patterns
- dabl
- missingno
- emot
下面分別來介紹一下上述5個GitHub項目。
jukebox
Star:1.8k
jukebox是一款由OpenAI開源的一款自動生成音樂的神經網路。

生成網路用於自動生成是這兩年人工智慧領域研究比較熱門的一個方面,例如,自動生成影像、自動生成音樂。
OpenAI開源的jukebox神經網路可以生成各種流派和藝術家風格的原始音頻,也包括基本的歌唱。
jukebox在生成音樂的過程中,主要包括2個過程,
- 取樣
- 訓練
# Required: Sampling
conda create --name jukebox python=3.7.5
conda activate jukebox
conda install mpi4py=3.0.3
conda install pytorch=1.4 torchvision=0.5 cudatoolkit=10.0 -c pytorch
git clone https://github.com/openai/jukebox.git
cd jukebox
pip install -r requirements.txt
pip install -e .
# Required: Training
conda install av=7.0.01 -c conda-forge
pip install ./tensorboardX
# Optional: Apex for faster training with fused_adam
conda install pytorch=1.1 torchvision=0.3 cudatoolkit=10.0 -c pytorch
pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./apex
python-patterns
Star:24.6k
python-patterns是Python中設計模式/習慣用法的集合。
我曾經不止在一篇文章中提及過設計模式的重要性,而對於Python這類語法簡單、效率偏低的程式語言,更加重視設計模式。
設計模式並不是一種老生常談的固定知識,而更加偏重於一種思維方式的轉變,例如,原型模式、工廠模式。也就是說,即便你不使用這種設計模式也可以實現某種功能,但是如果使用,執行效率、維護成本、可讀性都會得到極大程度的優化。
例如,下面示例的原型模式,
class Prototype:
value = 'default'
def clone(self, **attrs):
"""Clone a prototype and update inner attributes dictionary"""
# Python in Practice, Mark Summerfield
obj = self.__class__()
obj.__dict__.update(attrs)
return obj
class PrototypeDispatcher:
def __init__(self):
self._objects = {}
def get_objects(self):
"""Get all objects"""
return self._objects
def register_object(self, name, obj):
"""Register an object"""
self._objects[name] = obj
def unregister_object(self, name):
"""Unregister an object"""
del self._objects[name]
def main():
"""
>>> dispatcher = PrototypeDispatcher()
>>> prototype = Prototype()
>>> d = prototype.clone()
>>> a = prototype.clone(value='a-value', category='a')
>>> b = prototype.clone(value='b-value', is_checked=True)
>>> dispatcher.register_object('objecta', a)
>>> dispatcher.register_object('objectb', b)
>>> dispatcher.register_object('default', d)
>>> [{n: p.value} for n, p in dispatcher.get_objects().items()]
[{'objecta': 'a-value'}, {'objectb': 'b-value'}, {'default': 'default'}]
"""
if __name__ == '__main__':
import doctest
doctest.testmod()
dabl
Star:438
dabl是一款數據分析基準庫。
這個項目試圖使監督機器學習對於初學者變的更容易,並減少見任務的複雜度。
例如,利用dabl進行分類的一個示例,
import dabl
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_digits
X, y = load_digits(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=1)
sc = dabl.SimpleClassifier().fit(X_train, y_train)
Running ...
print("Accuracy score", sc.score(X_test, y_test))
Accuracy score 0.9...
就這樣簡單的幾行程式碼,幾秒鐘的時間內既可以獲得分類結果。
其實,dabl的最大優點並不在於機器學習,而是在於為數據探索提供了簡單的介面。下面是一個簡單地通過調用plot(X, y)生成的可視化示例:

missingno
Star:2.2k
missingno是一款Python缺失數據的可視化工具。
數據,是我們在工作中最為重要的一個環節,沒有之一。
無論是做人工智慧,還是做業務相關,或者簡單的做一些用戶畫像,如果沒有數據,或者數據品質差,一切產品規劃都無從談起。我想,在互聯網、IT行業工作過的同學應該都會有這樣的體會。
而數據缺失,又是我們在數據品質驗證中最為重要的一項任務。
很多剛從業的同學,剛接觸到項目便開始把目光放在演算法的研究和開發方面,一番努力之後,發現效果並沒有達到預期,回頭定位問題的時候才發現數據確實嚴重,而在這個過程中已經浪費掉很多時間和精力。

而,如果我們在著手研發之前,先對數據品質進行驗證,可視化一下缺失情況,這樣就避免不必要的人力浪費。
emot
Star:64
emot是一款用於提取文本中表情的簡單小工具。
>>> import emot
>>> text = "I love python :-)"
>>> emot.emoji(text)
>>> [{'value': ' ', 'mean': ':man:', 'location': [14, 14], 'flag': True}]
>>> emot.emoticons(text)
>>> {'value': [':-)'], 'location': [[16, 19]], 'mean': ['Happy face smiley'], 'flag': True}
emot可以用於從文本(字元串)中提取emojis和emoticon等,所有的表情符號。
安裝
通過pip安裝,
$ pip install emot --upgrade
從master分支安裝,
$ git clone https://github.com/NeelShah18/emot.git
$ cd emot
$ python setup.py install
推薦閱讀
- 乾貨 | 2019年共享免費資源整理(上):學習資源篇
- 乾貨 | 2019年共享免費資源整理(下):實用工具篇
- 10款VS Code插件神器,第7款超級實用!
- 開發者常用工具集 | 如果早一些看到這篇文章該多好
- 實用工具 | 5款超實用瀏覽器插件,第一款真神器
- 實用工具 | 10款搜索引擎,看到第一款就會毅然放棄百度!
- 實用工具 | 6款免費OCR工具,第一款是神器