public void normalization() {
        //for each col in data
        for (int i = 0; i < datas.get(0).size(); i++) {
            //find max and min
            double max = datas.get(0).get(i);
            double min = max;
            for (int j = 0; j < datas.size(); j++) {
                if (datas.get(j).get(i) > max) {
                    max = datas.get(j).get(i);
                }
                if (datas.get(j).get(i) < min) {
                    min = datas.get(j).get(i);
                }
            }
            // Normalization is done by diving each component of the input vector by the vector length
            for (int j = 0; j < datas.size(); j++) {
                datas.get(j).set(i, (2 * datas.get(j).get(i) - (max + min)) / (max - min));
            }
        }
    }