Генерация случайных точек на 10-мерной единичной сфере - PullRequest
1 голос
/ 28 января 2020

Мне нужно сгенерировать вектор, выбранный равномерно с 10 направлениями (набор из 10 случайных чисел), который лежит над единичной сферой. Итак, сумма квадратов из 10 значений должна быть равна 1.

Это точный вопрос, для которого мне нужно сгенерировать эти точки:

Реализуйте алгоритм Perceptron и запустите это на следующих синтетических c наборах данных в 100 10 : pick ? ∗ = [1,0,0,…, 0]; генерировать 1000 точек ? путем равномерной случайной выборки по единичной сфере и затем удалять те, которые имеют запас ? меньше 0,1; сгенерировать метку sign = знак ((? ∗) T ?).

Ответы [ 2 ]

3 голосов
/ 28 января 2020

Существует математическая теорема , в которой говорится, что если X = (X1,...,XN) - это вектор с Xi стандартным нормальным распределением, то X/NORM(X) равномерно в единичной сфере, где NORM - евклидово норма. Таким образом, вы должны выбрать 10 точек из стандартного нормального распределения (используя numpy?) И затем нормализовать результат.

2 голосов
/ 28 января 2020

Как подсказал @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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...