一、数值计算
数值计算是数据挖掘、机器学习的基础。Python提供多种强大的扩展库用于数值计算,常用的数值计算库如下所示。
1. NumPy
支持多维数组与矩阵运算,也针对数组运算提供大量的数学函数库。通常与SciPy和Matplotlib一起使用,支持比Python更多种类的数值类型,其中定义的最重要的对象是称为ndarray的n维数组类型,用于描述相同类型的元素集合,可以使用基于0的索引访问集合中元素。
2. SciPy
在NumPy库的基础上增加了众多的数学、科学及工程计算中常用的库函数,如线性代数、常微分方程数值求解、信号处理、图像处理、稀疏矩阵等,可进行插值处理、信号滤波,以及使用C语言加速计算。
3. Pandas
基于NumPy的一种工具,为解决数据分析任务而生。纳入大量库和一些标准的数据模型,提供高效地操作大型数据集所需的工具及大量的能快速便捷处理数据的函数和方法,为时间序列分析提供很好的支持,提供多种数据结构,如Series、Time-Series、DataFrame和Panel。
二、数据可视化
数据可视化是展示数据、理解数据的有效手段,常用的Python数据可视化库如下所示。
4. Matplotlib
第一个Python可视化库,有许多别的程序库都是建立在其基础上或者直接调用该库,可以很方便地得到数据的大致信息,功能非常强大,但也非常复杂。
5. Seaborn
利用了Matplotlib,用简洁的代码来制作好看的图表。与Matplotlib最大的区别为默认绘图风格和色彩搭配都具有现代美感。
6. ggplot
基于R的一个作图库ggplot2,同时利用了源于《图像语法》(The Grammar of Graphics)中的概念,允许叠加不同的图层来完成一幅图,并不适用于制作非常个性化的图像,为操作的简洁度而牺牲了图像的复杂度。
7. Bokeh
跟ggplot一样,Bokeh也基于《图形语法》的概念。与ggplot不同之处为它完全基于Python而不是从R处引用。长处在于能用于制作可交互、可直接用于网络的图表。图表可以输出为JSON对象、HTML文档或者可交互的网络应用。
Bokeh也支持数据流和实时数据,为不同的用户提供了3种控制水平:
最高的控制水平用于快速制图,主要用于制作常用图像;中等控制水平与Matplotlib一样允许开发人员控制图像的基本元素(例如分布图中的点);最低的控制水平主要面向开发人员和软件工程师。没有默认值,需要定义图表的每一个元素。8. Plotly
可以通过Python notebook使用,与Bokeh一样致力于交互图表的制作,但提供在别的库中几乎没有的几种图表类型,如等值线图、树形图和三维图表。
9. pygal
与Bokeh和Plotly一样,提供可直接嵌入网络浏览器的可交互图像。与其他两者的主要区别在于可将图表输出为SVG格式,所有的图表都被封装成方法,且默认的风格也很漂亮,用几行代码就可以很容易地制作出漂亮的图表。
10. geoplotlib
用于制作地图和地理相关数据的工具箱。可用来制作多种地图,比如等值区域图、热度图、点密度图。必须安装Pyglet(一个面向对象编程接口)方可使用。
11. missingno
用图像的方式快速评估数据缺失的情况,可根据数据的完整度对数据进行排序或过滤,或者根据热度图或树状图对数据进行修正。
三、Web开发
Web应用开发可以说是目前软件开发中最重要的部分。Python提供各种Web开发框架,帮助使用者快速实现功能开发。常用的Python网络开发类库如下所示。
12. Django
一个高级的Python Web框架,支持快速开发,提供从模板引擎到ORM所需的一切东西,使用该库构建App时,必须遵循Django的方式。
13. Socket
一个套接字通讯底层库,用于在服务器和客户端间建立TCP或UDP连接,通过连接发送请求与响应。
14. Flask
一个基于Werkzeug、Jinja 2的Python轻量级框架(microframework),默认配备Jinja模板引擎,也包含其他模板引擎或ORM供选择,适合用来编写API服务(RESTful rervices)。
15. Twisted
一个使用Python实现的基于事件驱动的网络引擎框架,建立在deferred object之上,一个通过异步架构实现的高性能的引擎,不适用于编写常规的Web Apps,更适用于底层网络。
16. Tornado
一个由FriendFeed开发的Python Web框架和异步网络库,采用非阻塞网络I/O模型,可以处理数以千计的网络连接。对于long polling、WebSockets和其他需要长时间实时连接的Apps,Tornado是一个理想的Web框架,它介于Django和Flask之间,能很好地处理C10K问题。
四、数据库管理
数据库是企业用于存放数据的主要工具,数据库管理包括了数据定义、数据操作、数据库运行管理、数据组织、数据库库保护、数据库维护等。Python提供了所有主流关系数据库管理接口,常用的Python MySQL连接库及其简介如下所示。
17. MySQL-python
又称MySQLdb,是Python连接MySQL最流行的一个驱动,很多框架也基于此库进行开发。只支持Python 2.x,且安装时有许多前置条件。由于该库基于C语言开发,在Windows平台上的安装非常不友好,经常出现失败的情况,现在基本不推荐使用,取代品为衍生版本。
18. mysqlclient
完全兼容MySQLdb,同时支持Python 3.x,是Django ORM的依赖工具,可使用原生SQL来操作数据库,安装方式与MySQLdb一致。
19. PyMySQL
纯Python实现的驱动,速度比MySQLdb慢,最大的特点为安装方式简洁,同时也兼容MySQL-python。
20. SQLAlchemy
一种既支持原生SQL,又支持ORM的工具。ORM是Python对象与数据库关系表的一种映射关系,可有效提高写代码的速度,同时兼容多种数据库系统,如SQLite、MySQL、PostgreSQL,代价为性能上的一些损失。
五、自动化运维
运维的主要内容包括保障业务长期稳定运行、保障数据安全可靠、自动化完成部署任务。Python能够满足绝大部分自动化运维的需求,目前在Linux运维中已用Python实现的应用如下所示。
21. jumpsever跳板机
一种由Python编写的开源跳板机(堡垒机)系统,实现了跳板机的基本功能,包含认证、授权和审计,集成了Ansible、批量命令等。
支持WebTerminal Bootstrap编写,界面美观,自动收集硬件信息,支持录像回放、命令搜索、实时监控、批量上传下载等功能,基于SSH协议进行管理,客户端无须安装agent。主要用于解决可视化安全管理,因完全开源,容易再次开发。
22. Magedu分布式监控系统
一种用Python开发的自动化监控系统,可监控常用系统服务、应用、网络设备,可在一台主机上监控多个不同服务,不同服务的监控间隔可以不同,同一个服务在不同主机上的监控间隔、报警阈值可以不同,并提供数据可视化界面。
23. Magedu的CMDB
一种用Python开发的硬件管理系统,包含采集硬件数据、API、页面管理3部分功能,主要用于自动化管理笔记本、路由器等常见设备的日常使用。由服务器的客户端采集硬件数据,将硬件信息发送至API,API负责将获取的数据保存至数据库中,后台管理程序负责对服务器信息进行配置和展示。
24. 任务调度系统
一种由Python开发的任务调度系统,主要用于自动化地将一个服务进程分布到其他多个机器的多个进程中,一个服务进程可作为调度者依靠网络通信完成这一工作。
25. Python运维流程系统
一种使用Python语言编写的调度和监控工作流的平台,内部用于创建、监控和调整数据管道。允许工作流开发人员轻松创建、维护和周期性地调度运行工作流,包括了如数据存储、增长分析、Email发送、A/B测试等诸多跨多部门的用例。
六、GUI编程
GUI(Graphical User Interface,图形用户界面)是指采用图形方式显示的计算机操作用户界面。Python提供多个图形开发界面的库用于GUI编程,常用Python GUI库如下所示。
26. Tkinter
一个Python的标准GUI库,可以快速地创建GUI应用程序,可以在大多数的UNIX平台下使用,同样可以应用在Windows和Macintosh系统中,Tkinter 8.0的后续版本可以实现本地窗口风格,并良好地运行在绝大多数平台中。
27. wxPython
一款开源软件跨平台GUI库wxWidgets的Python封装和Python模块,是Python语言的一套优秀的GUI图形库,允许程序员很方便地创建完整的、功能健全的GUI用户界面。
28. PyQt
一个创建GUI应用程序的工具库,是Python编程语言和Qt的成功融合,可以运行在所有主要操作系统上,包括UNIX、Windows和Mac。PyQt采用双许可证,开发人员可以选择GPL和商业许可,从PyQt的版本4开始,GPL许可证可用于所有支持的平台。
29. PySide
一个跨平台的应用程式框架Qt的Python绑定版本,提供与PyQt类似的功能,并相容API,但与PyQt不同处为其使用LGPL授权。
七、机器学习
Python作为一门理想的集成语言,将各种技术绑定在一起,除了为用户提供更方便的功能之外,还是一个理想的粘合平台,在开发人员与外部库的低层次集成人员之间搭建连接,以便用C/C++实现更高效的算法。
对于研究人员者而言,使用Python编程可以快速迁移代码并进行改动,而无须花费过多的精力在修改代码与代码规范上。开发者在Python中封装了很多优秀的依赖库,其中NumPy和SciPy库提供了目前解决机器学习问题所需的标准配置。
Python目前集成了大量的机器学习框架,其中常用机器学习库如下所示。
30. Scikit-Learn
Scikit-Learn基于NumPy和SciPy,是专门为机器学习建造的一个Python模块,提供了大量用于数据挖掘和分析的工具,包括数据预处理、交叉验证、算法与可视化算法等一系列接口。
Sklearn的基本功能可分为6个部分:
分类回归聚类数据降维模型选择数据预处理其中集成了大量分类、回归和聚类的算法,包括支持向量机、逻辑回归、朴素贝叶斯、随机森林、Gradient Boosting、K-means和DBSCAN等。
31. Orange3
Orange3是一个基于组件的数据挖掘和机器学习软件套装,支持Python进行脚本开发。它包含一系列的数据可视化、检索、预处理和建模技术,具有一个良好的用户界面,同时也可以作为Python的一个模块使用。
用户可通过数据可视化进行数据分析,包括统计分布图、柱状图、散点图,以及更深层次的决策树、分层聚簇、热点图、MDS(多维度分析)、线性预测等,并可使用Orange自带的各类附加功能组件进行NLP、文本挖掘、构建网络分析、推断高频数据集和关联规则数据分析。
32. XGBoost
XGBoost是专注于梯度提升算法的机器学习函数库,因其优良的学习效果及高效的训练速度而获得广泛的关注。XGBoost支持并行处理,比起同样实现了梯度提升算法的Scikit-Learn库,其性能提升10倍以上。XGBoost可以处理回归、分类和排序等多种任务。
33. NuPIC
NuPIC是专注于时间序列的一个机器学习平台,其核心算法为HTM算法,相比于深度学习,其更为接近人类大脑的运行结构。HTM算法的理论依据主要是人脑中处理高级认知功能的新皮质部分的运作原理。NuPIC可用于预测及异常检测,适用面非常广,仅要求输入时间序列即可。
34. Milk
Milk(Machine Learning Toolkit)是Python中的一个机器学习工具包。
Milk注重提升运行速度与降低内存占用,因此大部分对性能敏感的代码都是使用C++编写的,为了便利性在此基础上提供Python接口。重点提供监督分类方法,如SVMs、KNN、随机森林和决策树,也支持无监督学习算法,如K-means和密切关系传播。
八、深度学习
深度学习作为机器学习的分支,绽放了耀眼的光芒。由于Python的易用性与可扩展性,众多深度学习框架提供了Python接口,其中较为流行的深度学习库如下所示。
35. Caffe
Caffe(Convolutional Architecture for Fast Feature Embedding)是一个以表达式、速度和模块化为核心的深度学习框架,具备清晰、可读性高和快速的特性,在视频、图像处理方面应用较多。
Caffe中的网络结构与优化都以配置文件形式定义,容易上手,无须通过代码构建网络;网络训练速度快,能够训练大型数据集与State-of-the-art的模型;模块化的组件可以方便地拓展到新的模型与学习任务上。
36. Theano
Theano诞生于2008年,是一个高性能的符号计算及深度学习库,被认为是深度学习库的始祖之一,也被认为是深度学习研究和应用的重要标准之一。其核心是一个数学表达式的编译器,专门为处理大规模神经网络训练的计算而设计。
Theano很好地整合了NumPy,可以直接使用NumPy的ndarray,使得API接口学习成本大为降低;其计算稳定性好,可以精准地计算输出值很小的函数,如log(1+x);可动态地生成C或者CUDA代码,用来编译成高效的机器代码。
37. TensorFlow
TensorFlow是相对高阶的机器学习库,其核心代码使用C++编写,并支持自动求导,使得用户可以方便地设计神经网络结构,不需要亲自编写C++或CUDA代码,也无须通过反向传播求解梯度。由于底层使用C++语言编写,运行效率得到了保证,并简化了线上部署的复杂度。
除了核心代码的C++接口以外,TensorFlow还有官方的Python、Go和Java接口以外,用户可以在一个硬件配置较好的机器中用Python进行实验,并在资源比较紧张的嵌入式环境或需要低延迟的环境中用C++部署模型。
TensorFlow不只局限于神经网络,其数据流式图还支持非常自由的算法表达,也可以轻松实现深度学习以外的机器学习算法。
38. Keras
Keras是一个高度模块化的神经网络库,使用Python实现,并可以同时运行在TensorFlow和Theano上。
Keras专精于深度学习,其提供了到目前为止最方便的API,用户仅需将高级的模块拼在一起便可设计神经网络,大大降低了编程开销(code overhead)与理解开销(cognitive overhead)。
Keras同时支持卷积网络和循环网络,支持级联的模型或任意的图结构的模型,从CPU上计算切换到GPU加速无须任何代码的改动。简化了编程的复杂度的同时,在性能上丝毫不逊色于TensorFlow和Theano。
________________________________________________________________________________________________________________________________________
用于不同数据科学任务的Python库
用于数据收集的Python库
· Beautiful Soup
· Scrapy
· Selenium
用于数据清理和数据操作的Python库
· Pandas
· PyOD
· NumPy
· Spacy
用于数据可视化的Python库
· Matplotlib
· Seaborn
· Bokeh
用于建模的Python库
· Scikit-learn
· TensorFlow
· PyTorch
用于模型解释的Python库
· Lime
· H2O
用于语音处理的Python库
· Librosa
· Madmom
· pyAudioAnalysis
用于图像处理的Python库
· OpenCV-Python
· Scikit-image
· Pillow
作为数据库的Python库
· Psycopg
· SQLAlchemy
用于模型部署的Python库
· Flask
用于数据收集的Python库
你是否曾遇到过这样的情况:缺少解决问题的数据?这是数据科学中一个永恒的问题。这也是为什么学习提取和收集数据对数据科学家来说是一项非常重要的技能。数据提取和收集开辟了前所未有的道路。
以下是三个用于提取和收集数据的Python库:
Beautiful Soup
收集数据的最佳方式之一就是抓取网站(当然是以合乎道德和法律的手段!)徒手做这件事需要耗费大量的劳动和时间。Beautiful Soup无疑是一大救星。
Beautiful Soup是一个HTML和XML解析器,可为被解析的页面创建解析树,从而用于从web页面中提取数据。从网页中提取数据的过程称为网页抓取。
使用以下代码可安装BeautifulSoup:
pip install beautifulsoup4
下面是一个可实现从HTML中提取所有锚标记的Beautiful Soup简单代码:
#!/usr/bin/python3
# Anchor extraction from html document
from bs4 import BeautifulSoup
from urllib.request import urlopen
with urlopen(‘LINK‘) as response:
soup = BeautifulSoup(response, ‘html.parser‘)
for anchor in soup.find_all(‘a‘):
print(anchor.get(‘href‘, ‘/‘))
建议阅读下面的文章,学习如何在Python中使用Beautiful Soup:
《新手指南:在Python中使用BeautifulSoup进行网页抓取》
Scrapy
Scrapy是另一个可有效用于网页抓取的Python库。它是一个开源的协作框架,用于从网站中提取所需数据。使用起来快捷简单。
下面是用于安装Scrapy的代码:
pip install scrapy
Scrapy是一个用于大规模网页抓取的框架。可提供所有需要的工具有效地从网站中抓取数据,且依需要处理数据,并以使用者偏好的结构和格式存储数据。
下面是一个实现Scrapy的简单代码:
import scrapy
class Spider(scrapy.Spider):
name = ‘NAME‘
start_urls = [‘LINK‘]
def parse(self, response):
for title in response.css(‘.post-header>h2‘):
yield {‘title‘: title.css(‘a ::text‘).get()}
for next_page in response.css(‘a.next-posts-link‘):
yield response.follow(next_page, self.parse
下面是一个学习Scrapy并在Python中实现Scrapy的绝佳教程:
《使用Scrapy在Python中进行网页抓取(含多个示例)》
Selenium
Selenium是一个倍受欢迎的自动化浏览器工具。在业界常用于测试,但对于网页抓取也非常方便。Selenium在IT领域非常流行。
编写Python脚本来自动化使用Selenium的web浏览器是很容易的。它允许免费高效地提取数据,并将其存储在首选格式中以备后用。
关于使用Python和Selenium抓取YouTube视频数据的文章:
《数据科学项目:使用Python和Selenium抓取YouTube数据对视频进行分类》
用于数据清理和数据操作的Python库
收集了数据之后,接下来要清理可能面临的任何混乱数据,并学习如何操作数据,方便数据为建模做好准备。
下面是四个可用于数据清理和数据操作的Python库。请记住,文中仅指明在现实世界中处理结构化(数值)数据和文本数据(非结构化)——而该库列表涵盖了所有内容。
Pandas
在数据操作和数据分析方面,Pandas绝无敌手。Pandas一度是最流行的Python库。Pandas是用Python语言编写的,主要用于数据操作和数据分析。
这个名称来源于术语“面板数据”,“面板数据”是一个计量经济学术语,指的是包含同一个人在多个时间段内的观察结果的数据集。
Pandas在Python or Anaconda中已完成预安装,但以防需要,安装代码如下:
pip install pandas
Pandas有以下特点:
· 数据集连接和合并
· 删除和插入数据结构列
· 数据过滤
· 重塑数据集
· 使用DataFrame对象来操作数据等
下面是一篇文章以及一份很棒的Cheatsheet,有助于使Pandas技能达标:
《Python中用于数据操作的12种有用的Pandas技术》
《CheatSheet:在Python中使用Pandas进行数据探索》
PyOD
难以发现异常值?这绝非个例。别担心,PyOD库就在这里。
PyOD是一个全面的、可伸缩的Python工具包,用于检测外围对象。离群值检测基本上是识别与大多数数据显著不同的稀有项或观测值。
以下代码可用于下载pyOD:
pip install pyod
PyOD是如何工作的?如何实现PyOD?下面一则指南将回答所有关于PyOD的问题:
《学习在Python中使用PyOD库检测异常值的绝佳教程》
NumPy
与Pandas一样,NumPy也是一个非常受欢迎的Python库。NumPy引入了支持大型多维数组和矩阵的函数,同时还引入了高级数学函数来处理这些数组和矩阵。
NumPy是一个开源库,有多方贡献者。在 Anaconda和Python中已预安装Numpy,但以防需要,下面是安装代码:
$ pip install numpy
SpaCy
目前已经讨论了如何清理数据和处理数值数据。但是如果正在处理文本数据呢?到目前为止,现有的库都无法解决该问题。
Spacy是一个非常有用且灵活的自然语言处理( NLP )库和框架,用于清理创建模型的文本文档。与类似用途的其他库相比,SpaCy速度更快。
在Linux中安装Spacy:
pip install -U spacy
python -m spacy download en
以下是学习spaCy的课程:
《简化自然语言处理——使用SpaCy(在Python中)》
用于数据可视化的Python库
下一步是什么呢?数据可视化!此处假设已得到验证,并且发掘了隐藏的观点和模式。
下面是三个用于数据可视化的绝佳Python库。
Matplotlib
Matplotlib是Python中最流行的数据可视化库。允许生成和构建各种各样的图。Matplotlib是笔者的首选库,可与Seaborn一起用于进行数据可视化研究。
以下是安装Matplotli的代码:
$ pip install matplotlib
下面是使用Matplotlib构建的不同类型图示的部分例子:
柱状图
%matplotlib inline
import matplotlib.pyplot as plt
from numpy.random import normal
x = normal(size=100)
plt.hist(x, bins=20)
plt.show()
3D 图表
from matplotlib import cm
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.gca(projection=‘3d‘)
X = np.arange(-10, 10, 0.1)
Y = np.arange(-10, 10, 0.1)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X**2 + Y**2)
Z = np.sin(R)
surf = ax.plot_surface(X, Y, Z, rstride=1,cstride=1, cmap=cm.coolwarm)
plt.show()
目前已经介绍了Pandas、NumPy和Matplotlib,那么请查看下面的教程,该教程结合了以上三个库进行讲解:
《使用NumPy、Matplotlib和Pandas在Python中进行数据探索的终极指南》
Seaborn
Seaborn是另一个基于matplotlib的绘图库。它是一个为绘制有吸引力的图像而提供高级接口的python库。matplotlib能实现功能,Seaborn只是以另一种更吸引人的视觉方式来实现。
Seaborn 的一些特点:
· 作为一个面向数据集的API,可用于查验多个变量之间的关系
· 便于查看复杂数据集的整体结构
· 用于选择显示数据中模式的调色板的工具
下面一行代码可用于安装Seaborn:
pip install seaborn
Bokeh
Bokeh是一个面向现代网页浏览器的交互式可视化库,为大量数据集提供优美的通用图形结构。
Bokeh可用于创建交互式绘图、仪表板和数据应用程序。
安装:
pip install bokeh
用于建模的Python库
现在到了本文最令人期待的部分——建模!这也是大多数人一开始接触数据科学的原因。
接下来通过这三个Python库来探索建模。
Scikit-learn
就像用于数据操作的Pandas和用于可视化的matplotlib一样,scikit-learn是Python构建模型中的佼佼者。没有什么能与之媲美。
事实上,scikit-learn建立在NumPy,SciPy和matplotlib之上。它是开放源码的,每个人都可以访问,并且可以在各种环境中重用。
Scikit-learn支持在机器学习中执行的不同操作,如分类、回归、聚类和模型选择等。命名它——那么scikit-learn会有一个模块。
建议浏览以下链接以了解有关scikit-learn的更多信息:
《Python中的Scikit-learn——笔者去年学到的最重要的机器学习工具!》
TensorFlow
TensorFlow由谷歌开发,是一个流行的深度学习库,可帮助构建、培训不同模型。是一个开放源码的端到端平台。TensorFlow提供简单的模型构建,强大的机器学习生产,以及强大的实验工具和库。
TensorFlow提供多个抽象级别,可根据需要进行选择。TensorFlow通过使用高级Keras API来构建和训练模型,这使TensorFlow入门和机器学习变得容易。
使用TensorFlow从阅读这些文章开始:
《TensorFlow 101:理解张量和图像以便开始深入学习》
《开始使用Keras和TensorFlow在R中进行深度学习》
PyTorch
什么是PyTorch?其实,这是一个基于Python的科学计算包,其功能如下:
· NumPy的替代品,可使用GPU的强大功能
· 深度学习研究型平台,拥有最大灵活性和最快速度
PyTorch提供以下功能:
· 混合前端
· 工具和库:由研发人员组成的活跃社区已经建立了一个丰富的工具和库的生态系统,用于扩展PyTorch并支持计算机视觉和强化学习等领域的开发
· 云支持:PyTorch支持在主要的云平台上运行,通过预构建的映像、对GPU的大规模训练、以及在生产规模环境中运行模型的能力等,可提供无摩擦的开发和轻松拓展
以下是两篇有关PyTorch的十分详细且易于理解的文章:
《PyTorch简介——一个简单但功能强大的深度学习库》
《开始使用PyTorch——学习如何建立快速和准确的神经网络(以4个案例研究为例)》
用于数据解释性的Python库
你真的了解模型如何工作吗?能解释模型为什么能够得出结果吗?这些是每个数据科学家都能够回答的问题。构建黑盒模型在业界毫无用处。
所以,上文中已经提到的两个Python库可以帮助解释模型的性能。
LIME
LIME是一种算法(库),可以解释任何分类器或回归量的预测。LIME是如何做到的呢?通过可解释的模型在局部不断接近预测值,这个模型解释器可用于生成任何分类算法的解释。
安装LIME很简单:
pip install lime
下文将从总体上帮助开发LIME背后的直觉和模型可解释性:
《在机器学习模型中建立信任(在Python中使用LIME)》
H2O
相信很多人都听说过H2O.ai,自动化机器学习的市场领导者。但是你知道其在Python中也有一个模型可解释性库吗?
H2O的无人驾驶AI,提供简单的数据可视化技术,用于表示高度特征交互和非线性模型行为,通过可视化提供机器学习可解释性(MLI),说明建模结果和模型中特征的影响。
用于音频处理的Python库
音频处理或音频分析是指从音频信号中提取信息和含义以进行分析、分类或任何其他任务。这正在成为深度学习中的一种流行功能,所以要留意这一点。
LibROSA
LibROSA是一个用于音乐和音频分析的Python库。它提供了创建音乐信息检索系统所需的构建块。
这是一篇关于音频处理及其工作原理的深度文章:
《利用深度学习开始音频数据分析(含案例研究)》
Madmom
Madmom是一个用于音频数据分析的很棒的Python库。它是一个用Python编写的音频信号处理库,主要用于音乐信息检索(MIR)任务。
以下是安装Madmom的必备条件:
· NumPy
· SciPy
· Cython
· Mido
以下软件包用于测试安装:
· PyTest
· Fyaudio
· PyFftw
安装Madmom的代码:
pip install madmom
下文可用以了解Madmom如何用于音乐信息检索:
《学习音乐信息检索的音频节拍追踪(使用Python代码)》
pyAudioAnalysis
pyAudioAnalysis是一个用于音频特征提取、分类和分段的Python库,涵盖广泛的音频分析任务,例如:
· 对未知声音进行分类
· 检测音频故障并排除长时间录音中的静音时段
· 进行监督和非监督的分割
· 提取音频缩略图等等
可以使用以下代码进行安装:
pip install pyAudioAnalysis
用于图像处理的Python库
如果想要在数据科学行业有一番成就,那么必须学习如何使用图像数据。随着系统能够收集越来越多的数据(主要得益于计算资源的进步),图像处理越来越无处不在。
因此,请确保熟悉以下三个Python库中的至少一个。
OpenCV-Python
谈到图像处理,OpenCV首先浮现在脑海中。OpenCV-Python是用于图像处理的Python API,结合了OpenCV C ++ API和Python语言的最佳特性。主要用于解决计算机视觉问题。
OpenCV-Python使用了上文提到的NumPy。所有OpenCV阵列结构都与NumPy数组相互转换。这也使得与使用Numpy的其他库(如SciPy和Matplotlib)集成变得更加容易。
在系统中安装OpenCV-Python:
pip3 install opencv-python
以下是两个关于如何在Python中使用OpenCV的流行教程:
《基于深度学习的视频人脸检测模型建立(Python实现)》
《16个OpenCV函数启动计算机视觉之旅(使用Python代码)》
Scikit-image
Scikit-image是另一个用于图像处理的python库,是用于执行多个不同图像处理任务的算法集合。可用于图像分割、几何变换、色彩空间操作、分析、过滤,形态学、特征检测等等。
在安装scikit-image前,请先安装以下软件包:
· Python(> = 3.5)
· NumPy(> = 1.11.0)
· SciPy(> = 0.17.0)
· joblib(> = 0.11)
这就是在机器上安装scikit-image的方法:
pip install -U scikit-learn
Pillow
Pillow是PIL(Python Imaging Library)的新版本。它是从PIL派生出来的,在一些Linux发行版(如Ubuntu)中被用作原始PIL的替代。
Pillow提供了几种执行图像处理的标准程序:
· 逐像素操作
· 掩模和透明处理
· 图像过滤,例如模糊,轮廓,平滑或边缘监测
· 图像增强,例如锐化,调整亮度、对比度或颜色
· 在图像上添加文字等等
安装Pillow:
pip install Pillow
用于数据库的Python库
学习如何从数据库存储、访问和检索数据是数据科学家必备的技能。但是如何在不首先检索数据的情况下做到建模呢?
接下来介绍两个与SQL相关的Python库。
psycopg
Psycopg是Python编程语言中最流行的PostgreSQL(高级开源代码关系数据库)适配器。Psycopg的核心是完全实现Python DB API 2.0规范。
目前的psycopg2实现支持:
· Python版本2.7
· Python 3版本(3.4到3.7)
· PostgreSQL服务器版本(7.4到11)
· PostgreSQL客户端库版本(9.1以上)
以下是安装psycopg2的方法:
pip install psycopg2
SQLAlchemy
SQL是最流行的数据库语言。SQLAlchemy是pythonSQL工具包和对象关系映射器,它为应用程序开发人员提供了SQL的全部功能,且极具灵活性。
SQL旨在实现高效、高性能的数据库访问。SQLAlchemy将数据库视为关系代数引擎,而不仅仅是表的集合。
要安装SQLAlchemy,可以使用以下代码行:
pip install SQLAlchemy
用于部署的Python库
你知道哪些模型部署?部署模型意味着将最终模型放入最终应用程序(技术上称为生产环境)。
Flask
Flask是一个用Python编写的Web框架,广泛用于部署数据科学模型。Flask由两个部分组成:
· Werkzeug:Python编程语言的实用程序库
· Jinja:Python的模板引擎
查看下面的示例以打印“Hello world”:
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "HelloWorld!"
if __name__ == "__main__":
app.run()
以下文章是学习Flask的良好开端:
原文地址:https://www.cnblogs.com/sxshe/p/12636151.html