NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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数据挖掘与机器学习实战(五):基于线性回归的股票预测


公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2020-02-01 16:191624

评论

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

基于数字孪生技术的船舶智能机舱

Openlab_cosmoplat

开源社区 数字孪生 智能制造

初学React useEffect Hook

devpoint

React useEffect

运维进阶训练营 -W14H

赤色闪电

4月7日|《2022中国企业敏捷实践白皮书》发布会,揭秘国内敏捷最新现状

PingCode

敏捷实践 中国企业敏捷实践白皮书

基于PaddleOCR的多视角集装箱箱号检测识别

汀丶人工智能

人工智能 计算机视觉 图像识别 OCR识别

头部险企如何打造低代码数据集市,快速构建指标体系

Kyligence

金融科技 指标体系

触控板手势增强软件:Multitouch激活版

真大的脸盆

Mac Mac 软件 触控板 触控板增强

地表最强AI,GPT-4专治各种不服

引迈信息

AI ChatGPT

量化合约对冲交易软件|合约一键跟单社区平台系统开发源码

开发微hkkf5566

沐曦与百度飞桨完成兼容性测试,助力计算机视觉应用发展

飞桨PaddlePaddle

火山引擎EMR StarRocks场景案例分享

字节跳动数据平台

EMR

很强,我终于找到绘制E-R图的正确姿势

JAVA旭阳

Java 数据库

运维进阶训练营 -W11H

赤色闪电

低内存、高性能,磁盘索引可以这样玩

Zilliz

非结构化数据 Milvus 向量数据库

RabbitMq 环境搭建

流火

老马闲评数字化【4】做数字化会不会被供应商拿捏住

行云创新

云原生 数字化转型 企业数字化

菜单(Menu)

智趣匠

android 控件 menu

运维进阶训练营 -W12H

赤色闪电

StyleGAN 调整面部表情,让虚拟人脸更生动

极客飞兔

人工智能 机器学习 图像处理 StyleGAN

快速解决 Linux 内核问题,一站式运维工具 oc-ops 介绍

OpenCloudOS

Linux 开源 操作系统

WorkPlus SE专业版即时通讯IM办公平台,赋能中小企业数字化转型

WorkPlus

分片压缩、分片上传,融云 IM 视频文件高速传输方案

融云 RongCloud

视频 IM 方案

小度沈健:以闭环服务赋能场景化智能家居

Geek_2d6073

推荐一款多功能的跨平台小程序管理工具

FinFish

小程序容器 小程序管理平台 小程序技术 小程序管理

运维进阶训练营 -W13H

赤色闪电

行云洞见 | 为何都在将研发环境搬上云端?

行云创新

云端IDE 云原生集成开发环境

Redis连接失败问题排查和解决

做梦都在改BUG

【被夸爆的教学!】ChatGPT注册全攻略!新手必看!省时省力又省心!

frank

ChatGPT

类似钉钉和企微的企业IM,为什么说私有化部署是企业更好的选择?

WorkPlus

Filecoin主网配置metamask教程:Remix发币、上线swap

加密先生

2022 年云原生安全现状报告

York

容器 云原生 安全

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