gpt4 book ai didi

Java MDSJ 产生 NaN

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:20:00 27 4
gpt4 key购买 nike

任何人都对 MDSJ 有任何经验?以下输入仅产生 NaN 结果,我不明白为什么。文档非常稀少。

import mdsj.Data;
import mdsj.MDSJ;

public class MDSJDemo {
public static void main(String[] args) {
double[][] input = {
{78.0, 60.0, 30.0, 25.0, 24.0, 7.125, 1600.0, 1.4953271028037383, 15.0, 60.0, 0.0, 0.0, 50.0},
{63.1578947368421, 51.81818181818182, 33.0, 30.0, 10.714285714285715, 6.402877697841727, 794.2857142857143, 0.823045267489712, 15.0, 20.0, 2.8571428571428568, 0.0, 75.0},
{55.714285714285715, 70.0, 16.363636363636363, 27.5, 6.666666666666666, 5.742574257425742, 577.1428571428571, 0.6542056074766355, 12.857142857142856, 10.0, 17.142857142857142, 0.0, 25.0}
};

int n=input[0].length; // number of data objects
double[][] output=MDSJ.classicalScaling(input); // apply MDS
System.out.println(Data.format(output));
for(int i=0; i<n; i++) { // output all coordinates
System.out.println(output[0][i]+" "+output[1][i]);
}
}
}

这是输出:

NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN

NaN NaN
NaN NaN
NaN NaN
NaN NaN
NaN NaN
NaN NaN
NaN NaN
NaN NaN
NaN NaN
NaN NaN
NaN NaN
NaN NaN
NaN NaN

也许我没有正确使用 MDS。 input 中每个长度为 13 的子数组旨在表示一个对象,但 MDSJ 返回 13 个点。

此输入也失败:

    double[][] input = {
{3, 4, 3},
{5, 6, 1},
{0, 1, 2}
};

编辑: 看来我用错了。我一直在给它这样的输入:

Object A: {30d, 1d, 0d, 4.32, 234.1}
Object B: {45d, 3.21, 45, 91.2, 9.9}
Object C: {7.7, 93.1, 401, 0d, 0d}

但它真正想要的是这样一个距离矩阵:

     A     B     C
A 0 3 1
B 3 0 5
C 1 5 0

但不完全是,因为对于此输入:

    double[][] input = {
{0, 3, 1},
{3, 0, 5},
{1, 5, 0}
};

我得到这个结果:

0.8713351726043931 -2.361724203891451 2.645016918006963 
NaN NaN NaN

0.8713351726043931 NaN
-2.361724203891451 NaN
2.645016918006963 NaN

但是如果它确实需要一个距离数组,那么首先使用 MDS 有什么意义呢?我认为应该将属性数组归结为坐标。

最佳答案

多维缩放将距离转化为坐标 - 如果您已经在高维空间中拥有坐标并希望它们以最佳方式嵌入到低维空间中,主成分分析 (PCA) 可能是您正在寻找的技术。

经典的MDS和PCA密切相关:首先,MDS将输入的距离转化为初步的高维坐标(维数与描述的对象个数一样高);其次,通过去除最不重要的轴,以类似于 PCA 的步骤降低这些坐标的维数。

使用 MDS 的要点是,在某些设置中,输入距离不是来自现有坐标,而是来自其他非几何的东西,例如,人们所做的差异评级。

您的 3x3 相异矩阵不服从度量空间中所需的三角不等式(因为 d[1][0]+d[0][2]

关于Java MDSJ 产生 NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1857338/

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