DevWeekly/docs/17-pyhubweekly.md

8.6 KiB
Raw Permalink Blame History

前言

PyHubWeekly每周定期更新精选GitHub上优质的Python项目/小工具。

我把PyHubWeekly托管到了Github感兴趣的可以搜索Github项目PyHubWeekly如果喜欢麻烦给个Star支持一下吧。此外欢迎大家通过提交issue来投稿和推荐自己的项目~

本期为大家推荐GitHub上5个优质的Python项目它们分别是

  • jukebox
  • python-patterns
  • dabl
  • missingno
  • emot

下面分别来介绍一下上述5个GitHub项目。

jukebox

Star1.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

Star24.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

Star438

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

Star2.2k

missingno是一款Python缺失数据的可视化工具。

数据,是我们在工作中最为重要的一个环节,没有之一。

无论是做人工智能还是做业务相关或者简单的做一些用户画像如果没有数据或者数据质量差一切产品规划都无从谈起。我想在互联网、IT行业工作过的同学应该都会有这样的体会。

而数据缺失,又是我们在数据质量验证中最为重要的一项任务。

很多刚从业的同学,刚接触到项目便开始把目光放在算法的研究和开发方面,一番努力之后,发现效果并没有达到预期,回头定位问题的时候才发现数据确实严重,而在这个过程中已经浪费掉很多时间和精力。

而,如果我们在着手研发之前,先对数据质量进行验证,可视化一下缺失情况,这样就避免不必要的人力浪费。

emot

Star64

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

推荐阅读


欢迎关注我的公众号“平凡而诗意”,原创技术文章第一时间推送,如果喜欢,麻烦点一下“在看”~