Я не могу помочь с питоном, но вот математическое решение, если оно помогает.Мы стремимся свести к минимуму
E = Sum { Tr (Y[j]-A*X[j])*(Y[j]-A*X[j])'}
Некоторые алгебры дают
E = Tr(P-A*Q'-Q*A'+A*R*A')
where
P = Sum{ Y[j]*Y[j]'}
Q = Sum{ Y[j]*X[j]'}
R = Sum{ X[j]*X[j]'}
Если R обратимо, чуть больше алгебры дает
E = Tr( (A-Q*S)*R*(A-Q*S)') + Tr( P - Q*S*Q')
where S = inv( R)
С
(A-Q*S)*R*(A-Q*S)' is positive definite,
мы минимизируем E, взяв A = Q * S.
В этом случае алгоритм будет выглядеть так:
compute Q
compute R
solve A*R = Q for A (eg by finding the cholesky factors of R)
Если R не обратимо, мы должны использовать обобщенное обратное выражение дляS вместо простого обратного.