📄 resultspanel.java
字号:
+ "Reason:\n" + ex.getMessage(),
"Load Instances",
0,
JOptionPane.ERROR_MESSAGE,
null,
new String[] {"OK"},
null) == 1) {
}
}
}
/**
* Returns a vector with column names of the dataset, listed in "list". If
* a column cannot be found or the list is empty the ones from the default
* list are returned.
*
* @param list comma-separated list of attribute names
* @param defaultList the default list of attribute names
* @param inst the instances to get the attribute names from
* @return a vector containing attribute names
*/
protected Vector determineColumnNames(String list, String defaultList, Instances inst) {
Vector result;
Vector atts;
StringTokenizer tok;
int i;
String item;
// get attribute names
atts = new Vector();
for (i = 0; i < inst.numAttributes(); i++)
atts.add(inst.attribute(i).name().toLowerCase());
// process list
result = new Vector();
tok = new StringTokenizer(list, ",");
while (tok.hasMoreTokens()) {
item = tok.nextToken().toLowerCase();
if (atts.contains(item)) {
result.add(item);
}
else {
result.clear();
break;
}
}
// do we have to return defaults?
if (result.size() == 0) {
tok = new StringTokenizer(defaultList, ",");
while (tok.hasMoreTokens())
result.add(tok.nextToken().toLowerCase());
}
return result;
}
/**
* Sets up the panel with a new set of instances, attempting
* to guess the correct settings for various columns.
*
* @param newInstances the new set of results.
*/
public void setInstances(Instances newInstances) {
m_Instances = newInstances;
m_TTester.setInstances(m_Instances);
m_FromLab.setText("Got " + m_Instances.numInstances() + " results");
// setup row and column names
Vector rows = determineColumnNames(
ExperimenterDefaults.getRow(), "Key_Dataset", m_Instances);
Vector cols = determineColumnNames(
ExperimenterDefaults.getColumn(), "Key_Scheme,Key_Scheme_options,Key_Scheme_version_ID", m_Instances);
// Do other stuff
m_DatasetKeyModel.removeAllElements();
m_ResultKeyModel.removeAllElements();
m_CompareModel.removeAllElements();
String selectedList = "";
String selectedListDataset = "";
boolean comparisonFieldSet = false;
for (int i = 0; i < m_Instances.numAttributes(); i++) {
String name = m_Instances.attribute(i).name();
if (name.toLowerCase().startsWith("key_", 0)) {
m_DatasetKeyModel.addElement(name.substring(4));
m_ResultKeyModel.addElement(name.substring(4));
m_CompareModel.addElement(name.substring(4));
} else {
m_DatasetKeyModel.addElement(name);
m_ResultKeyModel.addElement(name);
m_CompareModel.addElement(name);
}
if (rows.contains(name.toLowerCase())) {
m_DatasetKeyList.addSelectionInterval(i, i);
selectedListDataset += "," + (i + 1);
} else if (name.toLowerCase().equals("key_run")) {
m_TTester.setRunColumn(i);
} else if (name.toLowerCase().equals("key_fold")) {
m_TTester.setFoldColumn(i);
} else if (cols.contains(name.toLowerCase())) {
m_ResultKeyList.addSelectionInterval(i, i);
selectedList += "," + (i + 1);
} else if (name.toLowerCase().indexOf(ExperimenterDefaults.getComparisonField()) != -1) {
m_CompareCombo.setSelectedIndex(i);
comparisonFieldSet = true;
// break;
} else if ((name.toLowerCase().indexOf("root_relative_squared_error") != -1) &&
(!comparisonFieldSet)) {
m_CompareCombo.setSelectedIndex(i);
comparisonFieldSet = true;
}
}
m_DatasetKeyBut.setEnabled(true);
m_ResultKeyBut.setEnabled(true);
m_CompareCombo.setEnabled(true);
Range generatorRange = new Range();
if (selectedList.length() != 0) {
try {
generatorRange.setRanges(selectedList);
} catch (Exception ex) {
ex.printStackTrace();
System.err.println(ex.getMessage());
}
}
m_TTester.setResultsetKeyColumns(generatorRange);
generatorRange = new Range();
if (selectedListDataset.length() != 0) {
try {
generatorRange.setRanges(selectedListDataset);
} catch (Exception ex) {
ex.printStackTrace();
System.err.println(ex.getMessage());
}
}
m_TTester.setDatasetKeyColumns(generatorRange);
m_SigTex.setEnabled(true);
setTTester();
}
/**
* Updates the test chooser with possible tests
*/
protected void setTTester() {
// default is to display all columns
m_TTester.setDisplayedResultsets(null);
String name = (new SimpleDateFormat("HH:mm:ss - "))
.format(new Date())
+ "Available resultsets";
StringBuffer outBuff = new StringBuffer();
outBuff.append("Available resultsets\n"
+ m_TTester.resultsetKey() + "\n\n");
m_History.addResult(name, outBuff);
m_History.setSingle(name);
m_TestsModel.removeAllElements();
for (int i = 0; i < m_TTester.getNumResultsets(); i++) {
String tname = m_TTester.getResultsetName(i);
/* if (tname.length() > 20) {
tname = tname.substring(0, 20);
} */
m_TestsModel.addElement(tname);
}
m_DisplayedModel.removeAllElements();
for (int i = 0; i < m_TestsModel.size(); i++)
m_DisplayedModel.addElement(m_TestsModel.elementAt(i));
m_TestsModel.addElement("Summary");
m_TestsModel.addElement("Ranking");
m_TestsList.setSelectedIndex(0);
m_DisplayedList.setSelectionInterval(0, m_DisplayedModel.size() - 1);
m_TestsButton.setEnabled(true);
m_DisplayedButton.setEnabled(true);
m_ShowStdDevs.setEnabled(true);
m_OutputFormatButton.setEnabled(true);
m_PerformBut.setEnabled(true);
}
/**
* Carries out a t-test using the current configuration.
*/
protected void performTest() {
String sigStr = m_SigTex.getText();
if (sigStr.length() != 0) {
m_TTester.setSignificanceLevel((new Double(sigStr)).doubleValue());
} else {
m_TTester.setSignificanceLevel(ExperimenterDefaults.getSignificance());
}
// Carry out the test chosen and biff the results to the output area
m_TTester.setShowStdDevs(m_ShowStdDevs.isSelected());
int compareCol = m_CompareCombo.getSelectedIndex();
int tType = m_TestsList.getSelectedIndex();
String name = (new SimpleDateFormat("HH:mm:ss - "))
.format(new Date())
+ (String) m_CompareCombo.getSelectedItem() + " - "
+ (String) m_TestsList.getSelectedValue();
StringBuffer outBuff = new StringBuffer();
outBuff.append(m_TTester.header(compareCol));
outBuff.append("\n");
m_History.addResult(name, outBuff);
m_History.setSingle(name);
m_TTester.setDisplayedResultsets(m_DisplayedList.getSelectedIndices());
m_TTester.setMeanPrec(m_MeanPrec);
m_TTester.setStdDevPrec(m_StdDevPrec);
m_TTester.setProduceLatex(m_latexOutput);
m_TTester.setProduceCSV(m_csvOutput);
try {
if (tType < m_TTester.getNumResultsets()) {
outBuff.append(m_TTester.multiResultsetFull(tType, compareCol));
} else if (tType == m_TTester.getNumResultsets()) {
outBuff.append(m_TTester.multiResultsetSummary(compareCol));
} else {
outBuff.append(m_TTester.multiResultsetRanking(compareCol));
}
outBuff.append("\n");
} catch (Exception ex) {
outBuff.append(ex.getMessage() + "\n");
}
m_History.updateResult(name);
}
public void setResultKeyFromDialog() {
ListSelectorDialog jd = new ListSelectorDialog(null, m_ResultKeyList);
// Open the dialog
int result = jd.showDialog();
// If accepted, update the ttester
if (result == ListSelectorDialog.APPROVE_OPTION) {
int [] selected = m_ResultKeyList.getSelectedIndices();
String selectedList = "";
for (int i = 0; i < selected.length; i++) {
selectedList += "," + (selected[i] + 1);
}
Range generatorRange = new Range();
if (selectedList.length() != 0) {
try {
generatorRange.setRanges(selectedList);
} catch (Exception ex) {
ex.printStackTrace();
System.err.println(ex.getMessage());
}
}
m_TTester.setResultsetKeyColumns(generatorRange);
setTTester();
}
}
public void setDatasetKeyFromDialog() {
ListSelectorDialog jd = new ListSelectorDialog(null, m_DatasetKeyList);
// Open the dialog
int result = jd.showDialog();
// If accepted, update the ttester
if (result == ListSelectorDialog.APPROVE_OPTION) {
int [] selected = m_DatasetKeyList.getSelectedIndices();
String selectedList = "";
for (int i = 0; i < selected.length; i++) {
selectedList += "," + (selected[i] + 1);
}
Range generatorRange = new Range();
if (selectedList.length() != 0) {
try {
generatorRange.setRanges(selectedList);
} catch (Exception ex) {
ex.printStackTrace();
System.err.println(ex.getMessage());
}
}
m_TTester.setDatasetKeyColumns(generatorRange);
setTTester();
}
}
public void setTestBaseFromDialog() {
ListSelectorDialog jd = new ListSelectorDialog(null, m_TestsList);
// Open the dialog
jd.showDialog();
}
public void setDisplayedFromDialog() {
ListSelectorDialog jd = new ListSelectorDialog(null, m_DisplayedList);
// Open the dialog
jd.showDialog();
}
/**
* displays the Dialog for the output format and sets the chosen settings,
* if the user approves
*/
public void setOutputFormatFromDialog() {
OutputFormatDialog dialog = new OutputFormatDialog(null);
dialog.setProduceLatex(m_latexOutput);
dialog.setProduceCSV(m_csvOutput);
dialog.setMeanPrec(m_MeanPrec);
dialog.setStdDevPrec(m_StdDevPrec);
if (dialog.showDialog() == OutputFormatDialog.APPROVE_OPTION) {
m_latexOutput = dialog.getProduceLatex();
m_csvOutput = dialog.getProduceCSV();
m_MeanPrec = dialog.getMeanPrec();
m_StdDevPrec = dialog.getStdDevPrec();
}
}
/**
* Save the currently selected result buffer to a file.
*/
protected void saveBuffer() {
StringBuffer sb = m_History.getSelectedBuffer();
if (sb != null) {
if (m_SaveOut.save(sb)) {
JOptionPane.showMessageDialog(this,
"File saved",
"Results",
JOptionPane.INFORMATION_MESSAGE);
}
} else {
m_SaveOutBut.setEnabled(false);
}
}
/**
* Tests out the results panel from the command line.
*
* @param args ignored
*/
public static void main(String [] args) {
try {
final JFrame jf = new JFrame("Weka Experiment: Results Analysis");
jf.getContentPane().setLayout(new BorderLayout());
final ResultsPanel sp = new ResultsPanel();
//sp.setBorder(BorderFactory.createTitledBorder("Setup"));
jf.getContentPane().add(sp, BorderLayout.CENTER);
jf.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
jf.dispose();
System.exit(0);
}
});
jf.pack();
jf.setSize(700, 550);
jf.setVisible(true);
} catch (Exception ex) {
ex.printStackTrace();
System.err.println(ex.getMessage());
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -