/* * Created on Jan 30, 2006 * * TODO To change the template for this generated file go to * Window - Preferences - Java - Code Style - Code Templates */ package transformations; import java.io.FileReader; import fileIO.*; import weka.core.*; import weka.attributeSelection.PrincipalComponents; public class PCA extends Transformations { double varianceCovered=1; PrincipalComponents pca=new PrincipalComponents(); public Instances transform(Instances data){ Instances newData=data; try{ pca.setVarianceCovered(varianceCovered); pca.buildEvaluator(data); //newData=pca.transformedData(); }catch(Exception e) { System.out.println(" Error = "+e); System.exit(0); } //Build the transformation //Add the response back in return newData; } //Generally dont need this public Instances invert(Instances data){ return data; } public Instances staticTransform(Instances data){ Instance inst=null; Instances newData=null; try{ newData=pca.transformedHeader(); for(int i=0;i<data.numInstances();i++) { inst=pca.convertInstance(data.instance(i)); newData.add(inst); } }catch(Exception e) { System.out.println(" Error in convert "+e); System.out.println(" instance ="+inst); System.exit(0); } return newData; } //PCA Leaves the response the same public double[] invertPredictedResponse(double[] d){ return d; } public static void main(String[] args){ PCA p= new PCA(); Instances data; FileReader r; try{ r= new FileReader("C:/Research/Data/Gavin Competition/Weka Files/SO2Combined.arff"); // r= new FileReader("C:/Research/Data/Gavin Competition/Weka Files/Temp Train.arff"); data = new Instances(r); data.setClassIndex(data.numAttributes()-1); p.varianceCovered=0.95; data=p.transform(data); System.out.println(" New attribute size = "+data.numAttributes()); OutFile of= new OutFile("C:/Research/Data/Gavin Competition/Weka Files/SO2CombinedTransformed.arff"); of.writeLine(data.toString()); r= new FileReader("C:/Research/Data/Gavin Competition/Weka Files/PrecipCombined.arff"); // r= new FileReader("C:/Research/Data/Gavin Competition/Weka Files/Temp Train.arff"); data = new Instances(r); data.setClassIndex(data.numAttributes()-1); p.varianceCovered=0.95; data=p.transform(data); System.out.println(" New attribute size = "+data.numAttributes()); of= new OutFile("C:/Research/Data/Gavin Competition/Weka Files/PrecipCombinedTransformed.csv"); of.writeLine(data.toString()); }catch(Exception e) { System.out.println(" Error in PCA "+e); } } }