在java中规范化双数组

时间:2016-04-19 06:09:13

标签: java normalization

我在Java中有一个双arraylist数据集。我想规范化数据聚类的数据,为聚类规范化数据的功能就在这里normalization for data cluster

  

input = {{-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]));
        }
    }
} 

1 个答案:

答案 0 :(得分:0)

这是我的方法。它是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;

}