下面分别来介绍一下上述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