java - 点与平均 vector 之间的马哈拉诺比斯距离始终相同

标签 java data-mining mahout data-cleaning mahalanobis

我最近正在尝试执行一些数据清理算法。当我尝试计算数据集中的点与平均 vector 之间的马哈拉诺比斯距离时,它似乎是相同的。

例如,我有一个数据集,例如:

{{2,2,3},{4,5,9},{7,8,9}}

平均 vector 是:

{13/3,5,7}

协方差矩阵为:

{{6.333333333333333,7.5,7.0},{7.5,9.0,9.0},{7.0,9.0,12.0}}

那么{2,2,3}、{4,5,9}、{7,8,9}与均值 vector 之间的距离都是8290542,这很奇怪。纸上算了一下,结果是一样的。

有人知道我的代码或想法有什么问题吗?如果有人能帮助我,我将非常感激。以下是我在处理这个问题时使用的一些代码。

import org.apache.commons.math3.linear.RealMatrix;
import org.apache.commons.math3.stat.correlation.Covariance;
import org.apache.mahout.math.*;
import org.apache.mahout.common.distance.MahalanobisDistanceMeasure;

public class Test {

    public static void main(String[] args) {
        double[] a = {2,2,3};
        Vector aVector = new DenseVector(a);

        double[] b = {4,5,9};
        Vector bVector = new DenseVector(b);

        double[] c = {7,8,9};
        Vector cVector = new DenseVector(b);


        double[] mean = {13/3,5,7};
        Vector meanVector = new DenseVector(mean);

        MahalanobisDistanceMeasure measure = new MahalanobisDistanceMeasure();

        double[][] ma = {{2,2,3},{4,5,9},{7,8,9}};
        RealMatrix matrix = new Covariance(ma).getCovarianceMatrix();
        Matrix math = new DenseMatrix(matrix.getData());

        measure.setCovarianceMatrix(math);

        measure.setMeanVector(meanVector);
        System.out.println(matrix.toString());
        System.out.println(measure.distance(meanVector,cVector));

    }


}

最佳答案

需要使用更多数据。

平均 vector + 协方差矩阵将会过度拟合您的数据,并给出相同的距离。

对于 3d 数据,至少使用 20 个点。

关于java - 点与平均 vector 之间的马哈拉诺比斯距离始终相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46034396/

相关文章:

hadoop - hadoop mahout:运行org.apache.classifier.df.mapreduce.TestForest错误

java - 如何在java中清除控制台

java - 不满意的链接错误 : Android JNI

java - 运行一段存储在 Java 字符串中的 C 代码

Hadoop机器学习/数据挖掘项目构想?

python - 如何从跟踪文件中查找重复序列

mahout - Apache Mahout 中 LDA 的输入应该是什么

java - Apache CXF JAXB Marshaller 未正确编码 @XmlAttribute

machine-learning - 信息检索 (IR)、数据挖掘、机器学习 (ML)

maven - 使用DSE Hadoop/Mahout,org.w3c.dom.Document的NoClassDef