📄 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(); m_SortModel.removeAllElements(); m_SortModel.addElement("<default>"); m_TTester.setSortColumn(-1); 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 (m_Instances.attribute(i).isNumeric()) m_SortModel.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_TesterClasses.setEnabled(true); m_DatasetKeyBut.setEnabled(true); m_ResultKeyBut.setEnabled(true); m_CompareCombo.setEnabled(true); m_SortCombo.setEnabled(true); if (ExperimenterDefaults.getSorting().length() != 0) setSelectedItem(m_SortCombo, ExperimenterDefaults.getSorting()); 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(); } /** * Sets the selected item of an combobox, since using setSelectedItem(...) * doesn't work, if one checks object references! * * @param cb the combobox to set the item for * @param item the item to set active */ protected void setSelectedItem(JComboBox cb, String item) { int i; for (i = 0; i < cb.getItemCount(); i++) { if (cb.getItemAt(i).toString().equals(item)) { cb.setSelectedIndex(i); break; } } } /** * 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()); if (m_Instances.attribute(m_SortCombo.getSelectedItem().toString()) != null) m_TTester.setSortColumn( m_Instances.attribute( m_SortCombo.getSelectedItem().toString()).index()); else m_TTester.setSortColumn(-1); 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.setResultMatrix(m_ResultMatrix); 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.setResultMatrix(m_ResultMatrix.getClass()); dialog.setMeanPrec(m_ResultMatrix.getMeanPrec()); dialog.setStdDevPrec(m_ResultMatrix.getStdDevPrec()); dialog.setRemoveFilterName(m_ResultMatrix.getRemoveFilterName()); dialog.setShowAverage(m_ResultMatrix.getShowAverage()); if (dialog.showDialog() == OutputFormatDialog.APPROVE_OPTION) { try { m_ResultMatrix = (ResultMatrix) dialog.getResultMatrix().newInstance(); } catch (Exception e) { e.printStackTrace(); m_ResultMatrix = new ResultMatrixPlainText(); } m_ResultMatrix.setMeanPrec(dialog.getMeanPrec()); m_ResultMatrix.setStdDevPrec(dialog.getStdDevPrec()); m_ResultMatrix.setRemoveFilterName(dialog.getRemoveFilterName()); m_ResultMatrix.setShowAverage(dialog.getShowAverage()); } } /** * 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); } } /** * sets the currently selected Tester-Class */ protected void setTester() { Tester tester; Tester t; int i; if (m_TesterClasses.getSelectedItem() == null) return; tester = null; // find display name try { for (i = 0; i < m_Testers.size(); i++) { t = (Tester) ((Class) m_Testers.get(i)).newInstance(); if (t.getDisplayName().equals(m_TesterClasses.getSelectedItem())) { tester = t; break; } } } catch (Exception e) { e.printStackTrace(); } if (tester == null) { tester = new PairedCorrectedTTester(); // default m_TesterClasses.setSelectedItem(tester.getDisplayName()); } tester.assign(m_TTester); m_TTester = tester; m_PerformBut.setToolTipText(m_TTester.getToolTipText()); System.out.println("Tester set to: " + m_TTester.getClass().getName()); } /** * 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 + -