人工智能基础-数学知识之线性代数
Posted i是绘梨衣吖
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了人工智能基础-数学知识之线性代数相关的知识,希望对你有一定的参考价值。
说明:本篇博客出自湖南师范大学基础教育大数据研究与应用重点实验室
人工智能基础-数学知识之线性代数
本篇博客为人工智能基础-数学知识之线性代数的第一部分内容,主要介绍了线性代数中向量的含义及一些基本运算、文本向量化的三种方法,内含python相关实现代码。本篇博客较为简单,请读者在学习的过程中,适当学习相关代码,领会其中思想。
一、向量
1.1 向量的含义
向量是指在坐标系中的有箭头的线段。在线性代数中,向量经常以原点作为起点。
用行的方式排列的向量叫作行向量,用列的方式排列的向量叫作列向量。习惯上,我们说向量时都是指列向量,如果是行向量,会加上一个上标符号T, T代表转置。
– | 行向量 | 列向量 |
---|---|---|
示例 | α = ( 2 , 4 , 6 ) \\boldsymbol\\alpha=(2,4,6) α=(2,4,6) | β = [ 2 4 7 ] \\boldsymbol\\beta=\\begin{bmatrix}\\\\2 \\\\4 \\\\7\\end{bmatrix} β=⎣⎡247⎦⎤ |
列向量表示法 | α T \\boldsymbol\\alpha^T αT | β \\boldsymbol\\beta β |
1.2 创建向量
NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。此处以Numpy为例进行演示。
# 创建向量,利用Numpy中的ndarray定义一个一维数组对象,就相当于创建了一个向量
import numpy as np
x=np.array([1,2,3,4,5])
y=np.array([2,5,6,3,2])
#结果为 [1 2 3 4 5]和 [2 5 6 3 2]
注意:如果两个向量的维数相同,并且对应元素相等,才说明两个向量相等。
#判断向量是否相等
np.all(x==y)
#结果为 False
1.3 向量的范数(模长)
向量的长度,也叫作向量的二范数、模长,其计算公式就是两点间欧氏距离公式,记作
∥
a
∥
=
[
a
1
a
2
⋮
a
n
]
=
a
1
2
+
a
2
2
+
⋯
+
a
n
2
∥a∥=\\begin{bmatrix}\\\\a_1 \\\\a_2 \\\\\\vdots\\\\a_n\\end{bmatrix}=\\sqrt {a_1^2+a_2^2+\\cdots+a_n^2}
∥a∥=⎣⎢⎢⎢⎡a1a2⋮an⎦⎥⎥⎥⎤=a12+a22+⋯+an2
可以利用Numpy中的linalg(线性代数)子模块进行运算:
#计算向量的长度
np.linalg.norm(x)
#结果为 7.416198487095663
1.4 向量加法(减法)
向量的加法(减法)就是两个维度相同的向量的对应元素之间的相加(减)。
[
a
1
α
2
]
+
[
b
1
b
2
]
=
[
a
1
+
b
1
a
2
+
b
2
]
\\begin{bmatrix}\\\\a_1 \\\\\\alpha_2 \\\\\\end{bmatrix}+\\begin{bmatrix}\\\\b_1 \\\\b_2 \\\\\\end{bmatrix}=\\begin{bmatrix}\\\\a_1+b_1 \\\\a_2+b_2 \\\\\\end{bmatrix}
[a1α2]+[b1b2]=[a1+b1a2+b2]
也可以从几何的角度理解向量的加减法运算:
将两个向量作为两条边,起点相同画一个平行四边形,对角线向量就是两个向量的和向量;两个向量的减法为平行四边形的另一条对角线。
在python中这样计算:
#向量减法,加法类似
z=x-y
#结果为 [-1 -3 -3 1 3]
1.5 向量的数乘
指向量与一个数字相乘,等于向量的各个分量都乘以相同的系数
[
a
1
a
2
]
∗
k
=
[
a
1
∗
k
a
2
∗
k
]
\\begin{bmatrix}\\\\a_1 \\\\a_2 \\\\\\end{bmatrix}*k=\\begin{bmatrix}\\\\a_1*k \\\\a_2 *k \\\\\\end{bmatrix}
[a1a2]∗k=[a1∗ka2∗k]
在python中这样计算:
#向量的数乘
z=10*x
#结果为 [10 20 30 40 50]
1.6 向量的乘法(点积)
指两个向量对应元素之积的和,得到的是一个数字。
[
a
1
a
2
⋮
a
n
]
.
[
b
1
b
2
⋮
b
n
]
=
a
1
b
1
+
a
2
b
2
⋯
+
a
n
b
n
\\begin{bmatrix}\\\\a_1 \\\\a_2 \\\\\\vdots\\\\a_n\\end{bmatrix}.\\begin{bmatrix}\\\\b_1 \\\\b_2 \\\\\\vdots\\\\b_n\\end{bmatrix}=a_1b_1 +a_2b_2 \\cdots+a_nb_n
⎣⎢⎢⎢⎡a1a2⋮an⎦⎥⎥⎥⎤.⎣⎢⎢⎢⎡b1b2⋮bn⎦⎥⎥⎥⎤=a1b1+a2b2⋯+anbn
在python中这样计算:
#向量的点积,使用numpy.dot方法
np.dot(x,y)
#结果为 52
在数值上等于两个向量的长度和夹角余弦之积,即:
a
⋅
b
=
∣
∣
a
∣
∣
∗
∣
∣
b
∣
∣
∗
cos
θ
a·b=||a||*||b||*\\cos\\theta
a⋅b=∣∣a∣∣∗∣∣b∣∣∗cosθ
二、向量化
文本向量化属于自然语言处理的范畴,在所有数据任务中,机器处理的都是全是数字的向量。文本向量化就是将文本表示成一系列能够表达文本语义的向量。
文本向量化主要有以下几种方法:
2.1 One-Hot Encoding方式
独热编码,又称一位有效编码,其方法是使用N位状态寄存器来对N个状态进行编码,每个状态都有它独立的寄存器位,并且在任意时候,其中只有一位有效。
大致步骤为:①分词②构造文本分词后的字典③对词语进行One-hot编码。
例如:
对于句子’I , I , I love study’和’study is my angle!’,首先将其看做为一篇文档,分词之后,构成字典包括’angle’, ‘i’, ‘is’, ‘love’, ‘my’, 'study’六个单词,再对每个句子进行分词,若句子中出现字典中的字,则记为1,否则记为0。最终得到编码表如下所示。
– | angle | i | is | love | my | study |
---|---|---|---|---|---|---|
I , I , I love study | 0 | 1 | 0 | 1 | 0 | 1 |
study is my angle | 1 | 0 | 1 | 0 | 1 | 1 |
代码如下:(此处为英文句子,英文句子默认会分词,而中文不会)
from sklearn.feature_extraction.text import CountVectorizer
import pandas as pd
corpus=['I , I , I love study', 'study is my an以上是关于人工智能基础-数学知识之线性代数的主要内容,如果未能解决你的问题,请参考以下文章