📄 resultspanel.java
字号:
&& (name.toLowerCase().equals("key_run"))) { m_RunCombo.setSelectedIndex(i); runCol = i; } else if (name.toLowerCase().equals("key_scheme") || name.toLowerCase().equals("key_scheme_options") || name.toLowerCase().equals("key_scheme_version_id")) { m_ResultKeyList.addSelectionInterval(i, i); selectedList += "," + (i + 1); //=============== BEGIN EDIT mbilenko =============== // automatic selection of the correct measure for clustering experiments } else if (name.toLowerCase().indexOf("pairwise_f_measure") != -1) { m_CompareCombo.setSelectedIndex(i); m_ErrorCompareCol = i; } // automatic selection of the correct measure for deduping experiments else if (name.toLowerCase().equals("precision")) { m_CompareCombo.setSelectedIndex(i); //=============== END EDIT mbilenko =============== }else if (name.toLowerCase().indexOf("percent_correct") != -1) { m_CompareCombo.setSelectedIndex(i); classificationTask=true; }else if (!classificationTask && (name.toLowerCase().indexOf("root_mean_squared_error") != -1)) { // automatic selection of the correct measure for regression experiments m_CompareCombo.setSelectedIndex(i); }else if (name.toLowerCase().indexOf("percent_incorrect") != -1) { m_ErrorCompareCol = i; //remember index of error for computing error reductions } } //=============== BEGIN EDIT melville =============== if(learning){ m_DatasetKeyList.addSelectionInterval(learning_key, learning_key); selectedListDataset += "," + (learning_key + 1); m_CompareModel.addElement("%Error_reduction"); m_CompareModel.addElement("Top_20%_%Error_reduction"); } //=============== END EDIT melville =============== if (runCol == -1) { runCol = 0; } m_DatasetKeyBut.setEnabled(true); m_RunCombo.setEnabled(true); m_ResultKeyBut.setEnabled(true); m_CompareCombo.setEnabled(true); // Reconnect the configuration listener m_RunCombo.addActionListener(m_ConfigureListener); // Set up the TTester with the new data m_TTester.setRunColumn(runCol); 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); //=============== BEGIN EDIT melville =============== m_TTester.setLearningCurve(learning); m_TTester.setFraction(fraction); if(learning){//get points on the learning curve Attribute attr; if(noise){//override fraction attr = m_Instances.attribute("Key_Noise_levels"); }else if(fraction){ attr = m_Instances.attribute("Key_Fraction_instances"); }else { attr = m_Instances.attribute("Key_Total_instances"); } double []pts = new double [attr.numValues()]; for(int k=0; k<attr.numValues(); k++){ pts[k] = Double.parseDouble(attr.value(k)); } //sort points Arrays.sort(pts); m_TTester.setPoints(pts); } //=============== END EDIT melville =============== m_SigTex.setEnabled(true); m_PrecTex.setEnabled(true); setTTester(); } /** * Updates the test chooser with possible tests */ protected void setTTester() { 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_TestsModel.addElement("Summary"); m_TestsModel.addElement("Ranking"); //================ BEGIN EDIT melville ================ m_TestsModel.addElement("Learning Curve Summary"); //================ END EDIT melville ================ m_TestsList.setSelectedIndex(0); m_TestsButton.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(0.05); } String precStr = m_PrecTex.getText(); if (precStr.length() != 0) { m_TTester.setPrecision((new Integer(precStr)).intValue()); } else { m_TTester.setPrecision(2); } // 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(); //=============== BEGIN EDIT melville =============== String test_selected = (String) m_TestsList.getSelectedValue(); String name = (new SimpleDateFormat("HH:mm:ss - ")) .format(new Date()) + (String) m_CompareCombo.getSelectedItem() + " - " + test_selected; StringBuffer outBuff = new StringBuffer(); if(((String) m_CompareCombo.getSelectedItem()).equalsIgnoreCase("%error_reduction")) outBuff.append(m_TTester.header("Percentage error reduction")); else if(((String) m_CompareCombo.getSelectedItem()).equalsIgnoreCase("top_20%_%error_reduction")) outBuff.append(m_TTester.header("Top 20% Percentage error reduction")); else outBuff.append(m_TTester.header(compareCol)); outBuff.append("\n"); m_History.addResult(name, outBuff); m_History.setSingle(name); try { if (tType < m_TTester.getNumResultsets()) { if(((String) m_CompareCombo.getSelectedItem()).equalsIgnoreCase("%error_reduction")){ outBuff.append(m_TTester.multiResultsetPercentErrorReduction(tType, m_ErrorCompareCol)); }else if(((String) m_CompareCombo.getSelectedItem()).equalsIgnoreCase("top_20%_%error_reduction")){ outBuff.append(m_TTester.multiResultsetTopNPercentErrorReduction(tType, m_ErrorCompareCol, 0.20)); }else outBuff.append(m_TTester.multiResultsetFull(tType, compareCol)); } else if (test_selected.equalsIgnoreCase("summary")) { outBuff.append(m_TTester.multiResultsetSummary(compareCol)); } else if (test_selected.equalsIgnoreCase("ranking")) { outBuff.append(m_TTester.multiResultsetRanking(compareCol)); } //================ END EDIT melville ================ 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(); //=============== BEGIN EDIT melville =============== //Check if learning curves should be generated boolean noise = false; boolean learning = false; boolean fraction = false; int learning_key = -1; // If accepted, update the ttester if (result == ListSelectorDialog.APPROVE_OPTION) { int [] selected = m_DatasetKeyList.getSelectedIndices(); String selectedList = ""; Object [] selected_string = m_DatasetKeyList.getSelectedValues(); for (int i = 0; i < selected.length; i++) { if(((String)selected_string[i]).toLowerCase().equals("key_noise_levels")){ learning_key = i; learning = true; //fraction = true; noise = true; }else if(((String)selected_string[i]).toLowerCase().equals("key_fraction_instances")){ learning_key = i; learning = true; fraction = true; }else if(((String)selected_string[i]).toLowerCase().equals("key_total_instances") && !learning){ learning = true; learning_key = i; }else selectedList += "," + (selected[i] + 1); } m_TTester.setLearningCurve(learning); m_TTester.setFraction(fraction); if(learning){//get points on the learning curve selectedList += "," + (selected[learning_key] + 1); Attribute attr; if(noise){//override fraction attr = m_Instances.attribute("Key_Noise_levels"); }else if(fraction){ attr = m_Instances.attribute("Key_Fraction_instances"); }else { attr = m_Instances.attribute("Key_Total_instances"); } double []pts = new double [attr.numValues()]; for(int k=0; k<attr.numValues(); k++){ pts[k] = Double.parseDouble(attr.value(k)); } Arrays.sort(pts); m_TTester.setPoints(pts); } //================ END EDIT melville ================ 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(); } /** * 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); } } //=============== BEGIN EDIT mbilenko =============== /** * Plot the currently selected output buffer */ protected void plotOutput() { try { StringBuffer sb = m_History.getSelectedBuffer(); if (sb != null) { // dump the output into a temporary file File tempDirFile = new File("/tmp"); final File bufferFile = File.createTempFile("buffer", "", tempDirFile); bufferFile.deleteOnExit(); PrintWriter writer = new PrintWriter(new BufferedOutputStream(new FileOutputStream(bufferFile))); writer.print(sb); writer.close(); // launch the perl script to process the file //Process proc = Runtime.getRuntime().exec("perl weka/gui/experiment/plot.pl " + bufferFile.getPath()); Process proc = Runtime.getRuntime().exec("perl /u/ml/software/weka-latest/weka/gui/experiment/plot.pl " + bufferFile.getPath()); proc.waitFor(); // get a list of generated gnuplot scripts String[] scriptList = tempDirFile.list(new FilenameFilter() { public boolean accept(File f, String s) { return (s.endsWith(".gplot") && s.startsWith(bufferFile.getName())); } }); for (int i = 0; i < scriptList.length; i++) { // launch gnuplot scriptList[i] = tempDirFile.getPath() + "/" + scriptList[i]; System.out.println(scriptList[i]); proc = Runtime.getRuntime().exec("gnuplot -persist " + scriptList[i]); File plotFile = new File(scriptList[i]); plotFile.deleteOnExit(); File dataFile = new File(scriptList[i].replaceAll(".gplot", ".dat")); dataFile.deleteOnExit(); } } else { m_PlotBut.setEnabled(false); } } catch (Exception e) { System.out.println("Problems plotting: " + e); e.printStackTrace(); } } //=============== END EDIT mbilenko =============== /** * 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 + -