PyCon 2014:机器学习应用占据 Python 的半壁江山

  • 张天雷

2014 年 7 月 15 日

话题:Python语言 & 开发架构机器学习

今年的 PyCon 于 4 月 9 日在加拿大蒙特利尔召开,凭借快速的原型实现能力, Python 在学术界得到了广泛应用。最近其官方网站发布了大会教程部分的视频和幻灯片,其中有很多(接近一半数量)跟数据挖掘和机器学习相关的内容,本文对此逐一介绍。

如何形式化一个科学问题然后用 Python 进行分析

目前有很多很强大 Python 数据挖掘库,比如 Python 语言的交互开发环境 IPython,Python 机器学习库 Scikit-learn 和网络库 NetworkX 等。但是却没有一个教程告诉人们该如何将自己的问题很好的形式化处理,从而用科学的方法来逐步完成数据挖掘过程。本教程的作者就曾经经历了这么一个痛苦的过程,因此愿意为更多的爱好者贡献自己的力量。这个教程主要针对那些对数据分析感兴趣但又不知从何下手的人们。

机器学习入门

非常初级的一个讲稿,介绍了机器学习相关的基本概念,如什么是模型,还有机器学习的基本步骤:设定目标和评测标准、收集和清洗数据、探索和分析、训练模型、测试模型。作者以线性模型为例子给出了 Python 语言环境下使用 Scikit-learn 库进行机器学习的方法最后作者介绍了机器学习的应用实例如手写体识别、搜索引擎、Facebook 朋友推荐、欺诈检测、天气预测、人脸识别等等

贝叶斯统计学习初步

贝叶斯统计模型变得越来越普遍和重要,但是对于初学者来讲,还是缺少入门教程。本教程旨在为 Python 开发人员提供一个交互式的入门材料。教程首先会用几个简单的程序展示贝叶斯统计学习的概念,然后将其应用到几个具体的例子中。教程的材料来自奥莱利出版社的 Think Bayes。

信息检索初步

在信息如此泛滥的时代,如何高效的获取有用的信息,是很多人经常思考的问题。本教程就教我们如何从无到有编程实现一个搜索引擎,来获取自己所需要的数据。教程以一个项目的形式存在,先给我们介绍一些搜索的简单理论,然后教我们使用 Whoosh 库写一个索引和检索维基百科文档的代码,让我们从这个过程中学到如何在遍布噪声的数据中找到自己想要的数据。

用 Scikit-learn 库探索机器学习

机器学习是计算机科学的重要分支,关注于如何利用之前观察到的数据做出对未来数据的预测。机器学习技术在多个领域都有广泛而深入的应用,如搜索引擎优化、股票价格预测甚至对宇宙本身的研究。这个教程提供了机器学习核心概念的介绍,从监督和非监督学习这两个宽泛的分类开始,逐步深入到分类、回归、聚类和降维等核心技术,进而讲解比较常用和经典的具体算法,以及特征选择、模型有效性验证等高级内容。在学完这个教程以后,参与者会对机器学习本身和 Scikit-learn 库有个比较清楚的认识。整个过程使用 Scikit-learn 库的 API 进行,都配有真实数据上的应用实例。Scikit-learn 机器学习库的优点在于整洁、统一、文档详实的编程接口,底层还实现了大量经典和实用的机器学习算法。

在 IPython Notebook 程序中挖掘社会网络 API

社交网站如 Twitter、Facebook、领英网等等,除了可以服务普通用户的日常需求以外,还有着巨大的研究价值。本教程以社会网络数据挖掘一书中的例子为切入点,逐步讲解如何探索和挖掘社交网站背后的高价值数据。

教程将整个挖掘过程分为四个步骤,如下:

  • 假设:数据科学实验的首要环节,需要设定一个目标,回答一个问题或者验证一个假设;
  • 获取:获取和存储验证过程中所需要的数据;
  • 分析:使用基本的数据挖掘技术来分析数据;
  • 总结:以简单明了的形式展示挖掘结果;

整个教程以基于 Vagrant 虚拟机的形式存在,预装了所需的第三方软件,参与者几乎是不费丝毫力气就可以开始,这让他们更加聚焦于数据挖掘本身。

用 Python 参加 Kaggle 数据挖掘竞赛

本教程旨在让数据挖掘爱好者了解并参与到数据挖掘竞赛中。首先会快速的通过一些简单的竞赛问题和数据集来学习一些经典算法。然后深入分析 Kaggle 竞赛,选择正确的特征,编写正确的算法,最后完成结果的提交。在学习时长大约三个小时的教程以后,爱好者能对排名前五的挖掘算法有一个很好的了解,并且将其中一两个应用与 Kaggle 的竞赛题上,比如 Facebook 的招聘竞赛、GE 飞行优化竞赛以及 StumbleUpon 分类竞赛。

使用 Python 构建数据爬虫系统

本教程旨在教会 Python 开发者一些初步的数据爬虫技术,讲到了三个主流爬虫系统,然后交互式地展示如何使用它们。学习了本教程以后,我们就可以爬取一些不同内容的网站,甚至自动提交表单数据,然后会介绍爬取 API、CSV 和 XML 格式的数据。教程的最后会介绍当前业界爬虫系统的最佳实践。

社会学家的 Python 语言应用

随着大数据时代的到来,越来越多的传统的棘手的社会学问题可以通过大数据进行验证。本教程以世界银行的数据集为例,对整个过程进行详细的讲解:首先会展示如何从 CSV 格式文件中将数据倒入,然后利用 Matplotlib 绘图库将数据可视化,并展示时间序列数据。

如何使用 Pydata 构建一个轻量级推荐系统

推荐系统是一个通过分析大量交易数据或者用户数据来为用户推荐相关产品、信息和内容的软件系统,在人们的日常生活中应用非常广泛。本教程介绍推荐系统的概念和定义,然后以交互的方式构建一个轻量级推荐系统。在这个过程中,我们会学习 Python 科学计算相关的库 NumPy 和 pandas。

画图与可视化利器:Matplotlib

很多人第一次听说 Matplotlib 的时候,都觉得用它制作的图像太简单,生成之后还需要使用 PhotoShop 等工具进行美化。本教程旨在纠正这一错误认识,为我们展示如何通过 Matplotlib 的 color、ticker、cm、axes 等功能来逐步美化可视化结果。以一个实际的地理信息例子着手,通过绘制点和多边形,教程教我们如何设置 Matplotlib 图表的各个部分,尤其会着重讲解其绘制模型,包括子图、布局等,然后会讲解如何配制图表的标记、直线、标签字体、位置等等。

用机器学习制作个性化 Hacker News 阅读器

Hacker News,著名的 Y Combinator 出品的创业资讯网站,深受程序员的喜爱。然而网站的信息量对于个人来讲还是很多,因此,本文作者使用 Scikit-learn 机器学习库为自己构建了一个个性化的资讯选择器,达到了只看自己喜爱文章的目的。作者将机器学习的过程分为四部分:获取数据、处理数据、训练和调试模型、使用模型。首先他通过 http request 和 lxml 将网站数据获取到本地,然后提取其标题、提交人、排序、投票数目、评论等文字特征,以及是不是垃圾文章的标记。然后通过一些简单的自然语言处理技术如词袋(bag of words)、n-grams、停用词等技术来提取输入模型的特征。最后采用 Scikit-learn 自带的支持向量机分类器来学习自己的喜好,并用输出的模型来预测新文章中自己喜欢的那些。

IPython 深入探索:高效率交互和并行化

始于 2001 年的 IPython 项目,刚开始的时候只是一个更易用的 Python 命令行而已。过去的十几年中,它逐步发展成了包含众多强大功能的交互式开发环境。今天的 IPython,由一个可执行用户代码的内核以及一个基于 ZeroMQ 消息队列的通信协议构成,这使得它能够同时支持多种客户端访问,如命令行中输入 ipython 命令得到的增强型 python 命令行,以及基于 Qt 的图形化界面,内置图片显示功能,还有一个基于 Web 的 Notebook 系统,包含丰富的文字、图标甚至数学公式的呈现能力。本教程以 IPython 的设计思想和架构入手,为我们讲解 IPython 高性能低延迟的并行计算环境。在这个环境中,计算进程间通过 ZeroMQ 消息队列通信,还对大数据如 numpy 数组的拷贝进行了优化。该环境可以通过交互方式操作,也可以运行在批量处理模式。


感谢郭蕾对本文的审校。

给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

Python语言 & 开发架构机器学习