机器学习系列笔记目录
文章目录
在 01 课时,我简单地介绍了数据挖掘是什么、能做什么,以及怎么做。本课时,我将带你了解数据挖
掘需要用到的编程语言——Python,包括其数据结构和基本语法。如果你对 Python 有一定了解,那么
可以直接跳过这部分内容
Python 的介绍
Python 是一门面向对象、直译式编程语言, 编写简单、上手迅速,开源扩展包十分丰富,所以在数据
挖掘的前沿科研和工业领域都广受欢迎,有着瑞士军刀般的价值。利用 Python,可以非常方便地开展
各种领域的数据挖掘工作。
在后续的课时中,如果没有特殊说明,一般使用的是 Python 3 的语法。因为 Python 3 相比 2 有了很
大的调整和改进,对中文的支持也更加友好。
下面我们先来看一下为什么要用 Python 进行数据挖掘。
Python 的优、缺点
1. 优点
- 简单易学:Python 的代码比较简洁、语法比较规范, 甚至有点像伪代码,很容易上手。如果你有
其他编程语言基础的话,那么学习 Python 就会变得很快了。如果你没有学过,也不要担心,市面
上关于 Python 入门的课程非常多,足够满足你的需求。 - 开源:因为用户可以免费使用,所以不管是在工作中,还是在学习中,使用 Python 的人群都很
多,这使得各种更新包层出不穷。 - 可移植性好:在不同的平台都可以运行,不管是 MacOS、Windows 还是 Linux,唯一需要注意的
是运行环境的配置。比如 Python 中各种包的依赖关系,如果处理不好将导致程序无法运行,要注
意避免。下一课时我会介绍一种常用的包管理办法。 - 可扩展性:Python 拥有丰富的第三方库,不管是文件操作、网络编程、各种数据库,还是 3D 图
形编程都可以运用到。
2. 缺点
通常来说 Python 的缺点就 1 个, 为了使语言更加简便易懂,Python 在底层做了很多工作,所以其运
行速度比 C、Java 等要慢很多。 如果非要说还有什么缺点,我认为,由于各种扩展库太庞大,导致配置
这些相关包有些困难,比如不同版本的包可能存在不兼容的情况,甚至是 Python 语言本身,在从 2.x
版本升级到 3.x 版本后,很多语句和功能都发生了变化,无法跨版本运行。
知道了 Python 的特点之后,我们来了解一下它的数据类型,这对我们编写代码有很大的帮助
Python 支持的数据类型
- Python 支持的数据类型,如下表所示:
- 类型名 说明 描述
- str 字符串类型 一段字符串
- int 整型 整数,比如 1、 2、3
- float 浮点型 比如 0.1、0.315
- bool 逻辑值 true or false
- complex 复数 数学上的概念
- bytes 字节型 原始的数据类型,可以理解为 01 代码
- list 列表 有序可修改的列表
- tuple 元组 元组比较特别,它是一个不可以修改的有序列表
- set 集合 无序,唯一的值的合集
类型名 | 说明 | 描述 |
---|---|---|
str | 字符串类型 | 一段字符串 |
int | 整型 整数 | 比如 1、 2、3 |
float | 浮点型 | 比如 0.1、0.315 |
bool | 逻辑值 | true or false |
complex | 复数 | 数学上的概念 |
bytes | 字节型 | 原始的数据类型,可以理解为 01 代码 |
list | 列表 | 有序可修改的列表 |
tuple | 元组 | 元组比较特别,它是一个不可以修改的有序列表 |
set | 集合 | 唯一的值的合集 |
Python 的数据类型有一个特色,在声明一个变量的时候可以不声明它的类型,而是在赋值时才确定类
型。同时在声明的容器型变量(如下面提到的列表、字典等)中,内部的元素类型也是任意的。
由于列表、集合和字典将非常频繁地使用,尤其是在我们的数据挖掘过程中,数据通常都会以向量的方
式表 示、存 储在列表中。所以掌握这些数据类型,以及它们的各种扩展方法是非常有好处的。在这里
我会对上述常用的三种数据进行详细的说明,当然数据结构类型远远不止这几种情况,如果你有兴趣,
可以找其他资料进行深入了解学习。
1. 列表(list)
列表可以理解为是一个有序可重复的数组,主要用于按顺序存放我们的数据。
首先,来举个例子,下面是一个为列表赋值的语句:
通过该语句生成了一个列表,即 list,里面有 5 个元素,但它们的类型不一样,前 2 个是字符串,后 3
个是数字。
列表中的元素是有序的,每个元素都有一个位置标记,并且元素可以重复。比如下面这两个语句,即用
列表的位置下标来获取对应的元素并输出。我们输出 list[0] 会得到‘one’这个单词,因为 one 存放在了
list 的第 0 个位置,而输出 list[4] 会得到数字 5,因为数字 5 存放在了 list 的第 4 个位置,注意,在计
算机语言中,一般位置标识都是从 0 开始的。
列表的基本操作主要有添加、删除、修改等功能,同时 Python 还提供了一系列的扩展功能,如查询列
表长度、列表运算,等等
- 添加元素
- 删除元素
- 修改元素、查询列表长度、列表的运算以及判断某一元素是否在列表中
除了上述的操作,列表还有很多已经实现好的方法可供你使用,比如列表排序、找到最大值和最小值、
逆序排列等。由于功能模块非常多,当大家有需要的时候可以根据自己的需求进行查询,我就不在这里
一一阐述了。
2. 集合(set)
集合是一个无序的不重复序列,可以使用大括号 {} 或者 set() 函数创建集合。需要注意的是,创建一个
空集合必须用 set() 而不能用 { },因为 { } 是用来创建一个空字典的。
比如,我们要新建一个叫 abc 的集合:
- 添加元素
- 删除元素
3. 字典(dict)
字典中存放的每一个元素实际上是一个键值对(key:value),其中 key 是不能重复的,存入相同的
key,它的 value 会被替换成最新的。dict={} 代表使用大括号声明一个空字典。
字典中的元素可以是任意类型,比如数值、字符串、列表,甚至是字典:
- 向字典中添加键值对
- 从字典中删除键值对
了解了数据类型,就可以进行简单的语句书写了,不过每种语言都有自己的书写习惯,所以在正式进入
代码编写前,我要给你说明一下 Python 的四个注意事项。
编写 Python 代码的注意事项
1. 标识符
标识符就是你定义的名称,包括类名、变量名,等等。在 Python 中,标识符的大小写是敏感的,且第
一个字符必须是字母表中的字母或 “_”。在 Python 3 中,甚至中文也可被用作变量名。
当然,Python 有一些自留标识符,比如 def、true、false 等,我们不能再使用这些作为标识符
2. 注释
注释是为了方便阅读代码写的内容,这些内容将不会被解释器解释执行。Python 中有两种注释方法:
- 第一种是注释单行,可以使用 “#”,出现在“#” 后面的该行内容将变成注释(如上面代码块中 “# 输 出 one” 等),不会被运行;
- 第二种是注释一段,可以使用 ‘’‘或者"“” 来处理多行注释,比如
‘’’
‘’’
3. 使用缩进来标记代码块
在很多编程语言中,比如 C++ 和 Java,都是使用大括号 {} 来对代码段进行分割的,但是在 Python 中
不需要,而是使用缩进来对代码段进行控制。所以在编写 Python 代码的时候,一定要非常注意缩进规
范。
如果你使用 IDE(Integrated Development Environment ,集成开发环境)来编辑代码,一般都会有
缩进提醒,但使用文本编辑器就可能会经常遇到缩进的问题了。
比如下面这段正确的代码,就是使用缩进来标记的
如果是在括号里的内容,那就不需要使用 “\”,直接换行就行了。
4. 导入其他模块
在 Python 的扩展中,有很多第三方编写的模块,并且我们在组织大型项目代码的时候,也会把代码分
成好多的模块,这里就涉及导入或者说是引用的问题了。
这时候要用到两个命令 import 或者 from…import。import 的主要作用是导入整个模块,或者导入模
块中的模块;而 from…import 是从某个模块中导入某个方法(函数),比如:
import tensorflow as tf
from model import yolov3
from math import *
到这里,Python 的基本知识你就都了解了,可以开始学习语句,进行代码编写了。
常用语句
Python 的语句有很多种,在这里我只给大家介绍 3 种常用的,包括条件语句、循环语句和 pass 语句,
剩下的语句,如运算符、各种函数功能模块,大家可以通过搜索资料自行学习。
1. 条件语句
条件判断是最常用到的方法,可以用来各种情况的判定,从而影响语句的执行,使用方法如下:
if 条件:
执行
elif 条件:
执行
else:
执行
if a>b and a>c:
print(a)
elif b>a and b>c:
print(b)
else:
print(c)
2. 循环语句
循环语句相关的主要有 while 语句、for 语句、continue 语句、break 语句
- while 循环
- for 循环
- continue 跳过
- break 终止循环
3. pass 语句
在 Python 中有一个特别的语句,那就是 pass 语句,该语句代表什么都没有,主要用于一些特殊的位
置。如果在一段代码中必须要写一些语句,又不能产生任何影响,就可以使用 pass 语句。
比如我们想写一个代码,当 i<50 的时候什么都不做,就可以这么写:
for i in range(0,100):
print(i)
if i < 50:
pass
else print(i)
在实际编写代码的时候,有些位置你可能想要写一些功能,但是还没有想好要怎么写,比如你定义了一
个函数,但是函数的具体内容还没确定,此时就可以预留出一些位置暂时写上 pass 语句,从而不会影
响代码的运行。
工欲善其事,必先利其器。想用 Python 写出漂亮的代码,没有合适的编辑器怎么行。下面我就给你介
绍 5 种 Python 编辑器,希望你能找到合适的工具。
总结
因为在后续的课程中,会使用 Python 编写代码,所以在这一课时,我介绍了一些 Python 语言的基础
知识。由于篇幅的限制,这里所列出的只是该语言中最最基本的部分,有很多细节都没有一一展开。如
果你对实际的代码编写有很大兴趣,可以自己购买一些书籍或课程进行更加深入的学习。