写点什么

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

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

    阅读完需:约 15 分钟

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

编者按:本文节选自方巍著《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数据挖掘与机器学习实战(五):基于线性回归的股票预测


2020-02-01 16:192100

评论

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

“AI+Security”系列第3期(六):打造最懂安全的智能体-无极AI安全智能体平台落地与实践

云起无垠

获取淘宝商品详情API返回值的技术实现方案

代码忍者

API 测试 pinduoduo API

打造未来社交:区块链社交DAO的颠覆性开发之路

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 NFT开发 代币开发

软件测试学习笔记丨Mock的价值与实战

测试人

软件测试 测试开发

TiDB 助力东南亚领先电商 Shopee 业务升级

TiDB 社区干货传送门

AI与大数据的结合:如何从海量数据中提取价值

天津汇柏科技有限公司

大数据‘’ AI 人工智能

Flink CDC:新一代实时数据集成框架

Apache Flink

大数据 flink 数据集成 Flink CDC 实时处理

Volcano v1.10.0 版本正式发布!10大功能全面提升统一调度和细粒度资源管理能力

华为云原生团队

云计算 容器 云原生

TiDB 性能测试的几个优化点

TiDB 社区干货传送门

性能调优

【YashanDB知识库】如何dump数据文件,转换rowid, 查询对应内容

YashanDB

yashandb 崖山数据库 yashandb知识库

昆仑万维 X TiDB|从 MySQL Cluster 到 TiDB 的升级之路

TiDB 社区干货传送门

国产化新标杆:TiDB 助力广发银行新一代总账系统投产上线

TiDB 社区干货传送门

TiSplit 切分csv文件

TiDB 社区干货传送门

迁移 实践案例 管理与运维

TiDB 在线打标签实现副本调度应用实践

TiDB 社区干货传送门

实践案例 7.x 实践

数字货币交易所开发与智能合约交易系统

区块链软件开发推广运营

交易所开发 链游开发 NFT开发 公链开发 代币开发

环保行业怎么定义?需要用到堡垒机吗?

行云管家

等保 堡垒机 环保

DDD建模 vs 传统开发

Bruce Talk

DDD 领域驱动设计DDD

快速实现AI搜索!Fivetran 支持 Milvus 作为数据迁移目标

Zilliz

Milvus Zilliz 向量数据库 rag AI搜索

云栖实录 | 开源大数据全面升级:Native 核心引擎、Serverless 化、湖仓架构引领云上大数据发展

阿里云大数据AI技术

大数据 阿里云 Serverless 云栖大会 EMR

OpenHarmony外设生态春笋行动 在2024开放原子开源生态大会上开启

最新动态

使用TiDB企业版Lightning导入ORC文件到TiDB

TiDB 社区干货传送门

迁移 7.x 实践

目前东莞等保测评机构有哪些?电话多少?

行云管家

等保测评 过等保 东莞

系统安全不求人:开发者必学的漏洞防御秘籍

巧手打字通

后端 系统安全 安全漏洞 SQL注入 xss攻击

【YashanDB知识库】由于hist_head$中analyze time小于tab$中analyze time导致的sql语句执行慢

YashanDB

yashandb 崖山数据库 yashandb知识库

Linux服务器磁盘空间占用情况分析与清理指南

EquatorCoco

Linux 运维

人人都能手写的chrome插件,帮我省了1000多块钱

京东科技开发者

获取淘宝商品详情API返回值的技术实现方案

技术冰糖葫芦

API Gateway API Explorer API 接口 API 测试 pinduoduo API

海外直播软件 Bigo 的 TiDB 4.0 线上实践

TiDB 社区干货传送门

TiDB多业务合并新玩法

TiDB 社区干货传送门

8.x 实践

黄东旭:“向量数据库”还是“向量搜索插件 + SQL 数据库”?

TiDB 社区干货传送门

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