Python机器学习手册(一)

Python机器学习手册(一)

正在学习机器学习,感觉这本书比较不错,第一次写,没有经验,嘻嘻嘻。
我用的工具是Anaconda中的Jupyter Notebook,代码都跑通了
进入正文咯~

第1章 向量、矩阵和数组

1.0 简介

Numpy是Python机器学习技术栈的基础。Numpy能对机器学习中常用的数据结构——向量(vector)、矩阵(matrice)、张量(tensor)进行高效的操作。

1.1 创建一个向量

#加载Numpy库
import numpy as np
#创建一个行向量
vector_row=np.array([1,2,3])
#创建一个列向量
vector_column=np.array([[1],[2],[3]])
#打印结果
print(vector_row)
print(vector_column)
#[1 2 3]
#[[1]
 #[2]
 #[3]]

创建一个向量,只需要简单的创建一个一维数组即可

1.2 创建一个矩阵

加载库
import numpy as np

#方法一:使用Numpy创建一个二维数组
matrix=np.array([[1,2],[1,2],[1,2]])
matrix
#运行结果
array([[1, 2],
       [1, 2],
       [1, 2]])

#方法二:通过Numpy专有函数mat进行构造矩阵
matrix_object=np.mat([[1,2],[1,2],[1,2]])
matrix_object
#运行结果
matrix([[1, 2],
        [1, 2],
        [1, 2]])

不推荐使用专有函数进行构造矩阵。一方面,矩阵是Numpy的标准数据结构;另一方面,绝大多数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
#创建一个更大的稀疏矩阵
matrix=np.array([[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]])
#创建压缩行
matrix_large_sparse=sparse.csr_matrix(matrix)
print(matrix_large_sparse)
#运行结果
(1, 0)	1
(2, 0)	3

尽管更大的稀疏矩阵中增加了很多零元素,但是和较小的稀疏矩阵的表示相同,所以说增加的零元素并没有改变稀疏矩阵的大小,也就是说上述两个矩阵所消耗的内存一样¶。

1.4 选择数据

和python中的大多事物一样,Numpy数组的索引也是从0开始的

import numpy as np
#创建一个行向量
vector=np.array([1,2,3,4,5,6])
#创建一个矩阵
matrix=np.array([[1,2,3],[4,5,6],[7,8,9]])
#选择行向量的第三个元素
vector[2]
#运行结果
3

#选择矩阵第二行第二列的元素
matrix[1,1]
#运行结果
5

#选择行向量中所有的元素
vector[:]
#运行结果
array([1, 2, 3, 4, 5, 6])

#选择从0开始,三个元素
vector[:3]
#运行结果
array([1, 2, 3])

#选择第3个元素后的所有元素
vector[3:]
#运行结果
array([4, 5, 6])

#选择行向量的最后一个元素
vector[-1]
#运行结果
6

#选取矩阵的第1行和第2行以及所有列
matrix[:2,:]
#运行结果
array([[1, 2, 3],
       [4, 5, 6]])

#选取所有行中的第二列
matrix[:,1:2]
#运行结果
array([[2],
       [5],
       [8]])

1.5 展示一个矩阵的属性

#展示一个矩阵的形状、大小、维数
#使用shape,size,ndim
import numpy as np
matrix=np.array([[1,2,3],[4,5,6],[7,8,9]])
#查看行数和列数
matrix.shape
#查看矩阵的大小
matrix.size
#查看矩阵的维数
matrix.ndim

1.6 对多个元素同时应用某个操作

import numpy as np
matrix=np.array([[1,2,3],[4,5,6],[7,8,9]])
#创建一个函数,返回输入值加上100以后的值
add_100=lambda i:i+100
#创建向量化函数
vectorized_add_100=np.vectorize(add_100)
#对矩阵的所有元素应用这个函数
vectorized_add_100(matrix)
#另一种方法对矩阵进行加100的操作
matrix=np.array([[1,2,3],[4,5,6],[7,8,9]])
matrix+100

1.7 找到最大值和最小值

import numpy as np
matrix=np.array([[1,2,3],[4,5,6],[7,8,9]])
#最大值
np.max(matrix)
#最小值
np.min(matrix)
#找到每一行最大的元素
np.max(matrix,axis=1)
#找到每一列最大的元素
np.min(matrix,axis=0)

1.8 计算平均值、方差和标准差

包括整个矩阵、每一行、每一列的平均值、方差和标准差

import numpy as np
matrix=np.array([[1,2,3],[4,5,6],[7,8,9]])
#计算平均值
np.mean(matrix)
#计算方差
np.var(matrix)
#计算标准差
np.std(matrix)
#找到每一行的平均值
np.mean(matrix,axis=1)
#找到每一行的方差
np.var(matrix,axis=0)

每一列和上述方法相似

1.9 矩阵变形

import numpy as np
matrix=np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])
#将矩阵变化成2*6形式的矩阵
matrix.reshape(2,6)

#将矩阵变化为一行
matrix.reshape(-1,1)

1.10 转置向量或矩阵

import numpy as np
matrix=np.array([[1,2,3],[4,5,6],[7,8,9]])
#转置向量
matrix.T

#向量不能转置,行向量可以转置为列向量
np.array([[1,2,3,4,5,6]]).T

1.11 展开一个矩阵

import numpy as np
matrix=np.array([[1,2,3],[4,5,6],[7,8,9]])

#展开一个矩阵 转换为一维数组
matrix.flatten()

1.12 计算矩阵的秩

import numpy as np
matrix=np.array([[1,2,3],[4,5,6],[7,8,9]])

#计算矩阵的秩
np.linalg.matrix_rank(matrix)

1.13 计算行列式

使用函数linalg.det可计算矩阵的行列式

import numpy as np
matrix=np.array([[1,2,3],[4,5,6],[7,8,9]])

#计算矩阵的行列式
np.linalg.det(matrix)

1.14 获取矩阵的对角线元素

import numpy as np
matrix=np.array([[1,2,3],[4,5,6],[7,8,9]])

#获取矩阵的对角线元素
matrix.diagonal()
#返回主对角线向上偏移量为1的对角线元素
matrix.diagonal(offset=1)
#返回主对角线向下偏移量为1的对角线元素
matrix.diagonal(offset=-1)

1.15 计算矩阵的迹

import numpy as np
matrix=np.array([[1,2,3],[4,5,6],[7,8,9]])

#返回矩阵的迹
matrix.trace()

1.16 计算矩阵的特征值和特征向量

import numpy as np
matrix=np.array([[1,2,3],[4,5,6],[7,8,9]])

#计算特征值和特征向量
eugenvalues,eugenvectors = np.linalg.eig(matrix)

#查看特征值
eugenvalues
#查看特征向量
eugenvectors

1.17 计算点积

import numpy as np

#创建两个向量
vector_a = np.array([1,2,3])
vector_b = np.array([4,5,6])

#计算点击积
np.dot(vector_a,vector_b)
#计算向量的点积
vector_a@vector_b

1.18 矩阵的相加或相减

两种办法,一种利用numpy中的add、subtract函数进行相加或相减一种是直接进行加减。

import numpy as np

#创建两个向量
matrix_a = np.array([[1,1,1],[1,1,1],[1,1,2]])
matrix_b = np.array([[1,3,1],[1,3,1],[1,3,8]])
#将两个矩阵相加
np.add(matrix_a,matrix_b)

#将两个矩阵相减
np.subtract(matrix_a,matrix_b)
matrix_a+matrix_b

1.19 矩阵的乘法

import numpy as np

#创建两个向量
matrix_a = np.array([[1,1,1],[1,1,1],[1,1,2]])
matrix_b = np.array([[1,3,1],[1,3,1],[1,3,8]])

#计算两个矩阵相乘
np.dot(matrix_a,matrix_b)
#两个矩阵相乘
matrix_a@matrix_b
#两个矩阵对应元素相乘
matrix_a*matrix_b

1.20 计算矩阵的逆

import numpy as np

#创建一个矩阵
matrix=np.array([[1,4],[2,5]])

#计算一个矩阵的逆
np.linalg.inv(matrix)

1.21 生成随机数

import numpy as np

#设置随机数种子
np.random.seed(0)

#生成30.01.0之间的随机浮点数
np.random.random(3)

#生成3110之间的随机整数
np.random.randint(0,11,3)

#从平均值是0.0且标准差是1.0的正态分布中抽取3个数
np.random.normal(0.0,1.0,3)

#从平均值是0.0且散步程度是1.0的logistic分布中中抽取3个数
np.random.logistic(0.0,1.0,3)

#从大于或等于1.0并且小于2.0的范围中抽取3个数
np.random.uniform(1.0,2.0,3)

结束啦!!!

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Python机器学习手册》是一本涵盖了Python机器学习相关知识的重要参考书。这本书主要包含了机器学习的基本概念、算法和应用实例。 首先,这本书对机器学习的基本概念进行了清晰的介绍。它从机器学习的定义、基本原理和分类开始,帮助读者全面了解机器学习的基础知识。同时,它还介绍了机器学习的一些核心概念,如监督学习、无监督学习、强化学习等,帮助读者建立起对机器学习的整体认识。 其次,这本书详细讲解了各种常见的机器学习算法。例如,它介绍了线性回归、逻辑回归、决策树、支持向量机、朴素贝叶斯等算法的原理和应用场景,帮助读者了解不同算法的优缺点及适用范围。同时,这本书还涵盖了深度学习相关内容,如神经网络、卷积神经网络和循环神经网络等,让读者能够全面掌握不同类型的机器学习算法。 此外,这本书还提供了大量的实战案例和代码示例,帮助读者深入理解机器学习的应用。读者可以通过这些实例了解机器学习在图像识别、文本分类、推荐系统等领域的具体应用方法。同时,书中的代码示例也有助于读者在实际应用中快速上手,提升自己的实践能力。 总之,这本《Python机器学习手册》是一本全面介绍Python机器学习知识的好书。它不仅可以作为初学者入门的指南,还能作为资深开发者的参考手册。通过阅读这本书,读者可以系统地学习和掌握机器学习的基本概念、算法和实践技巧,提升自己在机器学习领域的能力。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值