public void actionPerformed(ActionEvent e) {
try {
ThresholdCurve tc = new ThresholdCurve();
Instances result = tc.getCurve(preds, classValue);
//VisualizePanel vmc = new VisualizePanel();
ThresholdVisualizePanel vmc = new ThresholdVisualizePanel();
vmc.setROCString(Messages.getInstance().getString("ClassifierPanel_Visualize_VMC_SetROCString_Text_First") +
Utils.doubleToString(ThresholdCurve.getROCArea(result), 4) + Messages.getInstance().getString("ClassifierPanel_Visualize_VMC_SetROCString_Text_Second"));
vmc.setLog(m_Log);
vmc.setName(result.relationName()+Messages.getInstance().getString("ClassifierPanel_Visualize_VMC_SetName_Text_First") +
classAtt.value(classValue) + Messages.getInstance().getString("ClassifierPanel_Visualize_VMC_SetName_Text_Second"));
PlotData2D tempd = new PlotData2D(result);
tempd.setPlotName(result.relationName());
tempd.addInstanceNumberAttribute();
// specify which points are connected
boolean[] cp = new boolean[result.numInstances()];
for (int n = 1; n < cp.length; n++)
cp[n] = true;
tempd.setConnectPoints(cp);
// add plot
vmc.addPlot(tempd);
visualizeClassifierErrors(vmc);
} catch (Exception ex) {
ex.printStackTrace();
}
}
});
visThreshold.add(clv);
}
} else {
visThreshold.setEnabled(false);
}
resultListMenu.add(visThreshold);
JMenu visCostBenefit = new JMenu(Messages.getInstance().getString("ClassifierPanel_Visualize_VisCostBenefit_JMenu_Text"));
if ((preds != null) && (classAtt != null) && (classAtt.isNominal())) {
for (int i = 0; i < classAtt.numValues(); i++) {
JMenuItem clv = new JMenuItem(classAtt.value(i));
final int classValue = i;
clv.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
ThresholdCurve tc = new ThresholdCurve();
Instances result = tc.getCurve(preds, classValue);
// Create a dummy class attribute with the chosen
// class value as index 0 (if necessary).
Attribute classAttToUse = classAtt;
if (classValue != 0) {
FastVector newNames = new FastVector();
newNames.addElement(classAtt.value(classValue));
for (int k = 0; k < classAtt.numValues(); k++) {
if (k != classValue) {
newNames.addElement(classAtt.value(k));
}
}
classAttToUse = new Attribute(classAtt.name(), newNames);
}
CostBenefitAnalysis cbAnalysis = new CostBenefitAnalysis();
PlotData2D tempd = new PlotData2D(result);
tempd.setPlotName(result.relationName());
tempd.m_alwaysDisplayPointsOfThisSize = 10;
// specify which points are connected
boolean[] cp = new boolean[result.numInstances()];
for (int n = 1; n < cp.length; n++)
cp[n] = true;
tempd.setConnectPoints(cp);
String windowTitle = "";
if (classifier != null) {
String cname = classifier.getClass().getName();
if (cname.startsWith("weka.classifiers.")) {
windowTitle = "" + cname.substring("weka.classifiers.".length()) + " ";
}
}
windowTitle += Messages.getInstance().getString("ClassifierPanel_Visualize_WindowTitle_Text_First") + classAttToUse.value(0) + Messages.getInstance().getString("ClassifierPanel_Visualize_WindowTitle_Text_Second");
// add plot
cbAnalysis.setCurveData(tempd, classAttToUse);
visualizeCostBenefitAnalysis(cbAnalysis, windowTitle);
} catch (Exception ex) {
ex.printStackTrace();
}
}
});
visCostBenefit.add(clv);
}
} else {
visCostBenefit.setEnabled(false);
}
resultListMenu.add(visCostBenefit);
JMenu visCost = new JMenu(Messages.getInstance().getString("ClassifierPanel_VisCost_JMenu_Text"));
if (preds != null && classAtt != null) {
for (int i = 0; i < classAtt.numValues(); i++) {
JMenuItem clv = new JMenuItem(classAtt.value(i));
final int classValue = i;
clv.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
CostCurve cc = new CostCurve();
Instances result = cc.getCurve(preds, classValue);
VisualizePanel vmc = new VisualizePanel();
vmc.setLog(m_Log);
vmc.setName(result.relationName()+Messages.getInstance().getString("ClassifierPanel_Visualize_VMC_SetName_Text_Third") +
classAtt.value(classValue) + Messages.getInstance().getString("ClassifierPanel_Visualize_VMC_SetName_Text_Fourth"));
PlotData2D tempd = new PlotData2D(result);
tempd.m_displayAllPoints = true;
tempd.setPlotName(result.relationName());
boolean [] connectPoints =
new boolean [result.numInstances()];
for (int jj = 1; jj < connectPoints.length; jj+=2) {
connectPoints[jj] = true;
}
tempd.setConnectPoints(connectPoints);
// tempd.addInstanceNumberAttribute();
vmc.addPlot(tempd);
visualizeClassifierErrors(vmc);
} catch (Exception ex) {
ex.printStackTrace();
}
}