package efruchter.project3; import shared.DataSet; import shared.Instance; import shared.filt.PrincipalComponentAnalysis; import util.linalg.Matrix; /** * ML3 file. * * @author toriscope */ public class IrisPCA { public static void main(String[] args) { Instance[] instances = DataHard.IRIS; DataSet set = new DataSet(instances); System.out.println("Before PCA"); System.out.println(set); PrincipalComponentAnalysis filter = new PrincipalComponentAnalysis(set); System.out.println(filter.getEigenValues()); System.out.println(filter.getProjection().transpose()); filter.filter(set); System.out.println("After PCA"); System.out.println(set); Matrix reverse = filter.getProjection().transpose(); for (int i = 0; i < set.size(); i++) { Instance instance = set.get(i); instance.setData(reverse.times(instance.getData()).plus(filter.getMean())); } System.out.println("After reconstructing"); System.out.println(set); } }