数据简化拓扑抽象降维
pystad的Python项目详细描述
皮斯塔德
这是STAD的python实现,用于探索和可视化高维数据。此实现基于R version。在
背景
STAD是一种降维算法,它通过给每个数据点一个保持原始高维空间距离的位置来生成高维数据的抽象表示。STAD图建立在最小生成树(MST)上,在该树上添加新的边,直到图与原始数据集之间的相关性最大化。此外,STAD支持包含过滤函数来从新的角度分析数据,强调数据中那些本来会隐藏的特征。在
拓扑数据分析
拓扑数据分析(TDA)旨在描述数据中存在的几何结构。数据集被解释为一个点云,其中每个点都是从底层几何对象中采样的。TDA试图用不变的特征来恢复和描述对象的几何结构。两个几何体可以相互变形而不撕裂或粘合,它们是同胚(例如甜甜圈和咖啡杯)。通常,TDA描述了几何体中的holes,形式化为Betti numbers。在
与其他TDA算法一样,STAD构造了一个描述数据结构的图。然而,STAD的输出应该被解释为数据可视化的结果,而不是数据结构的拓扑描述。其他TDA算法,如mapper,确实会产生拓扑结果。然而,它们依赖于聚集数据,而STAD将原始数据点编码为图中的顶点。在
降维
与t-SNE和UMAP等降维算法相比,STAD产生了更灵活的数据描述。图形可以用不同的布局绘制,用户可以与之交互。此外,STAD的预测保留了数据的全局结构。一般来说,STAD图往往低估网络结构中的远程数据点。另一方面,t-SNE和UMAP更强调数据点与其最近邻居的关系,而不是与远程数据点的关系。在
安装
pySTAD可以安装在:
pip install pystad
将安装以下依赖项:
- numpy公司
- 神经质的
- Python图
- 熊猫
示例笔记本具有其他依赖项:
- matplotlib库
- 网络X
- scikit学习
- 朱庇特实验室
- ipywidgets公司
这些可以与pip或conda一起安装。在jupyter实验室中启用ipyWidget还需要两个步骤:
- 首先,使用conda安装nodejs:
- 然后安装jupyter实验室扩展:
jupyter labextension install @jupyter-widgets/jupyterlab-manager
示例
有关STAD和交互式探索仪表板的演示,请参阅示例笔记本。下面的代码提供了快速入门:
importstadimportpandasaspdimportnumpyasnpimportmatplotlib.pyplotaspltfromscipy.sparseimporttriufromsklearn.metrics.pairwiseimporteuclidean_distances# Circles datasetdata=pd.read_csv('./examples/data/horse.csv',header=0)data=vertex_data.sample(n=500)dist=triu(euclidean_distances(data),k=1)plt.scatter(data.z,data.y,s=5,c=data.x)plt.show()## STAD without lensnetwork_no_lens,detail=stad.stad(dist)stad.draw_network_matplotlib(network_no_lens,detail))plt.show()stad.draw_correlations_matplotlib(detail)plt.show()## STAD with lensnetwork_lens,detail=stad.stad(dist,lens_values=data['x'],lens_bins=3)stad.draw_network_matplotlib(network_lens,detail)plt.show()stad.draw_correlations_matplotlib(detail)plt.show()
与R实施相比
R implementation支持二维滤波器(透镜),并使用模拟退火优化输出图。这个实现目前只支持1D镜头。此外,除了模拟退火,这个实现还支持线性和逻辑扫描。在
- 项目
标签: