基础科学模块包
- 前言
- Numpy
* - 基本操作
- 相关API
- 实际应用
- Pandas
- 数据可视化
* - Tensorboard
- Matplotlib
– - Seaborn
前言
在深度学习机器学习的领域当中,Numpy是向量运算或矩阵运算的主力军。它极大简化了向量和矩阵的操作处理。在平时的学习和工作当中,对于Numpy的一些基础操作不是特别熟悉,尤其是高维数据,当沿着某个轴运算的时候,无法确定其运算原理。另外tensorflow里面的api与numpy运算也有着非常相似的操作,容易混淆,在tensorflow计算图中尽量避免使用numpy的api,不然会报错。因此,这篇博客主要总结Numpy、tensorflow、Pandas的知识以及一些api。相关的api参考可以访问各自的数据模块包的官网
Numpy
导入Numpy数据包:
import numpy as np
Numpy的基本数据类型是 ndarray
,意味着 N-dimensional array
,N维数组。它的属性有ndim:维度数量,shape:一个表示各维度大小的元组,即数组的形状,dtype:一个用于说明数组元素类型的对象。size:元素总个数,即shape中各数组相乘。
基本操作
- 创建数组
创建数组可以通过np.array()
创建numpy数组,它的类型是numpy.ndarray
另外还可以通过np.ones
、np.zeros()
,np.random.random()
根据自己实际的需求生成对应的数组。
- 索引
布尔索引
多维数组的索引
3. 聚合
4. 点乘
5. 矩阵索引
6. 矩阵聚合
不仅可以聚合矩阵中的所有值,还可以使用 axis 参数执行跨行或跨列聚合:
注意:
axis=n
表示沿着第n个下边变化的方向。如一个3维的数组a为(3,4,2),每个元素可以表示a 000 a_{000}a 0 0 0 ,a 001 a_{001}a 0 0 1 ,a 010 a_{010}a 0 1 0 ,a 011 a_{011}a 0 1 1 ,a 100 a_{100}a 1 0 0 …以此类推,那么 axis=0
求和,表示a 000 + a 100 + a 200 , a 001 + a 101 + a 201 a_{000}+a_{100}+a_{200},a_{001}+a_{101}+a_{201}a 0 0 0 +a 1 0 0 +a 2 0 0 ,a 0 0 1 +a 1 0 1 +a 2 0 1 常见的一元函数如下:
一元函数说明abs、fabs计算整数、浮点数或复数的绝对值。对于非复数值,可以使用fabssqrt计算各个元素的平方根,相当于arr0.5square计算各元素的平方,相当于arr2exp计算各元素的指数e的x次方log, log10, log2, log1p分别为自然对数、底数是10的log,底数为2的log,log(1+x)sign计算各元素的正负号:1 正数,0 零 , -1 负数cell计算各元素的ceiling值,即大于等于该值的最小整数floor计算各元素的floor值,即小于等于该值的最大整数isnan判断哪些值是NaN的布尔类型数组isfinite,isinf分别表示哪些元素是有穷的,哪些元素是无穷的logical_not计算各元素not x的真值,相当于 ~ 和 -arr
- 转置
; 相关API
np.unique
- 二进制运算
方法描述bitwise_and按元素计算两个数组的按位与bitwise_or按元素计算两个数组的按位或bitwise_xor按元素计算两个数组的按位异或invert按元素计算按位求逆,或按位求非
numpy.nditer
参考地址:https://numpy.org/devdocs/reference/generated/numpy.nditer.html#numpy.nditer- 线性代数
矩阵和向量积
方法描述dot两个数组的点积linalg.multi_dot在单个函数调用中计算两个或更多数组的点积,同时自动选择最快的求值顺序vdot返回两个向量的点积inner计算两个数组的内积outer计算两个向量的外积matmul计算两个数组的矩阵乘积
- 逻辑运算
| 方法 | 描述 |
|–|–|
|logical_and|按元素计算x1和x2的真值|
|logical_or|按元素计算x1或x2的真值|
|logical_not|计算非x元素的真值|
|logical_xor|按元素计算x1 xor x2的真值|
- 数学函数
四舍五入
方法描述around平均舍入到给定的小数位数round将数组舍入到给定的小数位数fix四舍五入为0floor返回输入的底限ceil返回输入的上限
- 搜索
方法描述argmax返回沿着某个轴方向的最大值下标argmin返回沿着某个轴方向的最小值下标where根据条件选择x中的元素还是y中的元素
np.where
np.where
是三元表达式 x if confition else y
的矢量化版本。
- 统计相关的
均值和偏差
|方法|描述|
|–|–|
|median|沿着某个轴计算中值|
|average|沿着某个轴计算平均值,有权重|
|mean|沿着某个轴计算平均值|
|std|计算标准差|
|var|计算偏差|
实际应用
- 公式
实现可用于矩阵和向量的数学公式是 NumPy 的关键用例。这就是 NumPy 是 python 社区宠儿的原因。例如均方差公式,它是监督机器学习模型处理回归问题的核心:M S E = 1 n ∑ i = n N ( Y i ^ − Y i ) 2 MSE=\frac{1}{n}\sum^N_{i=n}(\hat{Y_i}-Y_i)^2 M S E =n 1 i =n ∑N (Y i ^−Y i )2
对应的numpy公式:
MSE = (1/n)*np.sum(np.square(prediction-labels))
-
数据表示
-
表格和电子表格
- 音频和时间序列
音频文件是样本的一维数组。每个样本都是一个数字,代表音频信号的一小部分。CD 质量的音频每秒包含 44,100 个样本,每个样本是-65535 到 65536 之间的整数。这意味着如果你有一个 10 秒的 CD 质量 WAVE 文件,你可以将它加载到长度为 10 * 44,100 = 441,000 的 NumPy 数组中。如果想要提取音频的第一秒,只需将文件加载到 audio 的 NumPy 数组中,然后获取 audio[:44100]。
Pandas
为了节省时间,这里不做详细的描述了,详情可以查看:pandas中文网
数据可视化
Tensorboard
Tensorboard是Tensorflow的一个神器级工具,给用户提供了模型可视化的功能。在构建神经网络模型过程中,只要模型开始训练,我们需要关心神经网络的参数变化、超参数变化,准确率怎么样、loss收敛了吗以及debug程序。因此Tensorboard通过结合web应用为我们提供这些功能,它将模型训练过程中的细节以图表的形式通过浏览器可视化展现,可以清晰感知weight、bias、accuracy等变化,把握训练趋势。
通过tensorboard提供的图标,可以清楚知道loss和accuracy在每一个epoch中是怎么变化。Tensorboard提供了查看其他内容的功能:
- 在scalars下可以看到accuracy、bias、weight等趋势
- 在images和audio可以看到输入的数据
- 在graphs中可以看到模型的结构
- 在histogram可以看到activations,gradients或者weights等变量每一步的分布
- distribution和histogram是两种不同的形式,可以看到整体状况
- 在embedding看到PCA将高维数据投影到3D空间后的数据关系
; Matplotlib
Matplotlib的官方API文档地址:https://matplotlib.org/stable/index.html。
plot(x, y)
import matplotlib.pyplot as plt
import numpy as np
plt.style.use('_mpl-gallery')
x = np.linspace(0, 10, 100)
y = 4 + 2 * np.sin(2 * x)
fig, ax = plt.subplots()
ax.plot(x, y, linewidth=2.0)
ax.set(xlim=(0, 8), xticks=np.arange(1, 8),
ylim=(0, 8), yticks=np.arange(1, 8))
plt.show()
scatter(x, y)
import matplotlib.pyplot as plt
import numpy as np
plt.style.use('_mpl-gallery')
np.random.seed(3)
x = 4 + np.random.normal(0, 2, 24)
y = 4 + np.random.normal(0, 2, len(x))
sizes = np.random.uniform(15, 80, len(x))
colors = np.random.uniform(15, 80, len(x))
fig, ax = plt.subplots()
ax.scatter(x, y, s=sizes, c=colors, vmin=0, vmax=100)
ax.set(xlim=(0, 8), xticks=np.arange(1, 8),
ylim=(0, 8), yticks=np.arange(1, 8))
plt.show()
bar/barh
import matplotlib.pyplot as plt
import numpy as np
plt.style.use('_mpl-gallery')
np.random.seed(3)
x = 0.5 + np.arange(8)
y = np.random.uniform(2, 7, len(x))
fig, ax = plt.subplots()
ax.bar(x, y, width=1, edgecolor="white", linewidth=0.7)
ax.set(xlim=(0, 8), xticks=np.arange(1, 8),
ylim=(0, 8), yticks=np.arange(1, 8))
plt.show()
stem
import matplotlib.pyplot as plt
import numpy as np
plt.style.use('_mpl-gallery')
np.random.seed(3)
x = 0.5 + np.arange(8)
y = np.random.uniform(2, 7, len(x))
fig, ax = plt.subplots()
ax.stem(x, y)
ax.set(xlim=(0, 8), xticks=np.arange(1, 8),
ylim=(0, 8), yticks=np.arange(1, 8))
plt.show()
step
import matplotlib.pyplot as plt
import numpy as np
plt.style.use('_mpl-gallery')
np.random.seed(3)
x = 0.5 + np.arange(8)
y = np.random.uniform(2, 7, len(x))
fig, ax = plt.subplots()
ax.step(x, y, linewidth=2.5)
ax.set(xlim=(0, 8), xticks=np.arange(1, 8),
ylim=(0, 8), yticks=np.arange(1, 8))
plt.show()
hist
import matplotlib.pyplot as plt
import numpy as np
plt.style.use('_mpl-gallery')
np.random.seed(1)
x = 4 + np.random.normal(0, 1.5, 200)
fig, ax = plt.subplots()
ax.hist(x, bins=8, linewidth=0.5, edgecolor="white")
ax.set(xlim=(0, 8), xticks=np.arange(1, 8),
ylim=(0, 56), yticks=np.linspace(0, 56, 9))
plt.show()
boxplot
import matplotlib.pyplot as plt
import numpy as np
plt.style.use('_mpl-gallery')
np.random.seed(10)
D = np.random.normal((3, 5, 4), (1.25, 1.00, 1.25), (100, 3))
fig, ax = plt.subplots()
VP = ax.boxplot(D, positions=[2, 4, 6], widths=1.5, patch_artist=True,
showmeans=False, showfliers=False,
medianprops={"color": "white", "linewidth": 0.5},
boxprops={"facecolor": "C0", "edgecolor": "white",
"linewidth": 0.5},
whiskerprops={"color": "C0", "linewidth": 1.5},
capprops={"color": "C0", "linewidth": 1.5})
ax.set(xlim=(0, 8), xticks=np.arange(1, 8),
ylim=(0, 8), yticks=np.arange(1, 8))
plt.show()
Seaborn
seaborn的官方网站是http://seaborn.pydata.org/。seaborn库还是很强大,对我而言比matplotlib好用多。
Original: https://blog.csdn.net/u012655441/article/details/121790626
Author: RyanC3
Title: Python 基础科学模块包以及数据可视化
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/761636/
转载文章受原作者版权保护。转载请注明原作者出处!