Мне нужно сгенерировать вектор, выбранный равномерно с 10 направлениями (набор из 10 случайных чисел), который лежит над единичной сферой. Итак, сумма квадратов из 10 значений должна быть равна 1.
Это точный вопрос, для которого мне нужно сгенерировать эти точки:
Реализуйте алгоритм Perceptron и запустите это на следующих синтетических c наборах данных в 100 10 : pick ? ∗ = [1,0,0,…, 0]; генерировать 1000 точек ? путем равномерной случайной выборки по единичной сфере и затем удалять те, которые имеют запас ? меньше 0,1; сгенерировать метку sign = знак ((? ∗) T ?).
Существует математическая теорема , в которой говорится, что если X = (X1,...,XN) - это вектор с Xi стандартным нормальным распределением, то X/NORM(X) равномерно в единичной сфере, где NORM - евклидово норма. Таким образом, вы должны выбрать 10 точек из стандартного нормального распределения (используя numpy?) И затем нормализовать результат.
X = (X1,...,XN)
Xi
X/NORM(X)
NORM
Как подсказал @Andrex, вот правильное решение:
import numpy as np import math s = np.random.normal(0, 1, 10) norm=math.sqrt(sum(s*s)) result=s/norm
, где result - ответ. Вы можете оценить результат:
result
sum([x*x for x in result]) 1.0