# Python(C++)植入团图嵌入降维算法

{% embed url="https://viadean.notion.site/Python-C-ad843c96c51646a4a48aea58b438712f" %}

{% content-ref url="../zhi-dian-mi-jin-brief" %}
[zhi-dian-mi-jin-brief](../zhi-dian-mi-jin-brief)
{% endcontent-ref %}

### 🎯要点

🎯图嵌入算法使用欧几里得和双曲嵌入 | 🎯对矢量空间网络节点迭代嵌入和加权 | 🎯对比嵌入算法：拉普拉斯特征映射、指数最短路径长度到双曲度量的变换 、等距映射和生成图上向量表示算法 | 🎯网络节点角度关系余弦距离和余弦接近度计算方式 | 🎯植入分区生成合成图，基准测试生成合成图

### 📜图节点和边算法用例

📜[Python鲁汶意外莱顿复杂图拓扑分解算法](python-lu-wen-yi-wai-lai-dun-fu-za-tu-tuo-pu-fen-jie-suan-fa)

📜[Python(C++)大尺度分层边值时变图统计推理并行算法](pythonc++-da-chi-du-fen-ceng-bian-zhi-shi-bian-tu-tong-ji-tui-li-bing-xing-suan-fa)

📜[Python层内层外多图布局图基分析](python-ceng-nei-ceng-wai-duo-tu-bu-ju-tu-ji-fen-xi)

📜[Python群体趋向性潜关联有向无向多图层算法](python-qun-ti-qu-xiang-xing-qian-guan-lian-you-xiang-wu-xiang-duo-tu-ceng-suan-fa)

📜[Python和MATLAB网络尺度结构和幂律度大型图生成式模型算法](python-he-matlab-wang-luo-chi-du-jie-gou-he-mildu-da-xing-tu-sheng-cheng-shi-mo-xing-suan-fa)

📜[Python竞技比赛流体动力学艺术品和药物质量图学习](python-jing-ji-bi-sai-liu-ti-dong-li-xue-yi-shu-pin-he-yao-wu-zhi-liang-tu-xue-xi)

📜[Python元胞自动机沙堆糖景堵塞模型图学习](python-yuan-bao-zi-dong-ji-sha-dui-tang-jing-du-se-mo-xing-tu-xue-xi)

### 🍪语言内容分比

{% @mermaid/diagram content="pie title 语言分比
 "Python":90
 "C++":80" %}

{% @mermaid/diagram content="pie title 内容分比
"数学":40
"算法":50
"图论":30
"图嵌入学习":50
"合成图":10
"基准测试":10" %}

### 🍇Python等距映射降维算法

等距映射是一种突破线性方法局限性的降维算法。其主要目标是将高维数据中的复杂模式展开到低维空间，同时精心保留数据点之间的基本关系。与假设变量之间存在线性关系的主成分分析等线性方法不同，此算法擅长捕捉底层非线性结构，使其成为各种应用的首选。

算法的核心是一系列步骤，这些步骤共同形成了它揭示复杂数据集内在几何形状的独特能力。该算法首先构建一个邻域图，其中节点代表数据点，边连接彼此距离在一定范围内的节点。邻域图是一种节点代表数据点、边连接彼此距离在一定范围内的节点的图。这个邻域图是算法后续计算的基础结构。为了构建邻域图，我们首先计算所有数据点对之间的欧几里得距离。然后，我们为每个数据点选择 k 个最近邻居，并在图中创建连接这些邻居的边。k 的值是算法的一个参数，可以根据数据进行调整。

所有数据点对之间的欧氏距离：

$$
d_{i j}=\left\|x_i-x_j\right\|^2
$$

其中，$$d_{i j}$$ 是数据点之间的欧几里得距离，$$\left\|x_i-x_j\right\|^2$$ 是向量 $$x_i, x_j$$ 的欧几里得范数。

> 邻域图
>
> 在图论中，图中顶点v的相邻顶点是通过边连接到v的顶点。图G中顶点v的邻域是由与v相邻的所有顶点导出的G的子图，即由与v相邻的顶点和连接相邻顶点的所有边组成的图到v。
>
> 示图：
>
> 在该图中，与 5 相邻的顶点是 1、2 和 4。5 的邻域是由顶点 1、2、4 以及连接 1 和 2 的边组成的图。

{% @mermaid/diagram content="flowchart LR
A((6))---B((4))---C((5)) & D((3))
C---E((1)) & F((2))
D---F---E" %}

然后，算法深入研究了测地线距离领域，这一概念对于理解非线性流形的真实结构至关重要。邻域图中两点之间的测地线距离定义为沿图边缘的最短路径，用于测量流形曲面上的距离。与代表直线测量的欧几里得距离不同，测地线距离对底层结构很敏感，可以捕捉数据的真实复杂性。为了通过计算邻域图边缘两点之间的最短路径来近似测地线距离，可以使用多种算法。

算法的最后一步是应用多维缩放，这是一种降维技术，旨在找到数据的低维表示，以保留数据点之间的成对距离。一旦计算出测地线距离，算法就会将数据嵌入到低维空间中。此嵌入使用称为谱嵌入的技术执行。谱嵌入是一种降维技术，其工作原理是查找图拉普拉斯的主成分。图拉普拉斯是一个表示邻域图连通性的矩阵。算法的神奇之处在于应用谱嵌入。图拉普拉斯是一个表示邻域图连通性的矩阵，它封装了数据点之间的关系和接近度。通过揭示主成分，算法成功地将数据嵌入到低维空间中，同时精心保留了必要的几何关系。

降维算法识别手写数字

```python
 import numpy as np
 import matplotlib.pyplot as plt
 from sklearn.datasets import load_digits
 from sklearn.manifold import Isomap
 from sklearn.preprocessing import StandardScaler
 from sklearn.pipeline import Pipeline
```

```python
 digits = load_digits()
 X, y = digits.data, digits.target
 scaler = StandardScaler()
 X_standardized = scaler.fit_transform(X)
```

以下代码创建一个具有 30 个邻居和 2 个输出维度的算法模型，然后将该模型拟合到标准化输入数据并将其转换到低维空间。

```python
 isomap = Isomap(n_neighbors=30, n_components=2)
 X_transformed = isomap.fit_transform(X_standardized)
```

以下代码创建数据点的散点图，可视化 MNIST 数据集中手写数字的二维表示，每个数字类别用不同的颜色表示。该图包含一个供参考的颜色条。

```python
 plt.figure(figsize=(10, 8))
 scatter = plt.scatter(X_transformed[:, 0], X_transformed[:, 1], c=y, cmap='viridis', edgecolors='k', s=20)
 plt.title('2D Representation of Handwritten Digits (MNIST)')
 plt.xlabel('Component 1')
 plt.ylabel('Component 2')
 plt.colorbar(scatter, ticks=np.arange(10), label='Digit Class')
 ​
 plt.show()
```

这里，每个数字类别都用不同的颜色表示，从而显示出与不同数字相对应的不同聚类。此可视化展示了 算法在降低数据维度的同时保留数据底层结构的有效性。
