我在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]));
}
}
}
答案 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;
}