PyHubWeekly | 第十七期:5款Python小工具,第4款超级实用!

简介: PyHubWeekly每周定期更新,精选GitHub上优质的Python项目/小工具。我把PyHubWeekly托管到了Github,感兴趣的可以搜索Github项目PyHubWeekly,如果喜欢,麻烦给个Star支持一下吧。此外,欢迎大家通过提交issue来投稿和推荐自己的项目~本期为大家推荐GitHub上5个优质的Python项目,它们分别是:•jukebox•python-patterns•dabl•missingno•emot

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

jukebox

Star:1.8k

jukebox是一款由OpenAI开源的一款自动生成音乐的神经网络。

9.png

生成网络用于自动生成是这两年人工智能领域研究比较热门的一个方面,例如,自动生成图像、自动生成音乐。

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)生成的可视化示例:

10.png


missingno

Star:2.2k

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

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


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

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


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

11.png

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


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


相关文章
|
5天前
|
JavaScript 前端开发 开发者
探索 DrissionPage: 强大的Python网页自动化工具
DrissionPage 是一个基于 Python 的网页自动化工具,结合了浏览器自动化的便利性和 requests 库的高效率。它提供三种页面对象:ChromiumPage、WebPage 和 SessionPage,分别适用于不同的使用场景,帮助开发者高效完成网页自动化任务。
30 4
|
26天前
|
数据采集 数据可视化 数据挖掘
R语言与Python:比较两种数据分析工具
R语言和Python是目前最流行的两种数据分析工具。本文将对这两种工具进行比较,包括它们的历史、特点、应用场景、社区支持、学习资源、性能等方面,以帮助读者更好地了解和选择适合自己的数据分析工具。
27 2
|
26天前
|
C语言 开发者 Python
探索Python中的列表推导式:简洁而强大的工具
【10月更文挑战第21天】在Python的世界里,代码的优雅与效率同样重要。列表推导式(List Comprehensions)作为一种强大而简洁的工具,允许开发者通过一行代码完成对列表的复杂操作。本文将深入探讨列表推导式的使用方法、性能考量以及它如何提升代码的可读性和效率。
|
1月前
|
自然语言处理 算法 数据挖掘
探讨如何利用Python中的NLP工具,从被动收集到主动分析文本数据的过程
【10月更文挑战第11天】本文介绍了自然语言处理(NLP)在文本分析中的应用,从被动收集到主动分析的过程。通过Python代码示例,详细展示了文本预处理、特征提取、情感分析和主题建模等关键技术,帮助读者理解如何有效利用NLP工具进行文本数据分析。
48 2
|
1月前
|
测试技术 Python
Python MagicMock: Mock 变量的强大工具
Python MagicMock: Mock 变量的强大工具
|
1月前
|
存储 Python
python数据类型、debug工具(一)
python数据类型、debug工具(一)
|
23天前
|
C语言 Python
探索Python中的列表推导式:简洁而强大的工具
【10月更文挑战第24天】在Python编程的世界中,追求代码的简洁性和可读性是永恒的主题。列表推导式(List Comprehensions)作为Python语言的一个特色功能,提供了一种优雅且高效的方法来创建和处理列表。本文将深入探讨列表推导式的使用场景、语法结构以及如何通过它简化日常编程任务。
|
1月前
|
机器学习/深度学习 Unix 开发者
python的环境管理工具有哪些
python的环境管理工具有哪些
23 0
|
1月前
|
程序员 开发者 Python
深度解析Python中的元编程:从装饰器到自定义类创建工具
【10月更文挑战第5天】在现代软件开发中,元编程是一种高级技术,它允许程序员编写能够生成或修改其他程序的代码。这使得开发者可以更灵活地控制和扩展他们的应用逻辑。Python作为一种动态类型语言,提供了丰富的元编程特性,如装饰器、元类以及动态函数和类的创建等。本文将深入探讨这些特性,并通过具体的代码示例来展示如何有效地利用它们。
38 0
|
1月前
|
存储 程序员 Python
python数据类型、debug工具(二)
python数据类型、debug工具(二)
下一篇
无影云桌面