购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.2 大数据分析实践基础

在大数据安全分析领域,Python语言可以大显身手,因为Python的设计哲学是“优雅、明确、简单”。Python开发者的哲学是“用一种方法,最好是只有一种方法来做一件事”。在设计Python程度时,如果面临多种选择,Python开发者一般会拒绝花哨的语法,而选择明确的没有或者很少有歧义的语法。几乎在任何涉及软件开发的领域都可以看到Python的身影,在机器学习领域它更是威名远扬,大量的优秀机器学习库都是基于Python开发或者提供Python接口的。所以本节从机器学习领域常见的编程工具开始讲起,重点介绍Python语言在机器学习领域的优势和应用,包括Python的基本语法、数据结构以及标准库,以及Python在数据分析领域的几个重要库:NumPy、Pandas和Scikit-Learn。

2.2.1 编程工具

常见的几种机器学习编程工具如下。

· WEKA Machine Learning:全名是怀卡托智能分析环境,使用Java开发的数据挖掘实验平台,集成了大量能够承担数据挖掘任务的机器学习算法,包括预处理、分类、回归、聚类和关联规则等。

· R Platform:是一套完整的数据处理、计算和制图软件系统。其功能包括数据存储和处理系统,以及数组运算工具(其向量、矩阵运算功能尤其强大)。

· Python Scikit-Learn:用于数据挖掘和数据分析的一种流行Python库,使用了众多机器学习算法。

· Apache SparkMLlib:是一个内存数据处理框架,提供了分类、回归、聚类、协同过滤等有用算法和实用数据库。Spark是Apache孵化器中的一个开源框架,为众多机器学习的深度学习网络提供了一个编程工具。

· SPSS modeler:赋予了一线业务人员数据分析的潜力,它具有图形化、流程化和函数化特点,同时支持各种数据源的接入和数据格式的导出,还屏蔽了各种模型的复杂性,让高深的建模很容易使用。

· MATLAB:是一种高级的基于矩阵/数组的语言,它有程序流控制、函数、数据结构、输入/输出和面向对象编程等特色。用这种语言能够方便、快捷地建立起简单、运行快的程序,也能建立复杂的程序。

2.2.2 编程环境

Python的发展很快,几乎每年都在版本迭代。目前Python有两个主要版本,一个是Python 2.x,另一个是Python 3.x。Python 2.x相对于Python 3.x较稳定,现有的第三方库多支持Python 2.x,对Python3.x的支持不太够,特别是特殊数学运算和图形处理等。不过官方自2020年1月1日起已经停止了对Python 2.x的维护,Python 3.x是大势所趋。

如图2-10所示,Jupyter是一个写Python的轻量级Web工具,在数据分析这个领域很热门,虽然功能没有Pycharm、Spyder这些专业的IDE强大,但只要代码少于500行就非常方便。Jupyter也开始支持一些Multicursor功能了,可以一次修改许多的变量名称。

·图2-10 Jupyter工具

Jupyter安装推荐使用Anaconda,Anaconda中的套件还包括后面章节中涉及的Python第三方数据分析库NumPy、Pandas、Matplotlib、Seaborn和Scikit-Learn等,适用于Windows、macOS以及Linux系统。

2.2.3 Python基础知识

Python基础知识主要包括基础语法、数据结构、编写函数、语法结构和标准库等。

1. Python基础语法

和其他语言类似,Python基础语法主要如下。

1)注释:#, ,"""。

2)运算符。

· 算法运算:∗,/,//,∗∗。

· 逻辑运算:and, or, not。

· 成员运算:in, not in。

3)变量类型:

· 数值:int(x), float(x), complex(x), complex(x, y)。

· 字符:string(x)。

4)变量操作:+,∗,[],[:]。

2. Python数据结构

Python中常见的数据结构包括列表、元组、字典、集合以及字符串等,分别如下。

1)列表list():列表是任何对象的有序集合,元素之间用逗号隔开,示例如图2-11所示。

·图2-11 Python列表list()

2)元组tuple():Python元组是简单的数据结构,用于对任意对象进行分组。元组是不可变的,创建后无法修改,示例如图2-12所示。

·图2-12 Python元组tuple()

3)字典dict():字典是一个键值对集合,示例如图2-13所示。

·图2-13 Python字典dict()

4)集合set():集合里的元素是不能重复的,示例如图2-14所示。

·图2-14 Python集合set()

5)字符串str():由数值、字母、下画线组成的一串字符,可以使用单引号(')、双引号(")和三引号( )指定字符串,使用“+”号可以连接两个字符串,示例如图2-15所示。

·图2-15 Python字符串str()

图2-16所示为Python数据结构及方法。

Python数据类型可分为可变对象和不可变对象两类。

1)可变对象类型:当变量的值发生改变时,它对应的内存地址也会改变,这种数据类型就称为可变对象类型,主要包括list、dict、set、byte array,操作如图2-17所示。

·图2-16 Python数据结构及方法

·图2-17 Python可变对象类型

2)不可变对象类型:当变量的值发生改变时,它对应的内存地址不发生改变,这种数据类型就称为不可变对象类型,主要包括int、float、complex、string、tuple、frozen set、bytes,操作如图2-18所示。

3. Python编写函数

本书目前为止提到的程序都比较小,如果想编写大型程序,很快就会遇到麻烦,这时就可以通过函数来对程序进行抽象。函数由函数名、输入、处理过程以及输出组成。在Python中主要有两种创建函数的方式。

1)通过def关键字来定义函数,具体格式如下。

·图2-18 Python不可变对象类型

2)通过lambda函数来定义,此方式可以简化函数定义,使得代码更加简洁美观,具体格式如下。

如图2-19所示,函数是可以被调用的,short_function是通过def关键字来定义的,equiv_anon是通过lambda函数的方式来定义的,示例分别展示了其定义方式和调用方法。

·图2-19 Python函数创建及调用

4. Python语法结构

(1)条件控制

if语句可以实现条件执行,即如果条件(if和冒号之间的表达式)判定为真,那么后面的语句块(本例中是单个print语句)就会被执行。如果条件为假,语句块就不会被执行,如图2-20所示。

(2)循环语句

while语句非常灵活,它可以用来在任何条件为真的情况下重复执行一个代码块。for语句与之类似,如图2-21所示。

·图2-20 Python if条件控制

·图2-21 Python while循环语句

5. Python标准库

Python的标准库是Python安装的时候默认自带的库,Python的第三方库需要下载后安装到Python的安装目录下。但它们的调用方式是一样的,都需要用import语句。简单地说,它们一个是默认自带、不需要下载安装的库,一个是需要下载安装的库。

Python常见的标准库包括:

· 操作系统接口 import os。

· 文件通配符 import glob。

· 命令行参数 import sys。

· 字符串正则匹配 import re。

· 数学 import math。

· 随机数 import random。

· 访问互联网 from urllib.request import urlopen。

· 日期和时间 from datetime import date。

· 数据压缩 import zlib。

6. Python数据分析

Python在机器学习领域应用广泛,主要原因有两个。

· 语法简单,功能强大。

· 生态完整,具备丰富的第三方库,对应的机器学习库非常丰富。

下面将重点介绍五个库。

1)NumPy:Python做多维阵列(矩阵)运算时的必备套件,比起Python内建的list,NumPy的array有极快的运算速度,如图2-22所示。

·图2-22 Python list和NumPy array效率对比

NumPy的基本操作如图2-23所示。

·图2-23 NumPy基本操作

2)Pandas:Pandas基于NumPy、SciPy补充了大量数据操作功能,能实现统计、分组、排序、透视表,可以代替Excel的绝大部分功能。Pandas主要有两种重要数据类型:Series和DataFrame(一维序列、二维表),如图2-24所示。

·图2-24 Python Pandas数据结构

其中,Pandas DataFrame的基本操作如图2-25所示。

·图2-25 Pandas DataFrame基本操作

3)Matplotlib:基本的可视化工具,可以画条形图、折线图等。

4)Seaborn:另一个知名的可视化工具,图形比Matplotlib美观。

5)Scikit-Learn: Python关于机器学习的模型基本上都在这个套件中,如SVM、Random Forest等。 Pi8Y7DILaylhIQCeACKbAbJ7ABBlXXaZlf7wQzY1SuwVVRs9AC48rAXrvA53QCv2

点击中间区域
呼出菜单
上一章
目录
下一章
×