从 R/MatLab 中的点创建一个随机圆
Creating a randomized circle from points in R/MatLab
我正在和我大学的一位教授一起做一些研究,他要求我创建一些数据用于拓扑数据分析 (TDA)。
我使用了 R 和 MatLab 的两个包,但是作者似乎对如何在执行与 Betti 点的持久性相关的操作时随机化数据有类似的想法。
R(和 MatLab)中的问题是圆是用以下方法创建的:
X <- circleUnif(n=30)
这将生成一个圆,该圆具有均匀分布的点 (30),围绕中心点的半径相等。为了随机化数据,包作者的两个示例都从数据中随机抽样。这导致图像看起来像这样:
Alpha Complex
教授要求的是我做的每个点都有一些'sigma'或偏离半径。这实际上会创建一个具有一定厚度的 'fuzzy' 环。这样,当对数据执行持久化时,birth/death 轴会有更有趣的输出。
此视频中的 2:30 是我想做的事情的想法:
Persistent homology
如果有人知道如何在 Python 中做到这一点,我也愿意尝试其他语言。
只要您安装了 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 在拓扑数据分析方面不如 R 成熟。使用 python 中可用的数据科学工具没有任何问题,如果您愿意,可以使用 python 生成数据以在 R 中使用。但这是 python 确实缺乏用于数据科学任务的高质量、稳定工具的少数情况之一。我最终可能会做出一些,或者其他人可能会做出一些,但是对于大多数 TDA 算法,您现在没有太多选择。
我正在和我大学的一位教授一起做一些研究,他要求我创建一些数据用于拓扑数据分析 (TDA)。
我使用了 R 和 MatLab 的两个包,但是作者似乎对如何在执行与 Betti 点的持久性相关的操作时随机化数据有类似的想法。
R(和 MatLab)中的问题是圆是用以下方法创建的:
X <- circleUnif(n=30)
这将生成一个圆,该圆具有均匀分布的点 (30),围绕中心点的半径相等。为了随机化数据,包作者的两个示例都从数据中随机抽样。这导致图像看起来像这样: Alpha Complex 教授要求的是我做的每个点都有一些'sigma'或偏离半径。这实际上会创建一个具有一定厚度的 'fuzzy' 环。这样,当对数据执行持久化时,birth/death 轴会有更有趣的输出。
此视频中的 2:30 是我想做的事情的想法: Persistent homology
如果有人知道如何在 Python 中做到这一点,我也愿意尝试其他语言。
只要您安装了 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 在拓扑数据分析方面不如 R 成熟。使用 python 中可用的数据科学工具没有任何问题,如果您愿意,可以使用 python 生成数据以在 R 中使用。但这是 python 确实缺乏用于数据科学任务的高质量、稳定工具的少数情况之一。我最终可能会做出一些,或者其他人可能会做出一些,但是对于大多数 TDA 算法,您现在没有太多选择。