人工智能(Artificial Intelligence,AI)之研究目的是通过探索智慧的实质,扩展人类智能——促使智能主体会听(语音识别、机器翻译等)、会看(图像识别、文字识别等)、会说(语音合成、人机对话等)、会思考(人机对弈、专家系统等)、会学习(知识表示,机器学习等)、会行动(机器人、自动驾驶汽车等)。
一个经典的AI定义是:“ 智能主体可以理解数据及从中学习,并利用知识实现特定目标和任务的能力。”
从技术层面来看,现在所说的人工智能技术基本上就是机器学习方面的(也就是,机器学习技术是入门AI的核心技术)。
从应用领域上看,人工智能在众多的应用领域上面都有一定的发展,有语言识别、自然语言处理、图像识别、数据挖掘、推荐系统、智能风控、机器人等方面。值得注意的的是,不同应用领域上,从技术层面是比较一致,但结合到实际应用场景,所需要的业务知识、算法、工程上面的要求,差别还是相当大的。
学习人工智能需要先掌握编程、数学方面的基本知识:AI算法工程师首先是一名程序员,掌握编程实现方法才不将容易论知识束之高阁。而数学是人工智能理论的奠基,是必不可少的。
在人工智能领域,Python使用是比较广泛的,理由如下:
1、因为其简单的语法及灵活的使用方法,Python很适合零基础入门;
2、Python有丰富的机器学习库,极大方便机器学习的开发;
3、Python在机器学习领域有较高的使用率,意味着社区庞大,应用范围广,市场上有较多的工作机会;
数学方面:数学无疑是重要的,有良好的数学基础对于算法原理的理解及进阶至关重要。但这一点对于入门的初学者反而影响没那么大,对于初学者如果数学基础比较差,有个思路是先补点“数学的最小必要知识”:如线性代数的矩阵运算;高等数学的梯度求导;概率的条件、后验概率及贝叶斯定理等等。这样可以应付大部分算法的理解。
-
Python人工智能学习路线(长篇干货)
-
泳鱼的github仓库:https://github.com/aialgorithm
-
唐宇迪的github仓库:https://github.com/tangyudi/Ai-Learn/tree/master
以上是我在网上找到一些“免费”的学习资料与路线,无论这些大佬们是热诚开源也好还是夹带私货也罢,都给小白或初学者洒下了入门AI的一丝希冀。
于我而言,任何可以武装思想,提高能力,开拓视野的东西,都可尝试一番。
NumPy(Numerical Python)是Python的一种开源的数值计算扩展。提供多维数组对象,各种派生对象(如掩码数组和矩阵),这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多(该结构也可以用来表示矩阵(matrix)),支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库,包括数学、逻辑、形状操作、排序、选择、输入输出、离散傅立叶变换、基本线性代数,基本统计运算和随机模拟等等。
-
几乎所有从事Python工作的数据分析师都利用NumPy的强大功能。
- 强大的N维数组
- 成熟的广播功能
- 用于整合C/C++和Fortran代码的工具包
- NumPy提供了全面的数学功能、随机数生成器和线性代数功能
-
安装Python库
- pip install jupyter -i https://pypi.tuna.tsinghua.edu.cn/simple
- pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
数组创建
创建数组的最简单的方法就是使用array函数,将Python下的list转换为ndarray。
可以利用np中的一些内置函数来创建数组,比如创建全0的数组,也可以创建全1数组,全是其他数字的数组,或者等差数列数组,正态分布数组,随机数。
数组的轴数、维度
一个二维数组可以被认为是一个带有 x 行和 y 列的表格,同理一个三维数组可以看作是一个带有z个x行和y列的三维表格。 为了方便取值,z为三维数组的高,x为行,y为列,所以size为(高,行,列),对于(d)维数组n的也就是带有d个d-1维的数组。 比如size = ( 2,2,2,2)就是2个长宽高都为2的三维数组的四维数组。
数组元素的总数
数据类型
数组中每个元素的大小(以字节为单位)
保存数组
save方法保存ndarray到一个npy文件,也可以使用savez将多个array保存到一个.npz文件中
读取
load方法来读取存储的数组,如果是.npz文件的话,读取之后相当于形成了一个key-value类型的变量,通过保存时定义的key来获取相应的array
读写csv、txt文件
ndarray的数据类型:
- int: int8、uint8、int16、int32、int64
- float: float16、float32、float64
- str
array创建时,指定
asarray转换时指定
数据类型转换astype
加减乘除幂运算
如果array时二维的就会变成m*n矩阵的计算。
逻辑运算
数组与标量计算
数组与标量的算术运算也会将标量值传播到各个元素。
*=、+=、-=操作
扩展矩阵操作
由 mn 个数排成的m行n列的数表称为m行n列的矩阵,简称 mn 矩阵。记作: 这 m*n 个数称为矩阵的元素,简称为元,数aij位于矩阵 A的第i行第j列,称为矩阵 A的 (i, j) 元。
元素是实数的矩阵称为实矩阵,元素是复数的矩阵称为复矩阵。
若多个矩阵的行数和列数相同,我们称它们为同型矩阵。
行数与列数都等于n的矩阵称为n阶矩阵或n阶方阵。若多个方阵的行数(行数=列数)相同,我们称它们为同阶矩阵。
矩阵的加减法和矩阵的数乘合称矩阵的线性运算。
加法
只有同型矩阵之间才可以进行加法运算,将两个矩阵相同位置的元相加即可,m行n列的两个矩阵相加后得到一个新的m行n列矩阵,例如:
交换律:
结合律:
减法
与加法类似,如下:
数乘
数乘即将矩阵乘以一个常量,矩阵中的每个元都与这个常量相乘,例如: 运算律:
转置
把矩阵的行和列互相交换所产生的矩阵称为A的转置矩阵(标记为 ),这一过程称为矩阵的转置。
运算律:
共轭
对于一个复数矩阵对其做实部不变,虚部取负的操作即为共轭操作,记作
。例如:
乘法
两个矩阵的乘法仅当第一个矩阵的列数和另一个矩阵的行数相等时才能定义,m×n 矩阵 和 n×p 矩阵相乘,会得到一个 m×p 矩阵 。
运算律:
… 其他内容需要涉猎高数,线性代数复习,(考试稳定85+的高数线代学渣感到了死去的知识的呼唤QAQ )
赋值操作只是赋值了array对象的地址值(起了个别名):
浅拷贝(新建了一个内存地址,但是引用了同一个array):
深拷贝(完全在内存中复制一份):
copy应该在不再需要原来的数组情况下,切片后调用。例如,假设a是一个巨大的中间结果,而最终结果b仅包含的一小部分a,则在b使用切片进行构造时应制作一个深拷贝:
基本索引和切片
numpy中数组切片是原始数组的视图,这意味着数据不会被复制,视图上任何数据的修改都会反映到原数组上:
对于二维数组或者高维数组,可以按照之前的知识来索引,当然也可以传入一个以逗号隔开的索引列表来选区单个或多个元素:
这些千奇百怪的index都是实现了getitem的行为:
花式索引
除了传统的index索引外,numpy还支持一些花式索引:
boolean值索引:
数组变形
数组转置
数组堆叠
split数组拆分
当两个数组的形状并不相同的时候,可以通过扩展数组的方法来实现相加、相减、相乘等操作,这种机制叫做广播(broadcasting)
一维数组广播
二维数组的广播
三维数组广播
数学函数
abs、sqrt、square、exp、log、sin、cos、tan,maxinmum、minimum、all、any、inner、clip、round、trace、ceil、floor
where函数
where 函数,三个参数,条件为真时选择值的数组,条件为假时选择值的数组
排序方法
np中还提供了排序方法,排序方法是就地排序,即直接改变原数组
arr.sort()、np.sort()、arr.argsort()
集合运算函数
统计函数
min、max、mean、median、sum、std、var、cumsum、cumprod、argmin、argmax、argwhere、cov、corrcoef
矩阵乘积
矩阵其他计算
下面可以计算矩阵的逆、行列式、特征值和特征向量、qr分解值,svd分解值
pandas是 Python 的核心数据分析支持库,提供了快速、灵活、明确的数据结构,旨在简单、直观地处理关系型、标记型数据。pandas是Python进行数据分析的必备高级工具。
pandas的主要数据结构是 **Series(**一维数据)与 **Dataframe **(二维数据),这两种数据结构足以处理金融、统计、社会科学、工程等领域里的大多数案例。
处理数据一般分为几个阶段:数据整理与清洗、数据分析与建模、数据可视化与制表,Pandas 是处理数据的理想工具。
pip安装即可:
Series
的 是一种一维数组,与 的数组类似,但它附加了轴标签(即索引)。 是 数据结构的基本构建块之一,主要用于存储和操作一维数据。每个 对象包含以下两个主要部分:
- 数据(data):实际的数据,可以是各种类型(整数、浮点数、字符串等)。
- 索引(index):一组标签,标识数据中的每个元素。
可以通过多种方式创建 ,如使用列表、字典、标量值等。
示例 1:使用列表创建
输出:
在这个例子中, 的索引是自动生成的(默认从 0 开始)。
示例 2:使用字典创建
输出:
在这个例子中,字典的键成为 的索引。
示例 3:使用标量值创建
输出:
在这个例子中,每个索引对应的值都是 5。
的属性和方法
提供了许多有用的属性和方法来处理和操作数据。
1. 和
输出:
2. 数据选择和过滤
可以像操作列表或字典一样操作 。
输出:
3. 常见操作
输出:
的 是一种强大的数据结构,提供了灵活性和便利性来处理一维数据。它的索引功能使得数据操作更加直观和高效,特别是在数据分析和处理任务中。
用列表生成 Series时,Pandas 默认自动生成整数索引,也可以指定索引。
Dataframe
的 是一种用于存储和操作二维数据的表格数据结构。它类似于电子表格或数据库中的表,由行和列组成。每列可以包含不同类型的数据(数值、字符串、布尔值等),每行和每列都有相应的标签(索引)。
Dataframe 的基本特性
- 二维结构:Dataframe 是一个二维的标记数据结构,类似于表格。
- 异构数据:每列可以包含不同类型的数据。
- 标记轴:行和列都有标签,可以使用这些标签进行数据访问和操作。
- 尺寸可变:可以随时添加或删除行和列。
可以通过多种方式创建 Dataframe,包括从字典、列表、 数组、另一个 Dataframe 等。
示例 1:从字典创建 Dataframe
输出:
示例 2:从 数组创建 Dataframe
输出:
Dataframe 的属性和方法
提供了许多属性和方法来操作和分析数据。
1. 访问数据
- 按列访问:可以通过列名访问列数据。
- 按行访问:可以使用 或 访问行数据。
2. 添加和删除行、列
- 添加列:
- 删除列:
- 添加行:
- 删除行:
3. 数据筛选和过滤
- 条件筛选:
- 多条件筛选:
4. 数据统计和聚合
- 基本统计:
- 分组聚合:
数据处理示例
的 是一种功能强大的数据结构,广泛用于数据处理和分析。它的灵活性和多功能性使得它成为数据科学和机器学习领域的重要工具。
查看Dataframe的常用属性和Dataframe的概览和统计信息
CSV
Excel
pandas对excel的读写依赖两个三方库:,,使用pip命令安装:
SQL
以mysql为例,提前安装pymysql和sqlalchemy:
HDF5
pip install tables -i https://pypi.tuna.tsinghua.edu.cn/simple
HDF5是一个独特的技术套件,可以管理非常大和复杂的数据收集。
HDF5,可以存储不同类型数据的文件格式,后缀通常是.h5,它的结构是层次性的。
一个HDF5文件可以被看作是一个组包含了各类不同的数据集。
对于HDF5文件中的数据存储,有两个核心概念:group 和 dataset:
-
dataset 代表数据集,一个文件当中可以存放不同种类的数据集,这些数据集如何管理,就用到了group
-
可以参考文件管理系统,不同的文件位于不同的目录下。目录就是HDF5中的group, 描述了数据集dataset的分类信息,通过group 有效的将多种dataset 进行管理和区分;文件就是HDF5中的dataset, 表示的是具体的数据。
字段数据
标签选择
位置选择
boolean索引
赋值操作
pandas 提供了多种将 Series、Dataframe 对象组合在一起的功能
concat数据串联
插入
Join SQL风格合并
数据集的合并(merge)或连接(join)运算是通过一个或者多个键将数据链接起来的。这些运算是关系型数据库的核心操作。
pandas的merge函数是数据集进行join运算的主要切入点。
轴和元素替换
map Series元素改变
apply元素改变(既支持 Series,也支持 Dataframe)
transform
中的 方法主要用于在 Dataframe 上按列(或按行)应用函数,并返回与输入索引相同大小的结果。它通常与分组操作(groupby)结合使用,以便对分组数据进行逐个元素的转换。
基本理解:
方法主要用于以下情况:
- 需要对数据进行逐个元素的转换,而不是整体聚合。
- 保持与输入数据相同的索引结构。
常见用法:
示例 1:对列进行转换
假设我们有一个 Dataframe,其中包含一些数值列。我们可以使用 对这些列应用函数:
输出:
示例 2:与 groupby 结合使用
与 结合使用时,可以对分组后的数据进行逐个元素的转换。
输出:
在这个例子中, 方法对每个分组计算 z-score,并返回一个与原始 Dataframe 相同大小的 Series。
注意事项:
- 返回的结果必须与原始数据的索引大小一致。
- 适用于逐个元素的转换,如果需要整体聚合(如求和、平均值等),可以使用 或 方法。
总结来说, 的 方法在需要对数据逐个元素进行转换并保持原始数据结构时非常有用,尤其是在分组操作后对每个分组数据进行逐个元素处理时。
重排随机抽样哑变量(独热编码)
独热编码(One-Hot Encoding)是一种将分类变量转换为一组二进制(0 和 1)变量的编码方法。这种编码方法创建了一个新的二进制列,对于每个可能的分类值都分配一个列,且每一行中只有一个列会被赋值为 1,其余列为 0。它广泛应用于机器学习和数据处理,以便算法能够处理非数值型数据。
许多机器学习算法和统计模型不能直接处理分类数据,因此需要将这些数据转换为数值形式。直接将分类数据映射为整数可能会导致模型误解数据中的隐含顺序关系,而独热编码可以避免这种问题。
假设有一个包含颜色的分类变量:
使用 进行独热编码:
输出结果:
独热编码通过将每个分类值转换为二进制变量来避免数值顺序误解,是处理分类数据的常用方法。这样,机器学习算法能够有效地使用这些数据进行建模。
简单统计指标
索引标签、位置获取
更多统计指标
高级统计指标
分箱操作就是将连续数据转换为分类对应物的过程。比如将连续的身高数据划分为:矮,中,高。
分箱操作分为等距分箱和等频分箱。
分箱操作也叫面元划分或者离散化。
分组
分组聚合
分组聚合apply、transform
分组聚合agg
透视表pivot_table
时间戳操作
时间戳索引
时间序列常用方法
在做时间序列相关的工作时,经常要对时间做一些移动/滞后、频率转换、采样等相关操作
时区表示
数据可视化需要依赖
- 一个快速、高效的Dataframe对象,用于数据操作和综合索引;
- 用于在内存数据结构和不同格式之间读写数据的工具:CSV和文本文件、Microsoft Excel、SQL数据库和快速HDF 5格式;
- 智能数据对齐和丢失数据的综合处理:在计算中获得基于标签的自动对齐,并轻松地将凌乱的数据操作为有序的形式;
- 数据集的灵活调整和旋转;
- 基于智能标签的切片、花式索引和大型数据集的子集;
- 可以从数据结构中插入和删除列,以实现大小可变;
- 通过在强大的引擎中聚合或转换数据,允许对数据集进行拆分应用组合操作;
- 数据集的高性能合并和连接;
- 层次轴索引提供了在低维数据结构中处理高维数据的直观方法;
- 时间序列-功能:日期范围生成和频率转换、移动窗口统计、移动窗口线性回归、日期转换和滞后。甚至在不丢失数据的情况下创建特定领域的时间偏移和加入时间序列;
- 对性能进行了高度优化,用Cython或C编写了关键代码路径。
- Python与pandas在广泛的学术和商业领域中使用,包括金融,神经科学,经济学,统计学,广告,网络分析,等等
- 学到这里,体会一会pandas库的亮点,如果对哪些还不熟悉,请对之前知识点再次进行复习。
在数据分析与机器学习中,经常要用到大量的可视化操作。一张制作精美的数据图片,可以展示大量的信息,一图顶千言。
在可视化中,Matplotlib算得上是最常用的工具。Matplotlib 是 python 最著名的绘图库,它提供了一整套 API,十分适合绘制图表,或修改图表的一些属性,如字体、标签、范围等。
Matplotlib 是一个 Python 的 2D 绘图库,它交互式环境生成出版质量级别的图形。通过 Matplotlib这个标准类库,开发者只需要几行代码就可以实现生成绘图,折线图、散点图、柱状图、饼图、直方图、组合图等数据分析可视化图表。
图形绘制
坐标轴刻度、标签、标题
图例
脊柱移动
在这段代码中:
这里的 是一个原始字符串(raw string)表示法,它告诉Python不要对字符串中的反斜杠进行转义。
这些标签使用了LaTeX语法,用于显示数学公式,具体解释如下:
- :标签为普通字符。
- :使用LaTeX语法显示为 (frac{pi}{2})。
- :使用LaTeX语法显示为 (pi)。
- :使用LaTeX语法显示为 (frac{3pi}{2})。
- :使用LaTeX语法显示为 (2pi)。
这些LaTeX格式的标签用于绘制图表时,可以让刻度标签以数学公式的形式显示,特别适合显示数学函数等内容。
所以, 列表定义了要在x轴上显示的标签,其中包括普通字符和使用LaTeX语法的数学公式。这个列表随后会被传递给 函数,用于设置x轴的刻度标签。
LaTeX语法
LaTeX(读作 “Lay-tech” 或 “Lah-tech”)是一种基于排版系统TeX的文档准备系统,广泛用于科学和学术文档的排版。LaTeX允许作者在文档中插入复杂的数学公式、表格、图形和其他格式化内容,具有高质量的排版效果。
LaTeX文档由纯文本文件组成,通常以 为扩展名,包含特定的命令和环境。以下是一些基本的LaTeX语法示例:
-
文档结构:
-
数学公式:
- 行内公式使用 :
- 独立公式使用 :
-
常用数学符号:
- 分数:
- 上标和下标: 和
- 希腊字母:,, 等
-
其他:
- 加粗:
- 斜体:
- 插入图像:
LaTeX有非常详细的官方文档和社区资源。以下是一些重要的资源链接:
-
LaTeX项目官方网站:LaTeX Project
- 提供了LaTeX的下载、介绍、指南等资源。
-
CTAN(Comprehensive TeX Archive Network):CTAN
- 是TeX和LaTeX软件包的主要存储库,提供了大量的文档和包。
-
在线LaTeX编辑器:Overleaf
- 是一个流行的在线LaTeX编辑器,支持实时协作和预览。
-
LaTeX Wikibook:Wikibooks LaTeX
- 提供了详细的LaTeX教程和参考。
图片保存
颜色、线形、点形、线宽、透明度
更多属性设置
子视图
嵌套
多图布局分格显示
均匀布局
不均匀分布
方式一:
方式二:
方式三:
双轴显示
常用函数如下:
文本
箭头
注释
注释箭头连接形状
折线图
柱状图
堆叠柱状图:
分组带标签柱状图:
极坐标图
极坐标线形图:
极坐标柱状图:
直方图
箱形图
散点图
散点图的英文叫做 scatter plot,它将两个变量的值显示在二维坐标中,非常适合展示两个变量之间的关系
饼图
一般饼图:
嵌套饼图:
甜甜圈
热力图
面积图
蜘蛛图
三维折线图散点图
三维柱状图
颜色代码对应表:https://www.cnblogs.com/doudou618/p/4455585.html
各城市对数据分析岗位的需求量
两种常用颜色:浅蓝色: #3c7f99 ,淡黄色:#c5b783
不同领域对数据分析岗的需求量
各城市薪资状况
工作经验与薪水关系
学历要求
技能要求
大公司对技能要求
colors = [‘#ff0000’, ‘#ffa500’, ‘#c5b783’, ‘#3c7f99’, ‘#0000cd’]