欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

机器学习——机器学习中的线性代数

程序员文章站 2022-07-12 14:00:41
...

数学对象

import numpy as np

# 标量只是一个单一的数字
scalar_value = 18

print(scalar_value)

scalar_np = np.array(scalar_value) # 转换为np中的数组array
print(scalar_np, scalar_np.shape)
18
18 ()
# 向量是一个有序的数字数组
vector_value = [1,2,3] # 这是一个列表
vector_np  = np.array(vector_value) # 转换为np中的数组array
print(vector_np, vector_np.shape)
# 一维数组,既不能算行向量,也不能算列向量,真正的行向量、列向量需要二维数组表示
[1 2 3] (3,)
# 矩阵是一个有序的二维数组,有两个索引
matrix_list = [[1,2,3],[4,5,6]]
matrix_np = np.array(matrix_list)
print('matrix_list=', matrix_list, '\n',
      'matrix_np=\n', matrix_np, '\n', 
      'matrix_np.shape=', matrix_np.shape)
matrix_list= [[1, 2, 3], [4, 5, 6]] 
 matrix_np=
 [[1 2 3]
 [4 5 6]] 
 matrix_np.shape= (2, 3)
# 行向量的矩阵表示
vector_row = np.array([[1,2,3]])
print(vector_row, 'shape=',vector_row.shape)
[[1 2 3]] shape= (1, 3)
# 列向量的矩阵表示
vector_column = np.array([[4],[5],[6]])
print(vector_column, 'shape=', vector_column.shape)
[[4]
 [5]
 [6]] shape= (3, 1)
# 行列转置
vector_row = np.array([[1,2,3]])

print(vector_row, 'shape=',vector_row.shape, '\n', vector_row.T, '.Tshape=', vector_row.T.shape)
[[1 2 3]] shape= (1, 3) 
 [[1]
 [2]
 [3]] .Tshape= (3, 1)
# 矩阵与标量运算
matrix_a = np.array([[1,2,3],[4,5,6]])
print(matrix_a, 'shape=', matrix_a.shape)
[[1 2 3]
 [4 5 6]] shape= (2, 3)
# 矩阵*标量
matrix_b = matrix_a * 2
print(matrix_b, 'shape=', matrix_b.shape)
[[ 2  4  6]
 [ 8 10 12]] shape= (2, 3)
# 矩阵 + 标量
matrix_c = matrix_a+2
print(matrix_c, 'shape=',matrix_c.shape)
[[3 4 5]
 [6 7 8]] shape= (2, 3)
# 矩阵 + 矩阵
matrix_a = np.array([[1,2,3],
                     [4,5,6]])
matrix_b = np.array([[-1,-2,-3],
                     [-4,-5,-6]])

matrix_a + matrix_b
array([[0, 0, 0],
       [0, 0, 0]])
# 矩阵 * 矩阵(点积),对应位置数字相乘,两个矩阵行列数必须相等
matrix_a = np.array([[1,2,3],
                     [4,5,6]])
matrix_b = np.array([[-1,-2,-3],
                     [-4,-5,-6]])
matrix_a * matrix_b # 和np.multiply等价
array([[ -1,  -4,  -9],
       [-16, -25, -36]])
# 矩阵-矩阵乘法(叉乘)
# 第一个矩阵列的数量与第二个矩阵行数相匹配,才能将矩阵相乘
# 结果将是一个矩阵,它具有与第一个矩阵相同的行数与第二个矩阵相同的列数
matrix_a = np.array([[1,2,3],
                     [4,5,6]])# 2行3列
matrix_b = np.array([[1,2,3,4],
                     [2,1,2,0],
                     [3,4,1,2]])# 3行4列

np.matmul(matrix_a, matrix_b) # 结果是2行4列
array([[14, 16, 10, 10],
       [32, 37, 28, 28]])