写点什么

Python 数据挖掘与机器学习实战(一):Python 语言优势及开发工具

  • 2020-02-01
  • 本文字数:4441 字

    阅读完需:约 15 分钟

Python数据挖掘与机器学习实战(一):Python语言优势及开发工具

AI 大模型超全落地场景&金融应用实践,8 月 16 - 19 日 FCon x AICon 大会联诀来袭、干货翻倍!

编者按:本文节选自方巍著《Python 数据挖掘与机器学习实战》一书中的部分章节。

1.6 Python 语言的优势

Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言,也是人工智能首选的编程语言。因此,基于以下 3 个原因,本书选择 Python 语言作为实现机器学习算法的编程语言:


  • 语法清晰,简单易学;

  • 易于操作纯文本文件和非数值型数据;

  • 使用广泛,有大量的开发文档。

1.6.1 可执行伪代码

Python 的设计哲学是“优雅”“明确”“简单”。Python 具有清晰的语法结构,更加简单易学,大家也把它称做可执行伪代码。Python 开发环境已经附带了很多高级数据类型,如列表、元组、字典和队列等。使用这些数据类型就可以完成很多大型的任务或者系统。此外,大家也可以使用自己熟悉的编程风格,如面向对象编程、面向过程编程或者函数式编程。


Python 语言处理和操作文本文件非常简单,非常易于处理非数值型数据。Python 语言提供了丰富的正则表达式函数及很多访问 Web 页面的函数库,使得从 HTML 中提取数据变得非常简单、直观。

1.6.2 Python 语言使用广泛

Python 语言使用相当广泛,代码范例也很多,便于读者快速学习和掌握。此外,在开发实际应用程序时,也可以利用丰富的模块库缩短开发周期。


在科学和计算领域,大量的函数库使 Python 语言得到了广泛应用。例如 SciPy 和 NumPy 等许多科学函数库都实现了向量和矩阵运算操作,这些函数库不仅增加了代码的可读性,有简单的学习基础的初学者就可以看懂代码的实际功能,还使得代码更加简单明确。另外,科学函数库 SciPy 和 NumPy 使用底层语言(C 语言和 Fortran 语言)编写,提高了相关应用程序的运行效率。


Python 还可以与绘图工具 Matplotlib 协同工作。Matplotlib 可以非常容易地绘制 2D 和 3D 图形,可视化运行结果,也可以处理科学研究中经常用到的图形。

1.6.3 Python 语言特色

Python 开发人员会尽量避开不成熟或者不重要的优化。一些针对非重要部位的加快运行速度的补丁通常不会被合并到 Python 内,所以很多人认为 Python 很慢。不过,根据“二八定律”,大多数程序对速度要求不高。在某些对运行速度要求很高的情况下,Python 设计师倾向于使用 JIT 技术,或者使用 C/C++语言改写这部分程序。可用的 JIT 技术是 PyPy。


Python 是完全面向对象的语言。函数、模块、数字和字符串都是对象,并且完全支持继承、重载、派生和多继承,有益于增强源代码的复用性。Python 支持重载运算符和动态类型。相对于 Lisp 这种传统的函数式编程语言,Python 对函数式设计只提供了有限的支持。有两个标准库(functools 和 itertools)提供了 Haskell 和 Standard ML 中久经考验的函数式程序设计工具。


虽然 Python 被粗略地分类为“脚本语言”(script language),但实际上一些大规模软件开发计划如 Zope、Mnet 及 BitTorrent,以及 Google 公司也在广泛地使用它。Python 的支持者喜欢称它为一种高级动态编程语言,原因是“脚本语言”泛指仅做简单程序设计任务的语言,如 Shell Script、VBScript 等只能处理简单任务的编程语言,并不能与 Python 相提并论。


Python 本身被设计为可扩充的,但并非所有的特性和功能都集成到语言核心。Python 提供了丰富的 API 和工具,以便程序员能够轻松地使用 C、C++和 Cython 语言来编写和扩充模块。Python 编译器本身也可以被集成到其他需要脚本语言的程序内,因此很多人还把 Python 作为一种“胶水语言”(glue language)来使用。在 Google 公司内部的很多项目中,经常会使用 Python 将其他语言编写的程序进行集成和封装。例如,Google Engine 使用 C++语言编写性能要求极高的部分模块,然后用 Python 或 Java/Go 调用相应的模块。

1.6.4 Python 语言的缺点

Python 语言唯一的不足是性能问题。Python 程序运行的效率不如 Java 程序或者 C 程序效率高,但是可以使用 Python 调用 C 语言编译的代码。也就是说,可以同时利用 C 语言和 Python 语言的优点,取长补短,逐步地开发机器学习应用程序。例如,可以使用 Python 语言编写系统程序,然后使用其他工具将 Python 代码简单地转换成 C 代码。C++Boost 库就适合完成这个任务,其他类似于 Cython 和 PyPy 的工具也可以编写强类型的 Python 代码,改进一般 Python 程序的性能。


以上大致介绍了本书选择 Python 语言实现机器学习算法的原因,下一节将学习 Python 语言的常用开发工具。

1.7 Python 开发工具介绍

Python 程序的开发工具很多,也就是通常人们所说的 IDE。那 IDE 是什么?可以简单地将其理解为一个专门写程序的软件,真正的名称叫做集成开发工具。常用的 Python IDE 主要包括两大类,一类是文本工具类,比如 Python 自身提供的 IDLE,还有一类是集成工具类,主要用于比较大型的程序开发。


Python 程序开发用什么工具好呢?初次接触 Python 的学者,使用 IDLE 就可以满足基本需求,也可以进行简单的调试。


更强大的 IDE 还应该有自动提示、完备的调试和语法高亮功能,当然也应该更好地支持缩进功能,尤其对于 Python 这种强制缩进的语言。自动提示功能是指,输入一个函数会自动提示参数,或者输入一个对象的时候自动提示它的成员函数和成员变量,这些都能大大提高编程效率。当开发大型工程的时候,怎么管理工程就是个问题了。Python 也一样,当工程很大的时候,文件也很多,此时不管是管理工程还是调试,使用 IDLE 显然是不能胜任了。所以下面来介绍一些常见的 Python 开发工具。

1.7.1 IDLE 简介

IDLE 是 Python 自带的、默认的常见、入门级编写工具,适合初学者使用。其主要包括交互式与文件式两种方式。交互式是指可以一句或一段地运行。文件式是指可以像其他编辑器一样,虽然有点“丑陋”,但功能还是很强大的。小型项目使用 IDLE 十分合适。IDLE 是一个 Python shell。shell 的意思就是“外壳”,基本来说,这是一个通过输入文本与程序交互的途径,可以利用这个 shell 与 Python 交互(正是因为这个原因,可以看到窗口的标题栏上显示着 Python shell)。IDLE 本身还是一个 GUI(图形用户界面),所以在“开始”菜单中显示为 Python GUI。IDLE 图形用户界面如图 1-3 所示。



图 1-3 IDLE 图形用户界面

1.7.2 IPython 简介

IPython 是一个面向对象的 Python 交互式 shell,用了它之后或许你就不想再用自带的 Python shell 了。IPython 支持变量自动补全、自动缩进,支持 bash shell 命令,内置了许多实用功能和函数,同时它也是科学计算和交互可视化的最佳平台。IPython 图形用户界面如图 1-4 所示。



图 1-4 IPython 图形用户界面

1.7.3 PyCharm 简介

PyCharm 是由 JetBrains 打造的一款 Python IDE,是使用比较广泛的 Python IDE,其功能十分强大,具备一般编译器的特点,如调试、语法高亮、Project 管理、代码跳转、智能提示、自动完成、单元测试和版本控制等。PyCharm 分成了两个系列,专业版(需付费)和社区版(免费),对于学习和部署一般的中小型项目,社区版完全可以满足基本需求。PyCharm 图形用户界面如图 1-5 所示。



图 1-5 PyCharm 图形用户界面

1.7.4 Jupyter Notebook 简介

Jupyter Notebook(此前被称为 IPython Notebook)是一个交互式笔记本,支持运行 40 多种编程语言。


Jupyter Notebook 的本质是一个 Web 应用程序,便于创建和共享文学化程序文档,支持实时代码、数学方程、可视化和 Markdown。用途包括:数据清理和转换、数值模拟、统计建模和机器学习等。简而言之,Jupyter Notebook 是以网页的形式打开,可以在网页页面中直接编写代码并运行代码,代码的运行结果也会直接在代码块下显示。如在编程过程中需要编写说明文档,可在同一个页面中直接编写,便于做及时的说明和解释。Jupyter Notebook 图形用户界面如图 1-6 所示。



图 1-6 Jupyter Notebook 图形用户界面

1.7.5 Anaconda 和 Spyder 简介

Anaconda 是一个用于科学计算的 Python 发行版,支持 Linux、Mac OS 和 Windows 系统,提供了包管理与环境管理的功能,可以很方便地解决多版本 Python 并存、切换及各种第三方包安装问题。Anaconda 利用工具/命令 conda 进行 package(包)和 environment(环境)的管理,并且已经包含了 Python 和相关的配套工具。


这里先解释 conda 和 Anaconda 的差别。conda 可以理解为一个工具,也是一个可执行命令,其核心功能是包管理与环境管理。包管理与 pip 的使用类似,环境管理则允许用户方便地安装不同版本的 Python 并可以快速切换。Anaconda 则是一个打包的集合,里面预装好了 conda、某个版本的 Python、众多 package 和科学计算工具等,所以也称为 Python 的一种发行版。conda 将几乎所有的工具和第三方包都当做 package 对待,甚至包括 Python 和 conda 自身。因此,conda 打破了包管理与环境管理的约束,能非常方便地安装各种版本的 Python 和各种 package 并能方便地切换。Anaconda 的安装包和环境管理界面如图 1-7 所示。



图 1-7 Anaconda 安装包和环境管理界面


Spyder(前身是 Pydee)是一个强大的交互式 Python 语言开发环境,提供了高级的代码编辑、交互测试和调试等特性,支持包括 Windows、Linux 和 OSX 系统。和其他的 Python 开发环境相比,Spyder 最大的优点就是模仿 MATLAB 的“工作空间”的功能,可以很方便地观察和修改数组的值。安装了 Anaconda 后会同时集成 Spyder 开发工具。Spyder 图形用户界面如图 1-8 所示。



图 1-8 Spyder 图形用户界面


下面是以上介绍的 5 种常用 Python 开发工具的特点总结,如表 1-1 所示。


表 1-1 5 种 Python 开发工具特点总结


开发工具特点
IDLE1.智能缩进,调用提示,自动完成等功能;
2.适用于入门的学习者及小型项目
IPython1.支持变量自动补全、自动缩进,支持bash shell命令;
2.内置许多实用功能和函数;
3.可以进行科学计算和交互可视化
PyCharm1.编码协助;
2.项目代码导航;
3.用户可使用其编码语法,错误高亮,智能检测,以及一键式代码快速补全建议;
4.集成的单元测试
Jupyter Notebook1.编程时具有语法高亮、缩进、Tab键补全的功能;
2.可直接通过浏览器运行代码,同时在代码块下方展示运行结果;
3.以富媒体格式展示计算结果;
4.支持使用LaTeX编写数学性说明
Anaconda&Spyder1.包括Python和很多常见的软件库;
2.含有包管理器conda;
3.适用于企业级大数据分析的Python工具;
4.在数据可视化、机器学习和深度学习等多方面都有应用;
5.完全开源和免费


根据表 1-1 中的比较可知,Anaconda&Spyder 更加简洁,功能更强大,适用于初学者,所以本书主要使用 Anaconda&Spyder 作为实例程序的开发工具,具体的安装及详细介绍将在下章中讲解。


图书简介:https://item.jd.com/12623592.html?dist=jd



相关阅读


Python数据挖掘与机器学习实战(一):Python语言优势及开发工具


Python数据挖掘与机器学习实战(二):Python语言简介


Python数据挖掘与机器学习实战(三):网络爬虫原理与设计实现


Python数据挖掘与机器学习实战(四):用 Python 实现多元线性回归


Python数据挖掘与机器学习实战(五):基于线性回归的股票预测


公众号推荐:

AIGC 技术正以惊人的速度重塑着创新的边界,InfoQ 首期《大模型领航者AIGC实践案例集锦》电子书,深度对话 30 位国内顶尖大模型专家,洞悉大模型技术前沿与未来趋势,精选 10 余个行业一线实践案例,全面展示大模型在多个垂直行业的应用成果,同时,揭秘全球热门大模型效果,为创业者、开发者提供决策支持和选型参考。关注「AI前线」,回复「领航者」免费获取电子书。

2020-02-01 16:191691

评论

发布
暂无评论
发现更多内容

2021Java进阶者的新篇章,做了5年Java

Java 面试 后端

2021Java高频精选面试题讲解,2021Java大厂面试真题

Java 面试 后端

2021一位Java中级程序员的跳槽面经,springmvc源码解析pdf

Java 面试 后端

2021年Android常见面试题目,程序员必须要了解的知识点

android 移动开发 Android面试

个推融合实人认证服务和视觉智能技术,推出青少年网络游戏防沉迷解决方案

个推

AI 人脸识别

2021Java网络编程总结篇,三年老Java经验面经

Java 面试 后端

2021Java面试心得,Spring的XML解析原理

Java 面试 后端

个推0代码数据可视化实操:基于Tableau的中国奥运数据探索

个推

2021京东最新Java面试真题解析,2021Java开发面试解答

Java 面试 后端

2021大厂Java开发面试总结+解答,21条MySQL性能调优经验

Java 面试 后端

2021Java者未来的出路在哪里,怒斩获了30家互联网公司offer

Java 面试 后端

Jenkins: 重置管理员密码

DisonTangor

jenkins

三维可视化数字能源系统,助力智慧园区高效能源管理

ThingJS数字孪生引擎

大前端 物联网 可视化 数字孪生

直播回顾 | seL4基金会主席谈物理系统安全工程实践

鉴释

自动驾驶 操作系统 微内核 在线研讨会

2021年Android工作或更难找,深入剖析原理

android 面试 移动开发

2021大厂Java春招面试经历,Java高级架构视频

Java 面试 后端

2021大厂Java春招面试经历,宅家36天咸鱼翻身入职腾讯

Java 面试 后端

2021Java面试心得,淘汰机制、缓存雪崩

Java 后端

2021年Android岗位BAT大厂面试题知识点小结,阿里巴巴安卓面试题答案

android 面试 移动开发

M-SQL:超强的多任务表示学习方法

华为云开发者联盟

sql 自然语言 M-SQL SQL语句 多任务

2021华为Java高级面试题及答案,Java技术成长

Java 面试 后端

2021年Android工作或更难找,透彻分析源码

android 面试 移动开发

2021年Android常见面试题,Android培训那里好

android 面试 移动开发

分布式服务下,消息中间件改造

Java 架构 面试 分布式 后端

2021年Android大厂面试,劲爆

android 面试 移动开发

2021互联网大厂Java面经合集,阿里面试官必问

Java 面试 后端

2021年Android工作或更难找,2021Android面经

android 移动开发

硬实力再获认可!焱融科技入选《2021爱分析云计算厂商全景报告》

焱融科技

云计算 分布式 高性能 文件存储 科技

阿里淘技术带佬新作:设计模式的完美演绎,共计1290页

Java 程序员 架构 面试 计算机

2021Java高级进阶学习资料,StringBoot编程式事务与声明式事务

Java 面试 后端

2021年Android大厂面试,送大厂面经一份

android 面试 移动开发

Python数据挖掘与机器学习实战(一):Python语言优势及开发工具_大数据_方巍_InfoQ精选文章