本文共 5570 字,大约阅读时间需要 18 分钟。
傅里叶变换是一种将时域信号转换为频域信号的数学工具,广泛应用于信号处理、图像分析以及音频处理等领域。通过傅里叶变换,我们可以将复杂的时域信号分解为更易于分析的频域信号,从而能够提取出信号中的低频、高等等有用信息。
逆傅里叶变换是傅里叶变换的逆过程,用于将频域信号还原为时域信号。在实际应用中,逆傅里叶变换可以帮助我们去掉不需要的高频成分,从而更清晰地观察信号的低频部分。
卷积神经网络(CNN)是一种深度学习模型,广泛应用于图像分类、目标检测等任务。CNN的核心结构包括卷积层和池化层,通过卷积操作提取局部特征,池化操作进一步降低维度,提高模型的鲁棒性。
Logistic回归是一种强分类器,适用于二分类问题。它通过逻辑函数将线性分类问题转换为非线性问题,输出类别概率。支持向量机(SVM)是一种强分类器,通过构造最大间隔平面将数据分隔,实现分类。
决策树是一种弱分类器,通过将数据分成不同的子集,逐步进行分类。决策树的优点是易于解释和实现,适合小数据集的分类任务。
回归是预测任务的一种,分为连续回归和分类回归。连续回归用于预测连续变量(如温度、价格等),而分类回归用于预测类别变量(如性别、物品分类等)。
最小二乘法是一种优化算法,通过最小化预测值与实际值之间误差的平方和,找到最佳模型参数。它广泛应用于线性回归、分类等任务。
线性回归是一种简单的统计方法,用于建立自变量与因变量之间的线性关系。它通过最小化预测误差,找到最佳拟合直线。
K邻近算法是一种分类算法,通过在测试样本周围找到的K个最近邻域内的平均值或众数来进行预测。它简单易实现,但对大数据集的性能较差。
岭回归是一种放松L2正则化的线性回归方法,通过引入惩罚项使模型参数的绝对值被限制,从而防止模型过拟合。
Lasso回归是一种结合了L1和L2正则化的回归方法,通过同时对模型参数进行L1和L2正则化,能够同时选择重要的特征和防止过拟合。
Logistic回归是一种用于分类的回归模型,通过对数似然函数进行优化,找到分类决策边界。
在分类或回归问题中,通常使用损失函数(代价函数)作为其目标函数。负对数似然是一种常用的损失函数,通过最大化对数似然来最小化损失。
ROC曲线是用于评估分类器性能的图形,通过绘制真正率与假正率的曲线,帮助我们理解模型的分类能力。
AUC(Area Under Curve)是ROC曲线下的面积,反映分类器对正类样本的整体性能,值越大表示分类器性能越好。
NumPy是一个强大的数值处理库,提供了高效的数组操作功能。NumPy数组的维数称为秩,二维数组的秩为2。每个线性数组称为一个轴,axis=0表示沿列操作,axis=1表示沿行操作。
np.array()
用于创建数组。dt=np.dtype()
用于查看数据类型。a.shape
返回数组的行列值。a.reshape(m,n)
改变数组的行列值。np.fromiter()
从可迭代对象创建数组。np.arange()
生成等差数列。np.linspace()
生成等差数列。np.logspace()
生成等比数列。a[start:stop:step]
截取数组部分。y = x[[0,1,2], [0,1,0]]
通过花式索引提取特定元素。b = a[1:3, 1:3]
截取子数组。c = a[1:3,[1,2]]
通过索引数组提取元素。d = a[...]
提取所有行或列。a[x>5]
过滤大于5的元素。x[[4,2,1,7]]
通过索引数组提取特定元素。x[[-4,-2,-1,-7]]
通过倒序索引提取元素。x[np.ix_([1,5,7,2],[0,3,1,2])]
通过多维索引提取元素。广播是NumPy对不同形状数组进行运算的方式,通过自动扩展数组的维度进行计算。
a.T
得到数组的转置。np.transpose(a)
同样得到数组的转置。for x in np.nditer(a)
遍历数组元素。for element in a.flat
遍历数组元素。a.flat
是一个数组元素迭代器。a.flatten()
返回一份数组拷贝。a.ravel()
将数组展开为一维数组,修改会影响原始数组。np.rollaxis(arr, axis, start)
向后滚动特定轴到指定位置。np.swapaxes(arr, axis1, axis2)
交换两个轴。a.ndim
返回数组的维度。np.squeeze(arr, axis)
去除指定轴的维度。np.concatenate((a1, a2, …), axis)
沿指定轴连接数组。np.stack(arrays, axis)
沿新轴连接多个数组。np.hstack(arrays, axis)
水平堆叠数组。np.vstack(arrays, axis)
垂直堆叠数组。np.split(ary, indices_or_sections, axis)
沿指定轴分割数组。np.hsplit(ary, indices_or_sections)
水平分割数组。np.vsplit(ary, indices_or_sections)
垂直分割数组。np.resize(arr, shape)
返回指定大小的新数组。np.append(arr, values, axis=None)
在数组末尾添加值。np.insert(arr, obj, values, axis)
在指定位置插入值。np.delete(arr, obj, axis)
从数组中删除指定子数组。np.unique(arr, return_index, return_inverse, return_counts)
去除重复元素。np.bitwise_and(a, b)
按位与操作。np.bitwise_or(a, b)
按位或操作。np.invert(a, dtype=np.uint8)
对数组进行位取反。np.binary_repr(a, width=8)
返回二进制表示。np.left_shift(10,2)
左移2位。np.right_shift(40,2)
右移2位。np.sin(a)
计算正弦函数。np.arcsin(sin)
计算反正弦函数。np.add(a, b)
加法运算。np.subtract(a, b)
减法运算。np.multiply(a, b)
乘法运算。np.divide(a, b)
除法运算。np.reciprocal(a)
计算倒数。np.power(a, b)
计算幂运算。np.mod(a, b)
计算余数。np.amin(a, axis)
计算最小值。np.amax(a, axis)
计算最大值。np.ptp(a, axis)
计算最大值与最小值之差。np.median(a, axis)
计算中位数。np.mean(a, axis)
计算算术平均值。np.average(a, axis, weights=b)
计算加权平均值。np.std(a)
计算标准差。np.var(a)
计算方差。np.sort(a, axis, kind, order)
按指定方式排序。np.argsort(a)
返回排序后的索引值。np.lexsort((a, b))
对多个序列进行排序。np.partition(a, 3)
将数组按指定值分割。np.partition(a, (1, 3))
根据多个条件分割数组。np.argpartition(a, 2)
找到数组的第3小元素。np.argpartition(a, -2)
找到数组的第2大元素。np.argmax(a, axis)
找到沿指定轴的最大值索引。np.argmin(a, axis)
找到沿指定轴的最小值索引。np.nonzero(a)
返回非零元素的索引。np.where(condition, x)
返回满足条件元素的索引。np.extract(condition, x)
根据条件抽取元素。np.dot(a, b)
计算内积或矩阵乘积。np.vdot(a, b)
计算向量点积。np.inner(a, b)
计算向量内积。np.matmul(a, b)
计算矩阵乘积。np.linalg.det(a)
计算矩阵行列式。np.linalg.solve(a)
求解线性方程组。np.linalg.inv(a)
计算矩阵逆。np.save(file, arr, allow_pickle=True, fix_imports=True)
将数组保存为.npy文件。b = np.load('outfile.npy')
读取.npy文件。np.savez(file, *args, **kwds)
将多个数组保存为.npz文件。np.loadtxt(FILENAME, dtype=int, delimiter=' ')
读取文本文件。np.savetxt(FILENAME, a, fmt="%d", delimiter=",")
将数组保存为文本文件。np.matlib.empty(shape, dtype, order)
创建空矩阵。np.matlib.zeros((行数,列数))
创建全零矩阵。np.matlib.ones((行数,列数))
创建全一矩阵。np.matlib.eye(n, M, k, dtype)
创建单位矩阵。np.matlib.rand((行数,列数))
创建随机填充矩阵。import matplotlib
from matplotlib import pyplot as plt
plt.title('Matplotlib demo')
设置图像标题。plt.xlabel('x axis caption', fontproperties=zhfont1)
设置x轴标签。plt.ylabel('y axis caption', fontproperties=zhfont1)
设置y轴标签。plt.plot(x, y, 'ob')
绘制图像,使用蓝色圆圈标记。plt.show()
显示图像。plt.subplot(2, 1, 1)
创建子图表格。plt.plot(x, y_sin)
绘制第一个子图。plt.subplot(2, 1, 2)
创建第二个子图表格。plt.plot(x, y_cos)
绘制第二个子图。plt.show()
显示所有子图。##柱形图
plt.bar(x, y, align='center')
plt.bar(x2, y2, color='g', align='center')
plt.title('Bar graph')
plt.ylabel('Y axis')
plt.xlabel('X axis')
plt.show()
##图像显示
plt.imshow(img)
显示二维数组图像。plt.show()
显示图像。Scipy库提供了丰富的科学计算工具,包括:
scipy.cluster
: 矢量量化和K-均值聚类。scipy.constants
: 物理和数学常数。scipy.fftpack
: 傅里叶变换。scipy.integrate
: 积分程序。scipy.interpolate
: 插值。scipy.io
: 数据输入输出。scipy.linalg
: 线性代数程序。scipy.ndimage
: n维图像处理。scipy.odr
: 正交距离回归。scipy.optimize
: 优化算法。scipy.signal
: 信号处理。scipy.sparse
: 稀疏矩阵。scipy.spatial
: 空间数据结构和算法。scipy.special
: 特殊数学函数。scipy.stats
: 统计工具。linalg.det(a)
计算矩阵行列式。linalg.inv(a)
计算矩阵逆。fftpack.fftfreq(sig.size, d=time_step)
计算采样频率。fftpack.fft(sig)
计算快速傅里叶变换。stats.norm.fit(a)
计算均值和标准差。integrate.quad(fun, a, b)
对函数在区间[a, b]上进行积分。optimize.minimize(func, x0, method='Nelder-Mead')
求标量函数最小值。linalg.eig(a)
计算矩阵特征向量。linalg.svd(a)
对矩阵进行奇异值分解。linalg.qr(a)
对矩阵进行QR分解。linalg.solve(a, b)
求解线性方程组ax = b。stats.norm.ppf(q, loc=0, scale=1)
计算正态分布的分位数。stats.t.ppf(q, dof=6)
计算t分布的分位数。转载地址:http://jhbwz.baihongyu.com/