为何Python是数据科学家的最佳选择?

AI 前线导读:本文是原作者收集到的 Python 经典文章合集。作者将收集到的文章分为十类,方便读者索引,并对每篇文章做了简短介绍,最后给出原文链接。本文适合收藏作为参考手册使用。

更多干货内容请关注微信公众号“AI 前线”,(ID:ai-front)

去年我在使用 Medium 平台时,只用它来读别人写的文章,也就是在消费内容,从而读了一大堆关于 Python 的文章。最近,我开始使用该平台的社区功能,例如去关注别的开发者。我也学会了如何给别人的文章点赞,并将这些文章中最有趣部分的标注出来。我的目标是成为 Medium 平台开发者社区中的活跃成员。

在本文中,我想要向你分享 从去年至今我发现的最有趣、最深刻、最有启发性的文章。 我的另一个目标是创建一个系统、全面的列表,为 Python 学员们记录最有价值的内容。

我收藏了非常多精彩的资源,很难说哪一个是最好的。因此,我将这些文章分为 10 类——顺便一提,这也恰好反映出 Python 的多用途、多目标的性质。

  1. 聊天机器人与自然语言处理(NLP)

在你正式开始阅读之前,我还要再啰嗦一句:你应该怎样利用这篇文章呢?你并不需要一口气将本文读完。你只需收藏本文,然后将其作为入门教程或参考手册。有了上面的分类,你可以直接跳到你最感兴趣的部分。

如果我这篇文章有任何的遗漏,或是你有其他好的资源推荐,欢迎留言,以便于我升级本文内容。在此谢过了!

此文是一个全面的 Python 介绍。如果你初学 Python,那么这篇文章是必读的。文章介绍了 Python 的基础知识:变量、控制流、循环及迭代、集合类、数组、结构体、字典等等。此文也涵盖了面向对象编程的基础。因此,如果你刚刚开始学习 Python 开发,那么从此文开始读起是最合适的。


你是否了解 Python 中下划线 ( _ ) 的特殊含义呢?Python 中的下划线有五种不同用法。阅读这篇文章学习一下吧!


数据类(data classes)是 Python3.7 中的一个全新的特性。当需要创建特定数据域的类时,数据类可以大大简化模型。这篇文章为数据类提供了一个通俗易懂的解释,并给出了几个例子。


Python3.6 中有声明类型的语法。但是你需要使用外部工具,如 mypy 或 PyCharm,来强制类型检查。这篇文章非常适合入门学习如何在你的代码中实现静态类型。


该教程展示了一个迭代器类(itertor class)的例子,并讲解了各种不同的生成器函数(generator functions)。

“生成器函数允许你声明一个具有迭代器功能的函数。使用生成器函数,程序员可以快速、便利、简洁地构建迭代器。”

“迭代器指的是可在其上迭代(循环)的对象,其作用是为数据抽象出一个容器,使其表现出与迭代对象类似的功能。你可能在日常开发中已经不知不觉使用了一些迭代对象,如字符串、列表、字典等等。”


这篇文章和接下来的一篇(1.7)讲解了 Python 中的多线程和并行处理的相关知识。这一篇简介了 Python 的有关进程和线程的并行处理特性,下一篇文章介绍了更多高级知识。


本文很好地概览了多线程及其最复杂部分:线程同步及通信。


本文给出了一些数据科学领域编写产品级别代码的建议。这些建议有助于组织、优化你的代码。文章包含许多主题,包括日志、instrumentation 及测试,介绍了版本控制的基础知识,并就代码可靠性给出了若干建议。文章中的建议很中肯,而且很有实用价值。


如果你刚刚入门 Pandas 和 DataFrames,并对 SQL 理解得比较到位,那么我强烈建议你阅读这篇文章。这篇文章整理了一个珍贵的术语库,并附有样例。文章可以帮助你将 SQL 查询需求转换为 Pandas 语法并学习使用这一新语法。


Python 开发者们很高产,但大家应该都听说过这件事:Python 很慢。我觉得这篇文章很有必要一读,因为它介绍了 Python 的性能优化特性。

“运行时间已经不再是你最珍贵的资源了。如今,一家公司最昂贵的资源是其员工的时间。”


如果你需要用 Pandas 处理海量数据,你便需要格外注意编码方式,以求性能最优化。

本篇及下一篇文章回顾了在 Pandas DataFrame 下实现函数的几种方法,并对比了他们的运行速度。


在 Pandas DataFrame 下实现函数的另外一些方法。这些方法利用并行来获取更快的速度。


本文比较了三种并行 IO 操作方法的内存效率。最新的方法是使用 asyncio 模块。该模块是 Python 3.5 及以上版本的 Python 标准库的一部分。如果你希望你的代码既性能好又内存占用小,那么你很适合读一下这篇文章。


这篇文章讲解了如何使用 Aho-Corasick 算法和字典树数据结构在海量数据中进行搜索和替换关键字。这种巧妙的操作令我十分惊叹。


这篇文章展示了多进程 Python 应用的一个高级优化技术。


介绍了一个速度奇快的新型微服务框架:Japronto。


这个教程很适合新手入门。该教程总结了 PyCharm 和 Anaconda 的安装过程,并含有一个十分钟左右的视频,向你展示安装的详细步骤。


这篇文章讲解了如何在软件开发过程中使用 Docker。对于新手是一个很好的入门教程。

Docker 是一个开源工具,可在软件容器内部自动部署应用。


本文是个非常好的教程,附有示例 Docker 文件——如果你在使用 Docker 开发 Python Web 应用,那么这篇文章值得一看!


Apache Spark 是一个大型数据处理引擎,可以通过 PySpark 库在 Python 中使用。在大数据和机器学习领域,该库是一个优秀的原型构建工具。这篇文章可作为在 Python 中使用 Spark 的入门教程。


对于 Python 程序员来说,Jupyter 是一个必不可少的工具。这篇文章很好地介绍了 Jupyter 的最新版本。


这篇文章采用展示示例代码和视频的形式,讲解了八大机器学习算法:线性回归,逻辑回归,决策树,支持向量机,K 近邻,随机森林,K-Means 聚类及主成分分析。这是我最喜欢的文章之一,初学者必读。


本系列共 7 篇文章非常精彩(感谢作者 Daniel Jeffries 的贡献!)。只看标题就可以知道:不擅长数学不代表你学不懂人工智能原理!试一试吧——真的很值得一读!

没关系!我也有你这样的小尴尬,于是我找了一些有用的书籍和网站,帮助你快速学习进步。


4.3 机器学习从入门到精通:超详细 Kaggle 比赛完成步骤,作者 Oren Dar

参与 Kaggle 比赛是一个提升机器学习技术的绝佳方式。该教程向你展示了如何解决一个 Kaggle 上的机器学习问题,并向比赛提交你的结果。



现在你有一个模型,你希望能从 web 上访问它。实现这一功能的方法有好几种,但最快、最健壮的方法就是使用 TensorFlow serving。


线性回归是在因变量和一个或多个独立变量之间建立线性关系的方法。它是机器学习领域中应用最广泛的算法之一。

这篇文章讲解了线性回归的数学基础,然后给出了使用 Python Statsmodels 和 Scikit-Learn 库的例子。如果你是一个新手,我强烈建议你阅读这篇文章。


在这篇文章中,Elior 讲解了三种维数约减方法:主成分分析(PCA),t-SNE 和自编码器。

“我们对于维度约减的需求常常与可视化相关(将维度约减为 2-3 维以供作图),但也不全是这样。有时候我们可能会对性能要求较高,可以忍受一些精度上的牺牲。这样,我们就能将 1,000 维的数据约减到 10 维,从而更快地操作这些数据(比如计算距离)。”


这份教程介绍了使用随机森林解决机器学习问题的详细步骤。该文讲解得十分细致,从数据的准备和清洗,到模型的构建和改进,再到最后的结果可视化。十分值得一读。


在机器学习领域中,需要学习的概念有很多。其中之一便是逻辑回归。这篇文章提供了一个良好的起点,我已经给我的学员们推荐了好几次了。

“逻辑回归是一种机器学习分类算法,用来预测因变量所属类别的概率。在逻辑回归中,因变量是一个二元变量,其数据值为 1(表示‘是’‘成功’等等)或 0(表示‘否’‘失败’等等)。”


该系列教程介绍了特征工程。特征工程是数据科学家最重要的任务之一。特征工程的本质是什么?下面引述了一个经典的解释:

“提出特征是非常困难、耗时的,需要专家级别的知识。‘应用机器学习’本质上就是特征工程。”


这篇文章展示了十种实用的机器学习算法,解释了其基本概念,并推荐了入门级的 Python 库和介绍教程。


我爱好知识共享,而 OpenDataScience 的机器学习课程是一个很好的资源。如果你对这个系列感兴趣,你可以从这篇文章的开头找到课程的所有主题。


本文是很好的时间序列分析的入门文章。文中包含了一个评估 Tesla 和 GM 股价的例子,还用 Facebook Prophet 包构建了一个预测模型。


FaceID 的实现算法是苹果公司的专利产品。这篇文章分析了 FaceID 可能的工作原理,并使用 Siamese 卷积网络给出了一个 FaceID 的实现,对概念加以验证。


根据这个教程,你可以学到如何使用 TensorFlow 在 COCO 数据集上搭建自己的物体识别引擎。


近日,人们提出了用深度神经网络换脸的概念。Deepfakes 是这一领域最有名的算法之一。该算法甚至被用于一些主流媒体中。

这篇文章展示了换脸算法如何应用在游戏行业中,并解释了该算法的基本原理。我相信我们从中可以得出这样一个结论:深度学习几乎可以被应用到任何行业 / 领域中。


我对图像识别的概念很感兴趣。这篇文章采用了“边做边学”的思想,主要讲述了构建以下两个应用的详细步骤:

  • 一个基于 Flask 的 web 应用,与基于 Keras 的图像识别系统相连

  • 一个基于 Google 云存储的图像存储系统


5.5 用基于 Keras 和 TensorFlow 的迁移学习和调优构建图像识别系统,分类(几乎)任意物体,作者 Greg Chu

通过使用相似任务的预训练网络,你可以让自己的卷积神经网络训练速度更快。

“众所周知,卷积网络的训练需要消耗大量数据和资源。例如,ImageNet ILSVRC 模型的训练使用了 120 万张图片、多个 GPU,耗时长达 2-3 周。”


6. 聊天机器人与自然语言处理(NLP)

文本分类是自然语言处理中的基本概念之一。这篇教程介绍步骤如下:

  • 实用技巧和 NLTK 简介


6.2 使用神经网络进行文本分类,作者 gk_

这篇文章讲解了文本分类的工作原理,并演示了如何用两层神经网络实现文本分类。


这篇文章介绍了如何将对话内容定义转换为 TensorFlow 模型,以及如何据此搭建聊天机器人框架。


通过学习本教程,你可以自己创建一个简单的基于 Telegram 的聊天机器人,并在 Heroku 上部署这个机器人。


这是另一个基于 Telegram 的聊天机器人的例子。该文章讲解了如何利用 Zappa 工具将机器人部署到 AWS Lambda 平台上。该任务一周就能完成,听起来很有趣,不是吗?:)


该系列文章和接下来的一篇文章(7.2)可以帮助你通过搭建一个区块链了解其工作原理。我一直喜欢通过动手做来学,这也是为什么我尤其喜欢这类文章。




这篇文章分为 3 部分。作者是一个软件工程师,正在为一个个人项目搭建微服务。小提示:构建个人项目是提升开发技术的绝佳方式!该系列教程内容如下:

在 Docker 中创建微服务的基础设施:

最后同样重要的,构建微服务的商业逻辑:


ElasticSearch 是实现自由文本搜索的一个优秀的工具。通过学习本教程,你可以构建一个 ElasticSearch 服务器,向其上再如数据,并将其与一个基于 Django 的应用连接起来。


BeautifulSoup 是一个抽取 HTML 页面数据的有用工具。这篇文章阐述了其工作原理。


利用 Scrapy,你可以下载网站并使用 CSS 选择器从 HTML 页面中抽取数据。这是 web 爬取的一个成熟的解决方案。这篇文章演示了这种机制是如何工作的,并给出了一个从真实网站中爬取数据的例子。



这篇文章为使用 Python 中的 API 提供了一个很好的例子。我相信作者提出了一个重要问题:在疯狂袭来的信息海洋中选择最有用信息是一个很困难的任务。实际上这也就是我创建这篇文章合集供大家参考的原因。

Medium 平台上有大量内容、诸多用户和堆积如山的文章。当你想要寻找最有趣的用户来与之互动时,你常常会被洪水般的视觉噪声所干扰。

这篇文章给出了一个非常实用的表格,帮助你根据应用场景选择合适的数据可视化方法。随后,文章深入分析了 6 种数据可视化类型,并给出了使用 Python Matplotlib 的例子,实现了以下内容:两种散点图,线图,柱状图,条形图和箱形图。


这一系列文章回答了以下问题:“如何为我们的可视化添加交互功能?”该教程使用 Python,带领你体验完全交互的例子,即 Bokeh 交互可视化库,并附有公共数据集。

以上就是文章合集的所有内容。衷心感谢这些优秀的资源,其中有很多已经为我的 Python 学员们提供了帮助。我在阅读整理的过程中也学到了很多。

如果喜欢本合集,请点赞,以便更多的人能看到这篇文章。如果有任何建议或问题,欢迎留言!

怎样成为一个数据科学家?

(注:本文转载自网络)

线性代数、概率论、数据库……没错,这一坨东西都是成为一个数据科学家的基础课程。 如果你一门课都没有学过, 呵呵,不好意思,请您看看门牌号,你可能走错教室了。

统计学是在统计实践的基础上,自17世纪中叶产生并逐步发展起来的一门社会学科。它是研究如何测定、收集、整理、归纳和分析反映客观现象总体数量的数据, 以便给出正确认识的方法论科学,被广泛的应用在各门学科之上,从自然科学和社会科学到人文科学,甚至被用来工商业及政府的情报决策之上。

数据科学家当然也得会编程,像什么Python,Java,JS,R啥的都得会点。Python和R有很多的科学计算工具集,掌握Python和R,您将 在数据的道路上的得心应手;Java 是 Hadoop的基础实现语言,大数据这么热,您也得会玩两手; 想做出漂亮动态的图表,JS有时候也得会玩。

JavaScript是一种广泛用于客户端网页开发的脚本语言,它可以用来给HTML网页添加动态功能,实现与用户的交互。它最初由网景公司设计,是一种 动态、弱类型、基于原型的语言,现在是甲骨文公司的注册商标。JavaScript是一种脚本语言,其源代码在发往客户端运行之前不需经过编译,而是将文 本格式的字符代码发送给浏览器由浏览器解释运行。 本课程通过JavaScript语言学习程序设计的基本概念:变量、计算、控制、循环、函数等,并深入理解JavaScript如何与浏览器和HTML的 诸元素协同工作。

本课程教你零基础学Python语言。

使用Python抓取及分析互联网数据

与其说R是一门语言,不如说R是一个平台,一个用于数据统计、绘图的平台。这个平台包罗万象,几乎所有与数据统计有关的内容都被囊括其中。在CRAN(Comprehensive R Archive Network)的Task Views中,计算物理、计

量经济学、实证金融、生态与环境数据分析、统计遗传学、医学图像分析等基于数据统计的科学研究都被纳入其中。当然,我们最感兴趣的聚类分析、判别分 析、时间序列分析、网络分析、机器学习、高性能计算等内容也自然是其中的重要组成部分。这次,我们选择这个语言及平台中非常小的一部分内容进行简要介绍。

掌握Java基本语法、能够查找并运用Java API;利用Java的基本类库、图形用户界面方法、多线程、网络操作等技术编写Java基本应用程序。

《数据统计分析师SPSS认证》课程注重培养学员的实证分析能力,通过诸多案例讲解不同的应用背景。我们一方面尽可能呈现SPSS全貌,使学员对软件有总 体的认识。

机器学习(Machine Learning)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行 为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。它是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各 个领域,它主要使用归纳、综合而不是演绎。

文本数据挖掘(Text Mining)是指从文本数据中抽取有价值的信息和知识的计算机处理技术。顾名思义,文本数据挖掘是从文本中进行数据挖掘(Data Mining)。从这个意义上讲,文本数据挖掘是数据挖掘的一个分支。文本数据挖掘是一个边缘学科,由机器学习、数理统计、自然语言处理等多种学科交叉形 成。

数据可视化是关于数据之视觉表现形式的研究;其中,这种数据的视觉表现形式被定义为一种以某种概要形式抽提出来的信息,包括相应信息单位的各种属性和变量。 数据可视化技术的基本思想是将数据库中每一个数据项作为单个图元元素表示,大量的数据集构成数据图像,同时将数据的各个属性值以多维数据的形式表示,可以从不同的维度观察数据,从而对数据进行更深入的观察和分析。

数据(big data),或称巨量资料,指的是所涉及的资料量规模巨大到无法透过目前主流软件工具,在合理时间内达到撷取、管理、处理、并整理成为帮助企业经营决策更 积极目的的资讯。

大数据技术可运用到各行各业。宏观经济方面,IBM日本公司建立经济指标预测系统,从互联网新闻中搜索影响制造业的480项经济数据,计算采购经理人指数的预测值。印第安纳大学利用谷歌公司提供的心情分析工具,从近千万条网民留言中归纳出六种心情,进而对道琼斯工业指数的变化进行预测,准确率达到87%。制造业方面,华尔街对冲基金依据购物网站的顾客评论,分析企业产品销售状况;一些企业利用大数据分析实现对采购和合理库存量的管理,通过分析网上数据了解客户需求、掌握市场动向。

不要被这么多的学习内容吓坏了, 不需要为每一个算法或工具而重复造轮子,业界已经有很多成熟的解决方案。

从体系结构的视角出发, 我们深入分析了流行的三大数据处理框架hadoop, Spark和GraphLab. 以这个分析为根据, 为Hadoop开发了一套C++扩展,Nativetask, 以消除计算模型和执行方式所带来的干扰.

为什么R语言是学习数据分析的第一选择

专注于一种编程语言的原因是,你需要更多地关注过程和技术,而不是语法。你需要掌握如何通过数据科学工具来分析数据,以及如何解决问题。事实证明,R语言是最佳的选择。

刚开始学习数据科学的人都会面对同一个问题:

不知道该先学习哪种编程语言。

不仅仅是编程语言,像Tableau,SPSS等软件系统也是同样的情况。有越来越多的工具和编程语言,很难知道该选择哪一种。

事实是,你的时间有限。学习一门新的编程语言相当于一项巨大的投资,因此在选择语言时需要有战略性。

很明显,一些语言会给你的投资带来很高的回报(付出的时间和金钱投资)。然而其他语言可能是你每年只用几次的纯粹辅助工具。

我给你的建议就是:先学习R语言

在说明为什么你应该学习R语言之前,我想强调的是,在开始学习数据科学时,你应该学习一种语言。

有些人问我是否应该学习在学R语言的同时学习Python。我的答案基本上是否定的,除非你需要使用一种以上的语言,否则你应该选择一种语言进行学习。

专注于一种编程语言的原因是,你需要更多地关注过程和技术,而不是语法。你需要掌握如何通过数据科学工具来分析数据,以及如何解决问题。事实证明,R语言是最佳的选择。

我建议你将R语言作为你的第一个“数据科学编程语言”。虽然也有例外,比如特定的项目需要。

因为R语言正在成为数据科学的“通用语言”

这并不是说R语言是唯一的语言,也不是说它是每个工作的最佳工具。然而,它是使用最广泛的,而且越来越受欢迎。

O' reilly media在过去几年中进行了一系列数据科学调查,分析了数据科学趋势。在2016年的调查报告中,R语言是最常用的编程语言(如果排除SQL的话,在本文中它不能称为编程语言)。57%的调查人群使用R语言(使用Python的比例为54%)。

另一个常见的语言排名系统是Redmonk编程语言排名,它由GitHub(代码行)和Stack Overflow(标签数)的流行指数派生而来。截至2016年11月,R语言在所有编程语言中排名第13。此外,R语言多年来一直呈持续上升趋势:

此外还有TIOBE指数(按搜索引擎搜索次数对编程语言进行排名)。在TIOBE指数上,R语言十年来呈现出稳定上升趋势。

在招聘数据科学家的几家顶级公司中,R语言使用程度非常高。在我认为现代经济中最优秀的两家公司——Google和Facebook 都有使用R语言数据科学家。

除了像Google,Facebook和微软这样的科技巨头,R语言在美国银行,福特,TechCrunch,Uber和Trulia等众多公司都有广泛的应用。

R语言在学术界很受欢迎

R语言不仅仅是一个行业工具。它在学术科学家和研究人员中也非常受欢迎,最近著名《自然》杂志上发表的R语言概况也证实了这一点。

R语言在学术界的备受欢迎,因为它创造了供应行业的人才库。

换句话说,如果最优秀、最聪明的人群在大学学习了R语言,这将加大R语言在行业中的重要性。当学者、博士和研究人员离开学术界从事商业活动时,他们又将产生对R语言人才的需求。

此外,随着数据科学的成熟,商业届的数据科学家将需要与学术届的科学家进行更多的沟通。我们需要借鉴技术和交流观点。随着世界转变为数据流时,学术科学与面向商业的数据科学之间的界线会变得模糊。

通过R语言学习“数据科学的技能”是最简单的

然而,R语言的普及性并不是学习R语言的唯一原因。

在选择语言时,你需要一种在这些领域都具有重要功能的语言。同时你需要执行这些任务的工具,以及在你所选语言中来学习这些技能的资源。

如上所述,你更多地需要关注流程和技术,而不是语法。

你需要学习如何解决问题。

你需要学习如何在数据中找到真知灼见。

为此,你需要掌握数据科学的3个核心技能领域:数据处理,数据可视化和机器学习。在R语言中掌握这些技能将比任何其他语言都容易。

一般来说,数据科学中80%的工作都是数据处理。通常情况下,你需要花费大量时间来整理你的数据。R语言中有一些很棒的数据管理工具。

R语言中的dplyr包使数据处理变得容易,这可以大大简化数据处理的工作流程。

ggplot2是最佳的数据可视化工具之一。ggplot2的好处是,在学习语法的同时,还学习如何思考数据可视化。

所有的统计可视化都有很深层的结构。存在构建数据可视化的高度结构化框架,ggplot2基于该框架。

此外,当将ggplot2和dplyr组合在一起时,从数据中得出相关见解几乎毫不费力。

最后,还有机器学习。虽然我认为大多数数据科学初学者不应该急于学习机器学习(首先掌握数据探索更为重要),机器学习是一项重要的技能。当数据探索不再带来洞察力时,你则需要更强大的工具。

之后再学习更多的语言和工具

最终你会想学习更多的编程语言。就像工具箱中没有一个最好的工具一样,没有一种编程语言能够完美的解决你所有的数据问题。

以下是在学习R语言之后,你可以考虑学习的语言:

Python是一种值得考虑的多用途编程语言。在O'Reilly最近的调查中,Python是数据科学家中第二受欢迎的编程语言。它具有优秀的可视化工具,以及机器学习工具。我认为,对于大多数人来说Python是应该学习的第二种语言。

我超爱D3。D3中创建的可视化效果很棒,而且D3可视化的交互性非常适合构建仪表板。但它的伸缩性不够好。对我来说,D3更像是一个“工匠的工具”,它非常适合构建一个优雅的数据可视化,但是在需要几十个合作伙伴支持的情况下,手动创建这样的东西是不可能的。

与此同时,我还乐观地认为,R语言的ggvis将允许R语言用户创建高度动态和交互性的可视化,因此在某种意义上,R语言用户需要学习R的ggvis而不是D3。

总结:学习R语言,并集中精力

如果你是初学者,R语言是很好的选择。同时需要专注于学习数据科学的技能。

在学习过程中,你可能会看到很多新技术和新工具,或者一些令人眼花缭乱的数据可视化。

看到其他人的成果(并发现他们正在使用不同的工具)可能会导致你想尝试其他的东西。相信我:你需要集中注意力。你需要花上几个月(或更长时间)才能真正投入到一个工具中。

如上所述,如果你确实希望在数据科学工作流程中提高技能。至少在数据可视化和数据处理方面,你得具备扎实的技能。

在R语言上花费100个小时,将比在10个不同工具上各花费10个小时得到更高的回报。最后,通过集中精力,你的时间回报率将更高。不要因为“最新,最炫的事物”而分心。

我要回帖

更多关于 数据科学为什么要学python 的文章

 

随机推荐