这周借了本书,打算看看Python了,不知道会不会又半途而废,希望能够坚持下来,打算就是前面几章数据预处理,加上SVM的部分,感觉不多,希望这次真的可以坚持下来
今天先学习第一章:向量、矩阵和数组
这一章主要是用numpy库来实现对向量、矩阵、数组的基本操作,代码和注释基本都是来源于这本书的
#这是本书的第一章:向量、矩阵和数组——本章将介绍在进行机器学习的过程中可能经常遇到的numpy操作
######################################################################
#1.1 创建一个向量
#问题描述:创建一个向量
#加载库
import numpy as np #书中是numPy,但会报错没有这个模块
#创建一个行向量
vector_row=np.array([1,2,3])
#创建一个列向量
vector_column=np.array([[1],
[2],
[3]])
#####################################################################
#1.2 创建一个矩阵
#问题描述:创建一个向量
#加载库
import numpy as np #书中是numPy,但会报错没有这个模块
#创建一个矩阵
matrix=np.array([[1,2],
[1,2],
[1,2]])
#三行两列的矩阵,第1列都是1,第2列都是2
#实际上,numpy提供了专门的数据结构来表示矩阵
matrix_object=np.mat([[1,2],
[1,2],
[1,2]])
matrix=([[1,2],
[1,2],
[1,2]])
#虽然有专门的数据结构来表示矩阵,但是不建议使用矩阵数据结构,
#原因有二:1 数组才是numpy的标准数据结构 2绝大多数的numpy操作返回的是数组而不是矩阵对象
###########################################################################################
#1.3创建一个稀疏矩阵
#问题描述:高效地表示只有零星非零值的数据
#加载库
import numpy as np
from scipy import sparse
#创建一个矩阵
matrix=np.array([[0,0],
[0,1],
[3,0]])
#创建一个压缩的稀疏行(Compressed Sparse Row,CSR)矩阵
matrix_sparse=sparse.csr_matrix(matrix)
#查看稀疏矩阵
print(matrix_sparse)
#结果如下
# (1, 1) 1
# (2, 0) 3
#矩阵的下标从0开始,(1,1)代表第2行第2列元素非零。1表示值为1,(2, 0)代表第3行第1列元素非零。3表示值为3
#创建一个更大的矩阵
matrix_large=np.array([[0,0,0,0,0,0,0,0,0,0],
[0,1,0,0,0,0,0,0,0,0],
[3,0,0,0,0,0,0,0,0,0]])
#创建CSR矩阵
matrix_large=sparse.csr_matrix(matrix_large)
#查看原先的稀疏矩阵
print(matrix_sparse)
#查看更大的稀疏矩阵
print(matrix_large)
#可见,尽管实际上这个更大的矩阵中增加了很多非零的元素,但是它的表示和原来那个稀疏矩阵是一样的
#稀疏矩阵有很多种类型,不存在完美的稀疏矩阵,它们之间的差异都是有意义的,而且知道在什么场景下选择哪种类型
#的稀疏矩阵是很有必要的
###########################################################################################
#1.4选择元素
#问题描述:在向量或矩阵中,选择一个或多个元素
#加载库
import numpy as np
#创建一个行向量
vector = np.array([1,2,3,4,5,6])
#创建一个矩阵
matrix = np.array([[1,2,3],