Я изменил код алгоритма обучения метрики LMNN (Largest Margin Nearest Neighbor) Matlab на java и использовал библиотеку Jama. Я получил другой результат. Разница возникла, я думаю, из-за разложения собственного значения (собственное значение и собственный вектор) в Matlab и Jama. Не могли бы вы прокомментировать меня, если вы столкнулись с такой проблемой раньше. Кроме того, при таких условиях необходимо получить аналогичный результат.
В Матлабе:
[V, L] = eig(M);
Java (IdeM - матрица PSD)
Matrix V = ideM.eig().getV();
Matrix L = ideM.eig().getD();
Результаты
Пример результатов:
A = [2 4 2; 6 8 1; 5 7 5]
Матлаб результат:
>> [V,L] = eig(A)
V =
-0.3486 -0.82756 0.19221
-0.57978 0.56013 -0.40315
-0.73643 0.037403 0.89472
L =
12.878 0 0
0 -0.7978 0
0 0 2.92
Java с использованием библиотеки Jama:
[[0.8275575078346545, -0.3493113857121139, 0.24597790205308678],
[-0.5601335729999509, -0.5809634522691761, -0.5159207870175849],
[-0.037402561741212, -0.7379374514853343, 1.144995023469712]]
[[-0.7977988158677061,0.0, 0.0],
[0.0, 12.877769427129202, 0.0],
[0.0, 0.0,2.9200293887385067]]
ideM
в коде Java? - person Andrew Janke   schedule 28.03.2014