[英]Generate random points on 10-dimensional unit sphere
我需要生成一个在单位球体上具有 10 个方向(10 个随机数的集合)均匀采样的向量。 因此,这 10 个值的平方和应该是 1。
这是我需要生成这些点的确切问题:
实现感知器算法并在 ℝ 10 中的以下合成数据集上运行它:pick 𝑤∗ = [1,0,0,…,0]; 通过在单位球体上随机均匀采样,然后删除那些边距 𝛾 小于 0.1 的点,生成 1000 个点 𝑥; 生成标签 𝑦 = sign((𝑤∗) T 𝑥)。
正如@Andrex 所建议的,这是正确的解决方案:
import numpy as np
import math
s = np.random.normal(0, 1, 10)
norm=math.sqrt(sum(s*s))
result=s/norm
result
就是答案。 您可以评估结果:
sum([x*x for x in result])
1.0
有一个数学定理说,如果X = (X1,...,XN)
是一个向量, Xi
是标准正态分布,那么X/NORM(X)
在单位球面上是均匀的,其中NORM
是欧几里得范数。 所以你必须从标准正态分布中采样 10 个点(使用 numpy?),然后对结果进行归一化。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.