public static void executePCA(Preprocessing pr) throws Exception { // Using PCA from EJML // PrincipleComponentAnalysis pca = new PrincipleComponentAnalysis(); // pca.setup(Environment.hm_bookmark_tag.size(), // Environment.hm_token_weight.size()); // BufferedReader br = new BufferedReader(new FileReader( // new File("matrix"))); // String s = ""; // String[] arrStr; // double[] nums = null; // while ((s = br.readLine()) != null) { // arrStr = s.split("\t"); // nums = new double[arrStr.length - 1]; // for (int i = 0; i < nums.length; i++) { // nums[i] = Double.parseDouble(arrStr[i + 1]); // } // pca.addSample(nums); // } // pca.computeBasis(Environment.featureSize); // System.out.println(pca.sampleToEigenSpace(nums)); PrincipleComponentAnalysis pca = new PrincipleComponentAnalysis(); // int bm_num = 68479; // int tg_num = 11619; pca.setup(Environment.hm_bookmark_tag.size(), Environment.hm_token_weight.size()); File mxIN = new File("Output4Stats/matrix"); File mxOUT = new File("Output4Stats/norm_matrix_ejml"); BufferedReader br = new BufferedReader(new FileReader(mxIN)); String s = ""; String[] arrStr; double[] nums = null; System.out.println("Start reading matrix..."); while ((s = br.readLine()) != null) { arrStr = s.split("\t"); nums = new double[arrStr.length - 1]; for (int i = 0; i < nums.length; i++) { nums[i] = Double.parseDouble(arrStr[i + 1]); } pca.addSample(nums); } br.close(); System.out.println("Start PCA..."); pca.computeBasis(Environment.featureSize); // Write down to file System.out.println("Start writing norm matrix..."); pr.writeNormMatrix(pca, mxIN, mxOUT); }