东莞网站建设在哪里,网站的构造,比分网站仿站建设,wordpress生产app中文要点
Python向量数值计算、可视化#xff0c;线性独立性和子空间。了解欧几里德距离、余弦相似度和皮尔逊相关性应用案例#xff1a;Python数值计算文档相似度时间序列和特征检测示例#xff1a;Python信号处理边缘检测器, K均值示例#xff1a;随机簇质心分布Python傅里叶…要点
Python向量数值计算、可视化线性独立性和子空间。了解欧几里德距离、余弦相似度和皮尔逊相关性应用案例Python数值计算文档相似度时间序列和特征检测示例Python信号处理边缘检测器, K均值示例随机簇质心分布Python傅里叶分析应用示例心电图频谱消除音频噪音Python数值计算和可视化矩阵几何变换及示例图像特征检测Python计算矩阵逆计算正交矩阵和 QR 分解行缩减LU 分解和最小二乘法示例QR与格拉姆-施密特过程和主成分分析多变量分析和协同过滤领域最小二乘法根据天气预测自行车租赁最小二乘法多项式回归最小二乘法 ,网格搜索查找模型参数最小二乘法
线性代数
以下是线性代数 4 个核心概念的细分、它们的重要性、上下文解释和 Python 代码片段
向量和矩阵运算
向量和矩阵是处理数据和参数的基础。运算加法、乘法、转置使算法计算能够以矢量化高效的方式进行。
向量可以存储数据或参数的一维数组。矩阵用于存储数据集或转换数据的二维数组。
import numpy as npvector np.array([2, 3])
matrix np.array([[1, 2], [3, 4]])sum_vector_matrix vector matrix[0] # Addition
print(sum_vector_matrix)
product np.dot(matrix, vector) # Multiplication
print(product: ,product)transpose matrix.T # Transpose
print(transpose)输出
[3 5]
product: [ 8 18]
[[1 3][2 4]]特征值和特征向量
特征值和特征向量有助于深度学习模型中的降维、主成分分析和系统稳定性分析。
特征向量是非零向量在应用线性变换时仅按标量因子变化。标量是特征值。
import numpy as np
import matplotlib.pyplot as pltA np.array([[4, 2], [1, 3]])eigenvalues, eigenvectors np.linalg.eig(A)print(fEigenvalues: {eigenvalues})
print(fEigenvectors: {eigenvectors})origin [0], [0]plt.quiver(*origin, eigenvectors[0,0], eigenvectors[1,0], color[r], scale3, scale_unitsxy, anglesxy)
plt.quiver(*origin, eigenvectors[0,1], eigenvectors[1,1], color[b], scale3, scale_unitsxy, anglesxy)plt.xlim(-3, 3)
plt.ylim(-3, 3)
plt.title(Eigenvectors of A)
plt.xlabel(X-axis)
plt.ylabel(Y-axis)
plt.grid()
plt.axhline(y0, colork)
plt.axvline(x0, colork)
plt.show()输出:[^f1]
Eigenvalues: [5. 2.]
Eigenvectors: [[ 0.89442719 -0.70710678][ 0.4472136 0.70710678]]线性变换
线性变换缩放、旋转对于机器学习中的数据增强、标准化和数据转换至关重要。
线性变换改变数据的空间和形状同时保留网格线的直线度和平行度。
import numpy as np
import matplotlib.pyplot as pltmatrix np.array([[2, 3], [3, 4]])scaling_matrix np.array([[2, 0], [0, 2]])transformed_matrix np.dot(matrix, scaling_matrix)plt.scatter(matrix[:,0], matrix[:,1], colorblue, labelOriginal)
plt.scatter(transformed_matrix[:,0], transformed_matrix[:,1], colorred, labelTransformed)plt.xlabel(X-axis)
plt.ylabel(Y-axis)
plt.title(Linear Transformation: Scaling)
plt.grid(True)
plt.legend()
plt.axis(equal)
plt.show()输出
求解线性系统
求解线性系统有助于找到权重、优化算法以及在机器学习模型中进行预测。
给定 A x B Ax B AxB其中 A A A 是矩阵 B B B 是向量找到满足方程的向量 x x x。
例如 2 x 3 y 1 4 x − 5 y 2 \begin{aligned} 2 x3 y1 \\ 4 x-5 y2 \end{aligned} 2x3y14x−5y2
import numpy as npA np.array([[2, 3], [4, -5]])
B np.array([1, 2])x np.linalg.solve(A, B)print(fSolution: x {x[0]:.2f}, y {x[1]:.2f})输出
Solution: x 0.50, y 0.00傅里叶分析
傅里叶分析是研究如何将一般函数分解为具有确定频率的三角函数或指数函数。 傅里叶展开有两种类型
傅立叶级数如果一个表现相当良好的函数是周期性的那么它可以写成具有特定频率的三角函数或指数函数的离散和。傅里叶变换不一定是周期性的但仍然表现得相当良好的一般函数可以写成三角函数或指数函数的连续积分具有可能频率的连续体
傅立叶分析在物理学中如此重要的原因是控制物理系统的许多尽管肯定不是全部微分方程都是线性的这意味着两个解的和又是一个解。 因此由于傅立叶分析告诉我们任何函数都可以写成正弦函数因此我们在求解微分方程时可以将注意力限制在这些函数上。 然后我们可以从这些特殊的函数中构建任何其他函数。 这是一个非常有用的策略因为处理正弦函数总是比处理一般函数更容易。
Python傅里叶变换示例
[^f2]傅立叶变换 (FT) 将信号的时域与其频域相关联其中频域包含有关构成信号的正弦曲线幅度、频率、相位的信息。 由于FT是连续变换离散傅立叶变换DFT成为数字世界中适用的变换它将离散格式的信号信息保存为一组样本其中采样定理是离散化的严格规则 信号。 具有 N 个样本的信号 (xn) 的 DFT 由以下等式给出 X k ∑ n 0 N − 1 x n ⋅ e − i 2 π k n / N ∑ n 0 N − 1 x n ⋅ [ cos ( 2 π k n / N ) − i sin ( 2 π k n / N ) ] X_k\sum_{n0}^{N-1} x_n \cdot \mathrm{e}^{-\mathrm{i} 2 \pi k n / \mathrm{N}}\sum_{n0}^{N-1} x_n \cdot[\cos (2 \pi k n / N)-i \sin (2 \pi k n / N)] Xkn0∑N−1xn⋅e−i2πkn/Nn0∑N−1xn⋅[cos(2πkn/N)−isin(2πkn/N)] 其中 N \mathrm{N} N : 样本数量 n \mathrm{n} n : 当前样本 k \mathrm{k} k : 当前频率 k ∈ [ 0 , N − 1 ] \mathrm{k} \in[0, \mathrm{~ N}-1] k∈[0, N−1] x n x_n xn样本 n \mathrm{n} n 处的正弦值 X k X_k Xk包含幅度和相位信息的 DFT
DFT ( X k X_k Xk) 的输出是一个复数数组其中包含频率分量的信息。 使用数学方程对信号应用 DFT 直接需要大量的计算复杂性。 幸运的是快速傅立叶变换 (FFT) 的开发可以提供更快的 DFT 实现。 FFT 利用了 DFT 输出的对称性。
我们将开始简单地了解本文中使用的每种方法的输入和输出。 首先我们将导入所需的包。 Numpy 用于处理矩阵和计算。 我们从 scipy.fft 模块fft、rfft、fftfreq、rfftfreq导入有助于我们进行傅立叶分析相关计算的方法。 最后Plotly 和 matplotlib 用于可视化。
import numpy as np
from scipy.fft import fft, rfft
from scipy.fft import fftfreq, rfftfreq
import plotly.graph_objs as go
from plotly.subplots import make_subplots
import matplotlib.pyplot as plt
%matplotlib inline我们需要信号来尝试我们的代码。 正弦曲线很棒并且适合我们的示例。 在接下来的代码中我们使用名为 Signal 的类生成正弦信号您可以按照此要点找到该类以便随时使用。 我们将使用前一类生成的信号包含三个正弦曲线 (1, 10, 20) Hz幅度分别为 (3, 1, 0.5)。 采样率为 200信号持续时间为 2 秒。
# Generate the three signals using Signal class and its method sine()
signal_1hz Signal(amplitude3, frequency1, sampling_rate200, duration2)
sine_1hz signal_1hz.sine()
signal_20hz Signal(amplitude1, frequency20, sampling_rate200, duration2)
sine_20hz signal_20hz.sine()
signal_10hz Signal(amplitude0.5, frequency10, sampling_rate200, duration2)
sine_10hz signal_10hz.sine()# Sum the three signals to output the signal we want to analyze
signal sine_1hz sine_20hz sine_10hz# Plot the signal
plt.plot(signal_1hz.time_axis, signal, b)
plt.xlabel(Time [sec])
plt.ylabel(Amplitude)
plt.title(Sum of three signals)
plt.show()可以使用 scipy 包中的 (fft) 计算该信号的傅立叶变换如下所示
# Apply the FFT on the signal
fourier fft(signal)# Plot the result (the spectrum |Xk|)
plt.plot(np.abs(fourier))
plt.show()现在我们已经了解了傅立叶分析中使用的每种方法的输入和输出让我们开始编写最终代码。 我们将建立一个类Fourier让我们对傅里叶变换的使用更加方便、更好用。
现实应用心电图频谱、消除音频噪音
动态系统模拟分析
参阅一计算思维
参阅二亚图跨际