小白的机器学习实战——向量,矩阵和数组

简介: 创建矩阵import numpy as np# 创建矩阵matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], ...

创建矩阵

import numpy as np
# 创建矩阵
matrix = np.array([[1, 2, 3],
                   [4, 5, 6],
                   [7, 8, 9],
                   [10, 11, 12]])

向量

# 行向量
vector_row = np.array([1, 2, 3])
# 列向量
vector_column = np.array([[1],
                          [2],
                          [3]])

计算平均值,方差和标准偏差

# 计算均值
np.mean(matrix)
>>> 6.5
# 计算方差
np.var(matrix)
>>> 11.916666666666666
# 计算标准差
np.std(matrix)
>>> 3.4520525295346629

重塑矩阵

# 第二维可以为-1让程序自己推断,如matrix.reshape(2, -1)
matrix.reshape(2, 6)
>>> array([[ 1,  2,  3,  4,  5,  6],
       [ 7,  8,  9, 10, 11, 12]])
    

矩阵加减法

# 创建矩阵a
matrix_a = np.array([[1, 1, 1],
                     [1, 1, 1],
                     [1, 1, 2]])

# 创建矩阵b
matrix_b = np.array([[1, 3, 1],
                     [1, 3, 1],
                     [1, 3, 8]])
                     
# 矩阵相加
np.add(matrix_a, matrix_b)
array([[ 2,  4,  2],
       [ 2,  4,  2],
       [ 2,  4, 10]])

# 矩阵相减
np.subtract(matrix_a, matrix_b)
array([[ 0, -2,  0],
       [ 0, -2,  0],
       [ 0, -2, -6]])

对矩阵元素进行操作

# 创建一个方法:对每个元素加10
add_100 = lambda i: i + 10

# 在对numpy的数组进行操作时,我们应该尽量避免循环操作,尽可能利用矢量化函数来避免循环。但是,直接将自定义函数应用在numpy数组之上会报错,我们需要将函数进行矢量化转换.
vectorized_add_100 = np.vectorize(add_100)

# 最后将函数应用到矩阵上
vectorized_add_100(matrix)
>>> array([[11, 12, 13],
           [14, 15, 16],
           [17, 18, 19],
           [20, 21, 22]])

创建稀疏矩阵

# 创建一个矩阵,其中零元素远远多于非零元素
matrix = np.array([[0, 0],
                   [1, 0],
                   [0, 6]])
# 由于稀疏矩阵中非零元素较少,零元素较多,因此可以采用只存储非零元素的方法来进行压缩存储。
# 另外对于很多元素为零的稀疏矩阵,仅存储非零元素可使矩阵操作效率更高,速度更快。
# python不能自动创建稀疏矩阵,所以要用scipy中特殊的命令来得到稀疏矩阵。
from scipy import sparse
matrix_sparse = sparse.csr_matrix(matrix)

描述一个矩阵

# 查看行和列
matrix.shape
>>> (4, 3)
# 查看所有元素个数(行*列)
matrix.size
>>> 12
# 查看维数
matrix.ndim
>>> 2

最大值和最小值

# 最大值
np.max(matrix)
>>> 12
# 最小值
np.min(matrix)
>>> 1
# 按列查找最大元素
np.max(matrix, axis=0)
>>> array([10, 11, 12])
# 按行查找最大元素
np.max(matrix, axis=1)
>>> array([3, 6, 9,12])

矩阵求逆

# 创建一个新矩阵
matrix_n = np.array([[1, 2],
                   [3, 4]])
# 计算逆矩阵
np.linalg.inv(matrix_n)
>>> array([[-2. ,  1. ],
       [ 1.5, -0.5]])

展平矩阵

matrix.flatten()
>>> array([1, 2, 3, 4, 5, 6, 7, 8, 9])

元素选择

# 对一个向量
vector = np.array([1, 2, 3, 4, 5, 6])
vector[1]
>>> 2
# 对于一个矩阵
matrix = np.array([[1, 2, 3],
                   [4, 5, 6],
                   [7, 8, 9]])
matrix[1,1]
>>> 5
对于一个张量(高维矩阵)
tensor = np.array([
    [[[1, 1], [1, 1]], [[2, 2], [2, 2]]],
    [[[3, 3], [3, 3]], [[4, 4], [4, 4]]]
                  ])
tensor[1,1,1]
>>> array([4, 4])

计算矩阵点乘(对应位置相乘之后再相加)

vector_a = np.array([1,2,3])
vector_b = np.array([4,5,6])
# 方法一
np.dot(vector_a, vector_b)
>>> 32
# 方法二
vector_a @ vector_b
>>> 32

计算矩阵的行列式(The Determinant Of A Matrix)、矩阵的迹(The Trace Of A Matrix)和矩阵的秩(The Rank Of A Matrix)

matrix = np.array([[1, 2, 3],
                   [4, 5, 6],
                   [7, 8, 9]])
# 行列式:行列式(Determinant)是数学中的一个函数,将一个 n*n的矩阵A映射到一个标量,记作det(A)或|A|
np.linalg.det(matrix)
>>> -9.5161973539299405e-16

# 迹:在线性代数中,一个n×n矩阵A的主对角线(从左上方至右下方的对角线)上各个元素的总和被称为矩阵A的迹(或迹数),一般记作tr(A)。
# 先获得矩阵的对角线
matrix.diagonal()
>>> array([1, 5, 9])
# 对角线求和就是迹
matrix.diagonal().sum()
>>> 15
# 秩:在线性代数中,一个矩阵A的列秩是A的线性独立的纵列的极大数目。
np.linalg.matrix_rank(matrix)
>>> 2

矢量或矩阵转置

# 创建一个矢量
vector = np.array([1, 2, 3, 4, 5, 6])
# 转置
vector.T
>>> array([1, 2, 3, 4, 5, 6])

# 创建一个矩阵
matrix = np.array([[1, 2, 3],
                   [4, 5, 6],
                   [7, 8, 9]])
# 转置
matrix.T
>>> array([[1, 4, 7],
          [2, 5, 8],
          [3, 6, 9]])

参考:https://chrisalbon.com/

目录
相关文章
|
6天前
|
机器学习/深度学习 运维 算法
Machine Learning机器学习之向量机(Support Vector Machine,SVM)
Machine Learning机器学习之向量机(Support Vector Machine,SVM)
|
6天前
|
机器学习/深度学习 传感器 数据采集
机器学习实战 —— 工业蒸汽量预测(六)
机器学习实战 —— 工业蒸汽量预测(六)
12 0
|
6天前
|
机器学习/深度学习 传感器 数据采集
机器学习实战 —— 工业蒸汽量预测(五)
机器学习实战 —— 工业蒸汽量预测(五)
5 0
|
6天前
|
机器学习/深度学习 传感器 数据采集
机器学习实战 —— 工业蒸汽量预测(四)
机器学习实战 —— 工业蒸汽量预测(四)
14 1
|
6天前
|
机器学习/深度学习 传感器 数据采集
机器学习实战 —— 工业蒸汽量预测(三)
机器学习实战 —— 工业蒸汽量预测(三)
11 1
|
6天前
|
机器学习/深度学习 数据采集 传感器
机器学习实战 —— 工业蒸汽量预测(二)
机器学习实战 —— 工业蒸汽量预测(二)
9 1
|
6天前
|
机器学习/深度学习 传感器 数据采集
机器学习实战 —— 工业蒸汽量预测(一)
机器学习实战 —— 工业蒸汽量预测(一)
17 1
|
6天前
|
机器学习/深度学习 自然语言处理 算法
机器学习算法原理与应用:深入探索与实战
【5月更文挑战第2天】本文深入探讨机器学习算法原理,包括监督学习(如线性回归、SVM、神经网络)、非监督学习(聚类、PCA)和强化学习。通过案例展示了机器学习在图像识别(CNN)、自然语言处理(RNN/LSTM)和推荐系统(协同过滤)的应用。随着技术发展,机器学习正广泛影响各领域,但也带来隐私和算法偏见问题,需关注解决。
|
6天前
|
机器学习/深度学习 数据采集 TensorFlow
【Python机器学习专栏】使用Python进行图像分类的实战案例
【4月更文挑战第30天】本文介绍了使用Python和深度学习库TensorFlow、Keras进行图像分类的实战案例。通过CIFAR-10数据集,展示如何构建和训练一个卷积神经网络(CNN)模型,实现对10个类别图像的识别。首先安装必要库,然后加载数据集并显示图像。接着,建立基本CNN模型,编译并训练模型,最后评估其在测试集上的准确性。此案例为初学者提供了图像分类的入门教程,为进一步学习和优化打下基础。
|
6天前
|
机器学习/深度学习 Python
【Python 机器学习专栏】混淆矩阵与 ROC 曲线分析
【4月更文挑战第30天】本文介绍了机器学习中评估模型性能的两种工具——混淆矩阵和ROC曲线。混淆矩阵显示了模型在不同类别上的预测情况,包括真正例、假正例、真反例和假反例,帮助评估模型错误类型和数量。ROC曲线则通过假正率和真正率展示了模型的二分类性能,曲线越接近左上角,性能越好。文章还提供了Python中计算混淆矩阵和ROC曲线的代码示例,强调它们在模型选择、参数调整和理解模型行为中的应用价值。

热门文章

最新文章