Я хочу создать функцию, которая вычисляет и возвращает проекцию вектора x на вектор b, а также ошибку восстановления.
Мой код следующий:
def reconstruction_error(x, b):
'''The function calculates the projection and reconstruction error
from projecting a vector x onto a vector b'''
b = np.matrix(b)
x_projection_on_b = (b.T @ b/ float((b@b.T))) @ x
reconstruction_error = (x - x_projection_on_b) @ (x - x_projection_on_b).T
return( x_projection_on_b, float(reconstruction_error))
Однако ошибка восстановления неверна.Например,
x = np.array([1,1,1])
b = np.array([5, 10, 10])
a, error = reconstruction_error(x, b)
a
matrix([[0.55555556, 1.11111111, 1.11111111]])
error
0.2222222222222222