专栏首页玉树芝兰如何用《玉树芝兰》入门数据科学?

如何用《玉树芝兰》入门数据科学?

链接起散落的文章,给《玉树芝兰》数据科学系列教程做个导读,帮你更为高效入门数据科学。

(由于微信公众号外部链接的限制,文中的部分链接可能无法正确打开。如有需要,请点击文末的“阅读原文”按钮,访问可以正常显示外链的版本。)

问题

2017年6月以来,我陆续在自己的微信公众号《玉树芝兰》里,写了一系列数据科学教程。

这源于一次研究生课编程工作坊尝试。受D9X合伙人阎教练的创新思维训练营启发,我在课后把词云制作流程详细记录转述,分享给了大家。

没想到,这篇《如何用Python做词云?》受到了读者们非常热烈的欢迎。

此后,一发不可收拾。

应读者的要求,结合我自己的学习、科研和教学实践,我陆续分享了更多与数据科学相关的文章。

读者越来越多,我收到的问题也愈发五花八门。

许多读者的问题,我其实都已经在其他的文章里面讲解过了,因此有时用“请参考我的另一篇文章《……》,链接为……”来答复,也帮助读者解决了问题。

在建构同理心(empathy)之前,估计我会问出这样的问题:

他们为什么不翻翻我的其他文章呢?

但现在,我能感受到他们的疑惑:

我哪里知道你写过另一篇文章?

散落在各处的文章,不容易系统学习和检索。于是我在公众号里面,给不同类别的文章做了索引。

然而,这样简单的标题索引,依然无法满足许多读者的需求

有的读者跟着教程做完了词云,发现如果对中文文本做分析,就会出现乱码:

这时候,你该怎么办呢?

更进一步,如果你希望把词云的外边框变成指定的形状,又该如何操作?

光看标题,你可能不容易发现哪一篇文章会帮助自己解决这些问题,甚至可能会选择放弃

我决定做这个导读。

这篇文章,不再是从任务出发,简单罗列文章标题和链接;而是从先易后难的学习步骤,来重新组织文章的顺序,并简要介绍内容和提示可能遇到的问题。

希望对你的学习能有帮助。

基础入门

大部分的教程,都是在Python运行环境Jupyter Notebook下运行和演示。

安装这个运行环境,最简单的方法,就是安装Anaconda集成套件。

请先收看这个视频教程《如何安装Python运行环境Anaconda?(视频教程)》,自己尝试安装Anaconda,运行起第一个Jupyter Notebook,输出一个“Hello world!”出来。

有了这个基础,你就可以尝试不同的数据科学任务了。

我的建议是先做词云。

因为简单,而且有成就感。

跟着图文教程《如何用Python做词云?》一步步执行。用几行Python代码,你就可以做出这样的词云来。

我还专门把它升级做成了视频教程《如何用Python做词云?(基础篇视频教程)》,供你观看。

注意图文教程和视频内容并不完全一致

视频教程目前全系列采用Python 3.6版本。

这个变化的发生,是因为技术的发展。Python已经逐步要过渡到3.X版本了。许多第三方软件包都已经宣布了时间表,尽快支持3.X,放弃2.X的支持。

其实才半年而已,你就可以感受到技术、社群和环境的变化有多快。

可是目前某些软件包(例如后面我们要提到的TuriCreate),依然只能支持2.X版本Python。

你需要暂时做个“两栖动物”,千万不要束缚自己,因为“立场原因”固执着不肯用低版本Python。这样吃亏的是自己。

怎样才能做个“两栖动物”呢?

办法之一,就是使用Anaconda的虚拟环境。可以参考《如何在Jupyter Notebook中使用Python虚拟环境?》。

你初始安装版本针对Python 2.7的Anaconda,并不妨碍你快速建立一个3.6版本Python的虚拟环境

有了这个秘籍,你就可以在不同版本的Python之间左右逢源,游刃有余了。

如果你想做中文词云,请参看这篇文章《如何用Python做中文分词?》。你就能做出这样的词云了。

如果你希望改变词云边框外观,就参考这篇文章《Python编程遇问题,文科生怎么办?》的最后部分

到这里,你已掌握Python运行环境安装、虚拟环境建立与使用、文本文件读取、常见软件包调用、可视化分析与结果呈现和中文分词等基本功夫了。

回头望去,是不是成就感爆棚呢?

自然语言处理

下一步,我们来尝试自然语言处理(Natural Language Processing, NLP)。

情感分析,是NLP在许多社会科学领域热门的应用之一。

如何用Python做情感分析?》这篇文章,分别从英文和中文两个案例,分别采用不同的软件包,针对性地解决应用需求。

你只需要几行代码,就能让Python告诉你情感的取向。是不是很厉害?

有了情感分析做基础,你可以尝试增加维度,对更大体量的数据做分析。

增加时间维度,就可以持续分析变化的舆情。

如何用Python做舆情时间序列可视化?》这篇文章,一步步指引你在时间刻度上可视化情感分析结果:

这图难看了一些。

不过我们需要容忍自己起步时的笨拙,不断迭代与精进。

希望一出手就满分,对极少数天才,确实无非是日常。

但对大多数人,是拖延症的开始。

你可能迫不及待,尝试换自己的数据做时间序列可视化分析。

不过日期数据如果与样例有出入,可能会出现问题。

这时候,不要慌,请参考《Python编程遇问题,文科生怎么办?》的第二部分,其中有详细的错误原因分析与对策展示。

看过后,分析结果图也会迭代成这个样子:

刚刚这些情感分析,其实只是二元分析(正面vs负面)。但是我们都知道,人的情感其实是多方面共同构成的。

如何从文本中,分解出多维度的情感特征变化呢?

如何用Python和R对《权力的游戏》故事情节做情绪分析?》一文分析了《权力的游戏》中某一集剧本,你会获得这样的结果:

如果你是《权力的游戏》剧迷,请告诉我,这张图描绘的是哪一集?

先猜猜看,然后再打开文章,跟结尾做对比。

这篇文章的可视化分析部分,用的是R。

R也是数据科学领域一个非常受欢迎的开源工具。它的通用性和热度可能不如Python(毕竟Python除了数据科学,还能干许多其他的事儿),但是因为有统计学界诸多科学家的拥护和添砖加瓦,因此有非常好的一套生态系统。

到这里,你对情感分析逐渐有点儿感觉了吧?

课间答疑

随着知识、技能和经验的积累,你的疑问可能也逐渐增多了吧?

有的同学对这种教学方式有疑问——案例挺有意思,也很简单易学,但是怎么把它用到我自己的学习、工作和科研中呢?

我为你写了一篇答疑说明,叫做《文科生如何高效学数据科学?》。文中提到了以下几个方面:

  • 如何指定目标?
  • 如何确定深度?
  • 如何加强协作?

提到协作,就不能不说Github这个全球最大的开源代码托管仓库了。

在咱们的教程里,也多次使用Github来存储代码和数据,以便你能够重复运行教程中的结果。

如何高效入门Github?》一文提供了文档和视频教程资源,希望能对你掌握这个数据富矿提供帮助。

不少读者在这个阶段常提出这个问题:老师,想学Python,推荐本书呗。

看来,你已经明白了Python的好处了,对吧?

如何高效学Python?》帮助你给自己的学习特性做出了分类。根据分类的结果,你可以选择更适合自己的学习路径。

机器学习

你可以尝试做更高级的分析了。

例如机器学习(Machine Learning)。

机器学习的妙用,就是在那些你(其实是人类)无法准确描述解决步骤的问题上,让机器通过大量案例(数据)的观察、试错,构建一个相对有用的模型,来自动化处理问题,或者为人类的决策提供辅助依据。

大体上,机器学习主要分为3类:

  • 监督学习(Supervised Learning)
  • 非监督学习(Unsupervised Learning)
  • 强化学习(Reinforcement Learning)

目前本专栏介绍了前两类的一些例子。

监督学习与非监督学习最大的差别,在于数据。

数据已有标注(一般是人工赋予标签),一般用监督学习;

数据没有标注,一般只能用非监督学习。

监督学习部分,我们举了分类(classification)任务的例子。

贷还是不贷:如何用Python和机器学习帮你决策?》中的案例,选择了贷款审批辅助决策。

具体的机器学习算法,是决策树(decision tree)。

有同学表示,绘制这棵决策树的时候,遇到了问题。

这主要是因为运行环境的差异和依赖工具的安装没有正确完成。

Python编程遇问题,文科生怎么办?》的第一部分,对这些问题做了详细的阐述,请根据列出的步骤尝试解决。

Python编程遇问题,文科生怎么办?》这篇文章展示给你了一种任务导向的学习方式,期望它可以提升你Python语言和数据科学学习效率。

非监督学习部分,我们讲述了《如何用Python从海量文本抽取主题?》。

文中用一种叫做LDA的聚类(clustering)方法,帮你从可能感兴趣的浩如烟海文档中,提取出可能的类别,对应的主要关键词,并且做了可视化处理。

如果你不是从海量文本归纳主题,而是希望对单一长文本提取若干重要关键词,该怎么办呢?

如何用Python提取中文关键词?》一文会对你的任务有帮助。但注意它并不需要使用机器学习算法,而是采用相对成熟的算法来直接解决问题。

深度学习

深度学习,指用深度神经网络(Deep Neural Network)进行机器学习。

相对于传统机器学习方法,它使用的模型结构更为复杂,需要更多的数据支持,并且训练起来要消耗更多的计算资源和时间。

常见的深度学习应用,包括语音识别、计算机视觉和机器翻译等。

当然,新闻里面最爱提的,是下围棋这个事儿:

我们提供的案例,没有那么挑战人类智能极限,而是跟日常工作和生活更加相关。

如何用Python和深度神经网络发现即将流失的客户?》为你介绍了深度神经网络的基本结构。

这篇文章通过客户流失预警的例子,讲述了使用前馈神经网络进行监督式学习的基本样例。

实际操作部分,采用Tensorflow作为后端,tflearn作为前段,构造了咱们自己的第一个深度神经网络。

如何用Python和深度神经网络发现即将流失的客户?》一文末尾还为你提供了进一步掌握深度学习的相关资源。

如果你需要安装Tensorflow深度学习框架(Google出品哦),欢迎先阅读这篇《Tensorflow执行pip升级安装的坑》。

有了深度神经网络的基础知识,我们折腾计算机视觉。

如何用Python和深度神经网络识别图像?》一文,举例分类哆啦a梦和瓦力这两个机器人的各种花式图像集合。

卷积神经网络(Convolutional Neural Network, CNN)这时就大放异彩了。

这篇文章,帮你分析了卷积神经网络中,不同层次(Layer)的作用。我们尽量避免用公式,而是采用图像、动图和平实的语言描述来解释。

这次我们使用的深度学习框架,是苹果的TuriCreate。在后台,我们调用了一个非常深层次的卷积神经网络,帮我们投机取巧(迁移学习),获得了非常高的分类准确率。

有的读者自己尝试,测试集准确率居然达到100%(视运行环境不同,有差异),大呼过瘾。可同时又觉得不可思议。

为了解释这种“奇迹”,同时解答读者“如何在私有数据集上以图搜图”的疑问,我写了《如何用Python和深度神经网络寻找近似图片?》。

希望读过此文,你对迁移学习(Transfer Learning)有了更深入的认识。

另一批作者又来发问了:

老师,我用Windows,死活就是装不上TuriCreate,可怎么办?

我替他们着急的时候,恰好找到了一个宝贝。于是写了《如何免费云端运行Python深度学习框架?》。

免费使用GPU,用极为简易的操作,就可以在Google云端Linux主机上部署和执行苹果深度学习框架……

听着是不是像做梦啊?

感谢Google这个为人类知识积累做出贡献的企业。

数据获取

学完深度学习之后,你会发现自己变成了“数据饥渴”症患者。

因为如果没有大量的数据,就无法支撑你的深度神经网络。

如何获取数据呢?

目前主流的(合法)方法,主要分为3类:

  • 开放数据集下载;
  • API读取;
  • 爬虫爬取(Crawling)。

如何用Python读取开放数据?》一文中,我为你讲解了如何把开放数据集下载并且在Python中使用。

这篇文章介绍了常见的CSV/Excel, JSON和XML等开放数据文件格式的读取、初步处理和可视化方法与流程。

如果没有开放数据集整理好供你下载,网站只提供API接口,你该怎么办呢?

如何用R和API免费获取Web数据?》一文中,我们使用R读取维基百科API,获得指定条目的访问数量记录,并且做了可视化。

希望这些文章可以帮助你免费高效获得优质数据,撑起你自己的(深度)机器学习算法。

小结

本文把《玉树芝兰》专栏目前的数据科学类文章进行了梳理和归类,建立了链接,以帮你看清它们之间的逻辑依赖关系。

目前专栏文章主要围绕以下方面展开:

  • 基础入门;
  • 自然语言处理;
  • 机器学习;
  • 深度学习;
  • 数据获取;
  • 答疑。

你可能早已发现,我们还有很多话题,没有来得及涉及。

别着急。

今后,本专栏会继续补充相关的内容,为你提供更多的学习素材。

讨论

本专栏数据科学类的文章你都读过了吗?你更喜欢哪个方面的主题?有没有什么后续文章主题的建议?欢迎留言,把你的经验和思考分享给大家,我们一起交流讨论。

本文分享自微信公众号 - 玉树芝兰(nkwangshuyi),作者:王树义

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-02-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何用Python做Web开发?——Django环境配置

    用Python做Web开发,Django框架是个非常好的起点。如何从零开始,配置好Django开发环境呢?本文带你一步步无痛上手。

    王树义
  • 如何用 Google Colab 练 Python?

    自动配置、有效求助、协作编程、版本控制。一站式解决 Python 新手练习中的痛点

    王树义
  • 如何用 Pandas 存取和交换数据?

    数据采集、整理、可视化、统计分析……一直到深度学习,都有相应的 Python 包支持。

    王树义
  • 【Python环境】R vs Python:硬碰硬的数据分析

    我们将在已有的数十篇从主观角度对比Python和R的文章中加入自己的观点,但是这篇文章旨在更客观地看待这两门语言。我们会平行使用Python和R分析一个数据集,...

    陆勤_数据人网
  • R语言vs Python:数据分析哪家强?

    本文章旨在更客观地看待这两门语言。我们会平行使用Python和R分析一个数据集,展示两种语言在实现相同结果时需要使用什么样的代码。这让我们了解每种语言的优缺点,...

    机器学习AI算法工程
  • 文科生英语专业出身,Python和爬虫照样玩的溜,所以我们没有理由学不好,其他的大都是借口

    先简单自我介绍下,文科生,英语专业,今年大学本科刚毕业。最开始接触编程是在大四前的那个暑假,由于自己性格偏内向,不太喜欢过多的人际交往,想着往技术方向发展,加上...

    double
  • Python往这个方向走,绝对没有错

    近几年Python的受欢迎程度可谓是扶摇直上,当然了学习的人也是愈来愈多。一些学习Python的小白在学习初期,总希望能够得到一份Python学习路线图,小编经...

    python学习教程
  • 最全套Python学习路线,快速上手

    必学知识:【Linux基础】【Python基础语法】【Python字符串】【文件操作】【异常处理】【Python面向对象】【项目实战】。

    python学习教程
  • 巧用“搜索”解决自学编程遇到的难题

    假如你在做一个 JavaScript项目,其中你得到了一个字符串格式的日期(比如, ’2014-10-08’),你想要计算下一天的日期是什么。我们可以用 par...

    博文视点Broadview
  • 麻省理工教授推荐,看这本书的实战指导足够学好Python,经典指导

    今天我给你介绍的这本书,也许会让你开始改变这 种想法,因为这本书上的练习和案例以及指导本身就足够学好Python了。

    Python编程大咖

扫码关注云+社区

领取腾讯云代金券