我正在和我大学的一位教授做一些研究,他要求我为拓扑数据分析(TDA)创建一些数据。
我使用了R和MatLab的两个软件包,但作者似乎对执行与Betti点持久性相关的操作时如何随机化数据有类似的想法。
R(和MatLab)中的问题是圆圈是用:
创建的select * from table where partitionId = 'test
这产生了一个圆,其具有均匀间隔的点(30),在中心点周围具有相等的半径。为了使数据随机化,来自包的作者的两个示例随机地从数据中采样。这会导致图像看起来像这样: Alpha Complex 教授问的是,我认为每个点都有一些“西格玛”。或偏离半径。这本质上会创造一个模糊的“模糊”。有一定厚度的戒指。这样,当对数据执行持久性时,出生/死亡轴将具有更有趣的输出。
在这段视频中大约2:30,我想知道我要做什么: Persistent homology
如果有人知道如何在Python中执行此操作,我也愿意尝试使用其他语言。
答案 0 :(得分:1)
只要您安装了numpy,就可以正常使用以下内容(如果不安装,请在命令行中使用pip install numpy
)。
import numpy as np
def circleUnif(n=30, radius=1, sigma=0, center=(0, 0)):
radii = np.random.randn(n) * sigma + radius
angles = np.random.rand(n) * np.pi * 2
x = radii * np.cos(angles)
y = radii * np.sin(angles)
return np.transpose([x, y]) + center
作为示例用法:
>>> X = circleUnif(3, 1, 0, (2, 3))
>>> print X
[[1.29321773 3.70743115]
[2.72817308 3.68539329]
[2.35728855 2.06600595]]
根据我的经验,python与拓扑数据分析的成熟度不同。使用python中提供的数据科学工具没有任何问题,如果您愿意,可以使用python生成数据以在R中使用。但这是python真正缺乏数据科学任务的质量,稳定工具的少数几个例子之一。我最终可能会做一些,或者其他人可能,但是现在大多数TDA算法都没有很多选择。