3

Python 的七种武器

 3 years ago
source link: https://cosx.org/2016/10/python-seven-weapons/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Python 的七种武器

关键词:python; 数据分析

君子生非异也,善假于物也。

“物” 能够延展英雄的能力。它是吕布的赤兔马,杨过的玄铁重剑,CS 中的沙漠之鹰,曹操传中的凤凰羽衣。“物” 也可用以治愈英雄,例如张无忌的黑玉断续膏,李逍遥的天香续命露,还有深夜里 TVB 的一碗面。

赤兔

对于不同的位面,有着不同的宝物定义。对古时文人来讲,笔墨纸砚,是当时具有生产力输出的四大工具。对程序员来讲,当代的 “文房四宝” 不外乎是:笔记本,大屏幕,机械键盘,人体工学椅,Google,Github 这几种。特别是机械键盘和人体工学椅,它们是极为重要的“人机接口”。前者可以用来延展英雄的输出能力,后者可以用来治愈英雄的腰椎。

机械键盘

在数据领域也有类似的情况。一个数据项目,最重要的是定义问题,其次是拿到好的数据,再次是找到合适的方法,最不重要的可能就是选择一个工具了。但是看起来最形而下的工具,却是最具体而真实的 “人数接口”。用一种顺手的工具来玩数据,我们会觉得比较舒服,输出效率更高。

市面上的分析工具大致分为两大类,菜单式的工具和命令行式的工具。前者适合于初学入门,类似于跟团旅游,提供了固定的路线。分析套路比较固定化,点几下鼠标就可以搞定也很省事。后者适合于老手玩家,类似于自由行,需要自己规划数据工作流,适用于自定义的灵活分析。大多数用户害怕命令行,然而使用命令行才能掌握真正的力量。命令行是 Jedi 的原力。

在命令行工具类别中,最耀眼的是 R 和 Python 这对双星。他们有非常多的相似之处,第一个相似之处是 “快”。这种快不是纯计算速度快,而是从想法到结果的快。因为不论是探索数据还是建模,都需要各种尝试各种试错各种踩坑,如果要花 2 小时写代码,跑 1 分钟,不如花 1 分钟写程序,跑 1 小时。因为人的时间总是更为宝贵。第二个相似之处是扩展丰富。即有大量现成的函数模块。从想法到结果的快速实现,不能等待重新造轮子,另一方面,试错也要做很多复杂的自定义任务,将各种模块进行组合,调用各种外部交互接口,这两种开源工具都非常擅长。

二者的差异点在于 Python 是一种通用型编程工具,R 专注于数据领域;R 有更为丰富的专业统计函数,Python 则长于机器学习;R 有更好的可视化包,Python 正在快速追赶;Python 和 R 的核心语法非常简洁,一些 R 包的语法则兼收并蓄,错综复杂。当你有时间的时候,双修是最好的选择。因为这两种工具类似于筷子和勺子的区别,在不同场景下使用某种工具更为有效。

R 语言这个工具与其生态系统,在统计之都上已经介绍得非常多了。下文简单介绍一下 python 的七个最为重要的数据分析模块,或者称之为七种武器。

长生剑:Numpy

长生剑

Numpy 是 Python 提供数值计算的基础模块,也是 Python 生态中历史最为悠久的模块,可称得上 “长生” 二字。如果没有这柄长生剑,就没有办法做快速高效的向量化计算。它还提供了线性代数等高级矩阵运算功能,另外还能集成 C 的代码,让你出剑更加的快。Python 的许多扩展模块都是基于 Numpy 开发的,所以学好 Numpy 就算是奠定好了根基。

碧玉刀:SciPy

碧玉刀

SciPy 是基于 Numpy 开发的高级模块,它用于解决科学计算中的一些标准问题。例如数值积分和微分方程求解,扩展的矩阵计算,最优化,概率分布和统计函数,甚至包括信号处理。练习好碧玉刀和长生剑,就足以解决常见的计算问题,并不需要自己哼哧哼哧造轮子写函数了。

孔雀翎:Matplotlib

孔雀翎

孔雀的尾羽聚合了世间所有的色彩,做数据研究同样需要漂亮的可视化工具。Matplotlib 是 python 下最著名的绘图库,提供了一整套和 Matlab 相似的 API,十分适合交互式绘图。也可将它作为绘图控件,嵌入各种应用程序中。在其基础之上,还有更为有趣的绘图工具 Seaborn 和 Bokeh。

多情环:Pandas

多情环

在数据整理阶段,我们经常需要连接读定不同类型的数据源,处理不同格式的数据对象,如果只使用 Numpy 会很麻烦。Pandas 使 Python 具备了类似 R 的数据框对象。这样方便用于真实江湖的数据处理和分析,它提供大量易用、高效的数据操作函数库,能执行 join 以及其他 SQL 类似的功能来重塑数据,支持各种格式的输入输出数据。它与 Python 生态中的其它模块也有很好的整合,多情环名不虚传。

离别钩:Statsmodels

离别钩

Statsmodels 是 python 中专门用于统计分析的模块,提供各种回归模型函数,包括广义回归和稳健回归,还提供大量时间序列分析函数,例如 ARIMA/VAR,各种经典假设检验和非参数方法一个都不少。有了离别钩,你可以随时和 R 说离别。

霸王枪:Scikit-learn

霸王枪

Scikit-learn 是非常著名的机器学习库,它提供一个统一的接口来使用不同模型,有助于迅速地在数据集上应用流行的算法。它包含了许多用于标准机器学习任务的工具,例如聚类、分类和回归等。不仅是各种算法,机器学习中重要的特征选择和模型评估均在模块中包含了。值得一提的另一个模块 gensim:提供了词向量、主题模型等函数。有了这两种模块,天下就绝没有不能解决的事。

一口箱子:TensorFlow

一口箱子

古龙并未写完最后的第七种武器,通常会将《英雄无泪》中的一口箱子作为最为神秘最为强悍的终级武器。在 Python 生态中,一口箱子只能属于 TensorFlow。它作为名门大派出品的深度学习框架,一出世就备受瞩目。TensorFlow 提供了 C++ 和 python 两种接口,让你能高效的设计各种机器学习算法,并且能运行在各类硬件架构之上。此外还有各种强力组件搭配,TensorBoard 用于监控学习过程中的各项参数,TensorServer 可用于生产环境的模型部署,甚至传说还有 TPU 这种专门用于深度学习的芯片。

在数据江湖中,没有顺手的武器,英雄亦束手加班中。七种武器虽强,但器物总是死的,更重要的是从器物的把玩中,能领悟到运用之妙,数据之道。一件武器是否能令读者觉得神奇有价值,主要还是得看使用它的是什么人。有赤兔的吕布没有看到明天,没有玄铁重剑的杨过却有更进一步的修炼。

江湖路远,少侠们一路走好。

编者注:若想了解 RStudio 为 TensorFlow 制作的接口,请点击网页 https://rstudio.github.io/tensorflow/

作者简介

一个喜欢折腾数据的人,与李舰合著了《数据科学中的 R 语言》,现就职于蚂蚁金服。

一个喜欢折腾数据的人,与李舰合著了《数据科学中的 R 语言》,现就职于蚂蚁金服。肖凯

敬告各位友媒,如需转载,请与统计之都小编联系(直接留言或发至邮箱:[email protected]),获准转载的请在显著位置注明作者和出处(转载自:统计之都),并在文章结尾处附上统计之都微信二维码。

统计之都微信二维码

← 热门数据挖掘模型应用入门(一): LASSO 回归 R 与并行计算 →

发表 / 查看评论


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK