From: Sunsern C. <sch...@us...> - 2009-06-08 23:40:54
|
Update of /cvsroot/jboost/jboost/src/jboost/visualization In directory fdv4jf1.ch3.sourceforge.com:/tmp/cvs-serv11232/src/jboost/visualization Modified Files: Tag: jboost-2_0 DataSet.java HistogramFrame.java Log Message: jboost 2.0 Index: DataSet.java =================================================================== RCS file: /cvsroot/jboost/jboost/src/jboost/visualization/DataSet.java,v retrieving revision 1.7 retrieving revision 1.7.2.1 diff -C2 -d -r1.7 -r1.7.2.1 *** DataSet.java 12 Mar 2009 23:42:04 -0000 1.7 --- DataSet.java 8 Jun 2009 23:40:49 -0000 1.7.2.1 *************** *** 30,34 **** private XYIntervalSeries[] fluctRangeSeries; ! private double minScore,maxScore; private int total_pos,total_neg; private int neg_label=-1,pos_label=+1; --- 30,37 ---- private XYIntervalSeries[] fluctRangeSeries; ! //private double minScore,maxScore; ! private double[] minScores, maxScores; ! private double[] minRanges, maxRanges; ! private int total_pos,total_neg; private int neg_label=-1,pos_label=+1; *************** *** 37,40 **** --- 40,49 ---- this.iterList = iterList; data = new ArrayList<ArrayList<DataElement>>(); + minScores = new double[iterList.length]; + maxScores = new double[iterList.length]; + + minRanges = new double[iterList.length]; + maxRanges = new double[iterList.length]; + for(int i=0; i<iterList.length; i++) { data.add(new ArrayList<DataElement>()); *************** *** 53,58 **** --- 62,75 ---- } public DataSet(int size,int iterations) { + data = new ArrayList<ArrayList<DataElement>>(); iterList = new String[iterations]; + + minScores = new double[iterations]; + maxScores = new double[iterations]; + + minRanges = new double[iterations]; + maxRanges = new double[iterations]; + initFluctSeries(iterations); *************** *** 96,100 **** //System.out.printf("data.size = %d%n", size); for(int i=0; i<size; i++) { ! addScoresList(data.get(i),i); //System.out.printf("finished pre-processing %d%n",i); } --- 113,158 ---- //System.out.printf("data.size = %d%n", size); for(int i=0; i<size; i++) { ! ! ArrayList<DataElement> d=data.get(i); ! addScoresList(d,i); ! ! // d should already be sorted ! ! int bottom = 1*(d.size()-1)/100; ! int top = 99*(d.size()-1)/100; ! ! minRanges[i] = d.get(bottom).value; ! maxRanges[i] = d.get(top).value; ! ! maxRanges[i] = Math.max(Math.abs(minRanges[i]), Math.abs(maxRanges[i])); ! minRanges[i] = -maxRanges[i]; ! ! if (minRanges[i] > -1 || maxRanges[i] < 1) { ! minRanges[i] = -1; ! maxRanges[i] = 1; ! } ! ! if (i > 0 && minRanges[i] > minRanges[i-1]) minRanges[i] = minRanges[i-1]; ! if (i > 0 && maxRanges[i] < maxRanges[i-1]) maxRanges[i] = maxRanges[i-1]; ! ! double min = d.get(0).value; ! double max = d.get(d.size()-1).value; ! ! ! minScores[i] = min; ! maxScores[i] = max; ! ! maxScores[i] = Math.max(Math.abs(maxScores[i]),Math.abs(minScores[i])); ! minScores[i] = -maxScores[i]; ! ! if (minScores[i] > -1 || maxScores[i] < 1) { ! minScores[i] = -1; ! maxScores[i] = 1; ! } ! ! if (i > 0 && minScores[i] > minScores[i-1]) minScores[i] = minScores[i-1]; ! if (i > 0 && maxScores[i] < maxScores[i-1]) maxScores[i] = maxScores[i-1]; ! ! //System.out.printf("finished pre-processing %d%n",i); } *************** *** 120,126 **** if(index==0) { ! minScore = scores.get(0).value; ! maxScore = scores.get(scores.size()-1).value; ! for(int i=0; i<a.length; i++) { DataElement e = ((DataElement) a[i]); --- 178,182 ---- if(index==0) { ! for(int i=0; i<a.length; i++) { DataElement e = ((DataElement) a[i]); *************** *** 134,140 **** //System.out.printf("total_neg=%d, total_pos=%d%n",total_neg,total_pos); - } else { - minScore = Math.min(minScore,scores.get(0).value); - maxScore = Math.max(maxScore,scores.get(scores.size()-1).value); } --- 190,193 ---- *************** *** 154,163 **** } ! public double getMin() { ! return minScore; } ! public double getMax() { ! return maxScore; } --- 207,224 ---- } ! public double getMin(int iter) { ! return minScores[iter]; } ! public double getMax(int iter) { ! return maxScores[iter]; ! } ! ! public double getMinRange(int iter) { ! return minRanges[iter]; ! } ! ! public double getMaxRange(int iter) { ! return maxRanges[iter]; } *************** *** 165,170 **** double[] h = new double[bins]; ! double step = (maxScore-minScore)/bins; ! double s=minScore+step; double prev = total_pos; if(label != pos_label) prev = total_neg; --- 226,232 ---- double[] h = new double[bins]; ! ! double step = (maxScores[iteration]-minScores[iteration])/bins; ! double s=minScores[iteration]+step; double prev = total_pos; if(label != pos_label) prev = total_neg; *************** *** 249,261 **** public XYSeries generateRoC(int neg_label, int pos_label) { ! XYSeries roc = new XYSeries("ROC"); ! ! Object[] a = (Object[]) data.get(iteration).toArray(); ! for(int i=a.length-1; i >= 0; i--) { ! DataElement e = ((DataElement) a[i]); ! roc.add(e.falsePositives/total_neg, e.truePositives/total_pos); ! } ! return roc; } --- 311,323 ---- public XYSeries generateRoC(int neg_label, int pos_label) { ! XYSeries roc = new XYSeries("ROC"); ! Object[] a = (Object[]) data.get(iteration).toArray(); ! ! for(int i=a.length-1; i >= 0; i--) { ! DataElement e = ((DataElement) a[i]); ! roc.add(e.falsePositives/total_neg, e.truePositives/total_pos); ! } ! return roc; } *************** *** 309,314 **** DataSet test = new DataSet(1000,3); - System.out.printf("range of scores = [%f,%f]%n",test.minScore,test.maxScore); - test.generateRoC(-1,1); double[] a = test.getFPTP(5.0); --- 371,374 ---- Index: HistogramFrame.java =================================================================== RCS file: /cvsroot/jboost/jboost/src/jboost/visualization/HistogramFrame.java,v retrieving revision 1.8 retrieving revision 1.8.2.1 diff -C2 -d -r1.8 -r1.8.2.1 *** HistogramFrame.java 16 Mar 2009 19:43:29 -0000 1.8 --- HistogramFrame.java 8 Jun 2009 23:40:49 -0000 1.8.2.1 *************** *** 1,28 **** package jboost.visualization; import java.awt.Color; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Graphics2D; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; - import java.awt.event.ItemEvent; - import java.awt.event.ItemListener; [...2317 lines suppressed...] + post("updating RoC..."); + XYSeries rocSeries = rawData.generateRoC(negLabel,posLabel); + rocDataset.removeSeries(0); + rocDataset.addSeries(rocSeries); + post("updating marker..."); + updateUpperMarker(); + updateLowerMarker(); + post("done"); + } + + + private void post(String s) { + System.out.println(s); + } + + } |