gpt4 book ai didi

java - Jama 和 Matlab LMNN 和特征值

转载 作者:行者123 更新时间:2023-12-02 01:13:34 24 4
gpt4 key购买 nike

我将LMNN(最大间隔最近邻)度量学习算法matlab代码更改为java,并使用Jama library 。我得到了不同的结果,出现这种差异,我认为是因为Matlab和Jama中的特征值分解(特征值和特征向量)。如果您以前遇到过这样的问题,请评论我。另外,在这样的条件下是否一定能得到类似的结果?

在 Matlab 中:

[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] 

Matlab结果:

>> [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

使用 Jama 库的 Java:

[[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]]

最佳答案

好吧,由于某种原因,Jama 不正确(列的范数不是 1)。符号的重新排序和更改是正常的(您只是获得映射到特征值 * 本身的正交 vector )。您可以尝试标准化列或使用 jlapack。

关于java - Jama 和 Matlab LMNN 和特征值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22672172/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com