【问题标题】:Normalize double array in java在java中规范化双数组
【发布时间】:2016-08-11 03:08:08
【问题描述】:

我在 Java 中有一个双数组列表数据集。我想对数据进行归一化数据聚类,归一化数据的功能在这里normalization for data cluster

输入 = {{-1.3,2.4,5.3.2.1,0.7},{6.4,-3.3,1.9.4.1,0.3}}

以下是我目前尝试过的代码,但我不确定它是否是正确的规范化方法

public void getMinMax(){
    min = new double[input.size()];
    max = new double[input.size()];
    for(int i=0; i < input.size(); i++){
        min[i] = 0;
        max[i] = 0;
        for(int j = 0; j < input.get(i).size(); j++){
            if(input.get(i).get(j) >= max[i]){
                max[i] = input.get(i).get(j);
            } else if(input.get(i).get(j) <= min[i]){
                min[i] = input.get(i).get(j);
            }
        }
    }
}

private void normalizeMaxMin() {
    for(int i=0; i < input.size(); i++){
        for(int j = 0; j < input.get(i).size(); j++){
            input.get(i).set(j, (input.get(i).get(j) - min[i]) / (max[i] - min[i]));
        }
    }
} 

【问题讨论】:

  • 我已经编辑了我的问题
  • 您需要定义“规范化数据以进行数据聚类”。我们猜不出这意味着什么。无论如何,如果您不确定,为什么不测试您的代码并检查它是否符合您的预期?
  • @JBNizet 我已经编辑了我的问题
  • 您应该改写它,以便它以您想要回答的问题结束。现在不清楚你在问什么。
  • 我同意@MichaelDibbets:代码很丑。考虑一个方法static void normalize(List&lt;Double&gt; list) { ... },它规范化一个单个列表,并用每个input.get(i)调用这个方法。它将更具可读性、更灵活和更高效。除此之外,没有“正确的”规范化。数据挖掘中最常见的是“Min-Max”和“Z-Max”(另见math.stackexchange.com/questions/362918/…)。你的是 Min-Max,乍一看它是正确的,但我没有测试/验证它。

标签: java arraylist normalization


【解决方案1】:

这是我的方法。这是 O(n^2) 但它仍然有效。

    public static double[][] normalize(double[][] arr){


    min = Double.MAX_VALUE;
    max = Double.MIN_VALUE;


    for (int i = 0; i < arr.length; i++) {
        for (int j = 0; j < arr[i].length; j++) {

            max = Math.max(arr[i][j],max);
            min = Math.min(arr[i][j],min);


        }
    }

    for (int i = 0; i < arr.length; i++) {
        for (int j = 0; j < arr[i].length; j++) {

            arr[i][j] = (arr[i][j] - min)/(max-min);

        }
    }

    return arr;

}

【讨论】:

    猜你喜欢
    • 2014-02-18
    • 1970-01-01
    • 2015-08-21
    • 2014-10-28
    • 2021-06-18
    • 2019-10-03
    • 1970-01-01
    • 2019-08-09
    • 1970-01-01
    相关资源
    最近更新 更多