⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 preprocesspanel.java

📁 wekaUT是 university texas austin 开发的基于weka的半指导学习(semi supervised learning)的分类器
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
				    "Can't apply filter at this time,\n"				    + "currently busy with other IO",				    "Apply Filter",				    JOptionPane.WARNING_MESSAGE);    }  }  /**   * Queries the user for a file to save instances as, then saves the   * instances in a background process. This is done in the IO   * thread, and an error message is popped up if the IO thread is busy.   */  public void saveWorkingInstancesToFileQ() {        if (m_IOThread == null) {      int returnVal = m_FileChooser.showSaveDialog(this);      if (returnVal == JFileChooser.APPROVE_OPTION) {	File sFile = m_FileChooser.getSelectedFile();	if (!sFile.getName().toLowerCase().endsWith(Instances.FILE_EXTENSION)) {	  sFile = new File(sFile.getParent(), sFile.getName()                            + Instances.FILE_EXTENSION);	}	File selected = sFile;	saveInstancesToFile(selected, m_Instances);      }    } else {      JOptionPane.showMessageDialog(this,				    "Can't save at this time,\n"				    + "currently busy with other IO",				    "Save Instances",				    JOptionPane.WARNING_MESSAGE);    }  }    /**   * Queries the user for a file to load instances from, then loads the   * instances in a background process. This is done in the IO   * thread, and an error message is popped up if the IO thread is busy.   */  public void setInstancesFromFileQ() {        if (m_IOThread == null) {      int returnVal = m_FileChooser.showOpenDialog(this);      if (returnVal == JFileChooser.APPROVE_OPTION) {	File selected = m_FileChooser.getSelectedFile();	try {	  addUndoPoint();	} catch (Exception ignored) {}	setInstancesFromFile(selected);      }    } else {      JOptionPane.showMessageDialog(this,				    "Can't load at this time,\n"				    + "currently busy with other IO",				    "Load Instances",				    JOptionPane.WARNING_MESSAGE);    }  }  /**   * Queries the user for a URL to a database to load instances from,    * then loads the instances in a background process. This is done in the IO   * thread, and an error message is popped up if the IO thread is busy.   */  public void setInstancesFromDBQ() {    if (m_IOThread == null) {      try {	InstanceQuery InstQ = 	  (InstanceQuery)m_DatabaseQueryEditor.getValue();		InstQ.connectToDatabase();      	try {	  addUndoPoint();	} catch (Exception ignored) {}	setInstancesFromDB(InstQ);      } catch (Exception ex) {	JOptionPane.showMessageDialog(this,				      "Problem connecting to database:\n"				      + ex.getMessage(),				      "Load Instances",				      JOptionPane.ERROR_MESSAGE);      }          } else {      JOptionPane.showMessageDialog(this,				     "Can't load at this time,\n"				    + "currently busy with other IO",				    "Load Instances",				    JOptionPane.WARNING_MESSAGE);    }  }      /**   * Queries the user for a URL to load instances from, then loads the   * instances in a background process. This is done in the IO   * thread, and an error message is popped up if the IO thread is busy.   */  public void setInstancesFromURLQ() {        if (m_IOThread == null) {      try {	String urlName = (String) JOptionPane.showInputDialog(this,			"Enter the source URL",			"Load Instances",			JOptionPane.QUESTION_MESSAGE,			null,			null,			m_LastURL);	if (urlName != null) {	  m_LastURL = urlName;	  URL url = new URL(urlName);	  try {	    addUndoPoint();	  } catch (Exception ignored) {}	  setInstancesFromURL(url);	}      } catch (Exception ex) {	ex.printStackTrace();	JOptionPane.showMessageDialog(this,				      "Problem with URL:\n"				      + ex.getMessage(),				      "Load Instances",				      JOptionPane.ERROR_MESSAGE);      }    } else {      JOptionPane.showMessageDialog(this,				    "Can't load at this time,\n"				    + "currently busy with other IO",				    "Load Instances",				    JOptionPane.WARNING_MESSAGE);    }  }    /**   * Saves the current instances to the supplied file.   *   * @param f a value of type 'File'   * @param inst the instances to save   */  protected void saveInstancesToFile(final File f, final Instances inst) {          if (m_IOThread == null) {      m_IOThread = new Thread() {	public void run() {	  try {	    m_Log.statusMessage("Saving to file...");	    Writer w = new BufferedWriter(new FileWriter(f));	    Instances h = new Instances(inst, 0);	    w.write(h.toString());	    w.write("\n");	    for (int i = 0; i < inst.numInstances(); i++) {	      w.write(inst.instance(i).toString());	      w.write("\n");	    }	    w.close();	    m_Log.statusMessage("OK");	  } catch (Exception ex) {	    ex.printStackTrace();	    m_Log.logMessage(ex.getMessage());	  }	  m_IOThread = null;	}      };      m_IOThread.setPriority(Thread.MIN_PRIORITY); // UI has most priority      m_IOThread.start();    } else {      JOptionPane.showMessageDialog(this,				    "Can't save at this time,\n"				    + "currently busy with other IO",				    "Save Instances",				    JOptionPane.WARNING_MESSAGE);    }  }  /**   * Pops up generic object editor with list of conversion filters   *   * @param f the File   */  private void converterQuery(final File f) {    final GenericObjectEditor convEd = new GenericObjectEditor(true);    try {      convEd.setClassType(weka.core.converters.Loader.class);      convEd.setValue(new weka.core.converters.CSVLoader());      ((GenericObjectEditor.GOEPanel)convEd.getCustomEditor())	.addOkListener(new ActionListener() {	    public void actionPerformed(ActionEvent e) {	      tryConverter((Loader)convEd.getValue(), f);	    }	  });    } catch (Exception ex) {    }    PropertyDialog pd = new PropertyDialog(convEd, 100, 100);  }  /**   * Applies the selected converter   *   * @param cnv the converter to apply to the input file   * @param f the input file   */  private void tryConverter(final Loader cnv, final File f) {    if (m_IOThread == null) {      m_IOThread = new Thread() {	  public void run() {	    try {	      cnv.setSource(f);	      Instances inst = cnv.getDataSet();	      setInstances(inst);	    } catch (Exception ex) {	      m_Log.statusMessage(cnv.getClass().getName()+" failed to load "				 +f.getName());	      JOptionPane.showMessageDialog(PreprocessPanel.this,					    cnv.getClass().getName()+" failed to load '"					    + f.getName() + "'.\n"					    + "Reason:\n" + ex.getMessage(),					    "Convert File",					    JOptionPane.ERROR_MESSAGE);	      m_IOThread = null;	      converterQuery(f);	    }	    m_IOThread = null;	  }	};      m_IOThread.setPriority(Thread.MIN_PRIORITY); // UI has most priority      m_IOThread.start();    }  }  /**   * Loads results from a set of instances contained in the supplied   * file. This is started in the IO thread, and a dialog is popped up   * if there's a problem.   *   * @param f a value of type 'File'   */  public void setInstancesFromFile(final File f) {          if (m_IOThread == null) {      m_IOThread = new Thread() {	public void run() {	  try {	    m_Log.statusMessage("Reading from file...");	    Reader r = new BufferedReader(new FileReader(f));	    setInstances(new Instances(r));	    r.close();	  } catch (Exception ex) {	    m_Log.statusMessage("File '" + f.getName() + "' not recognised as an arff file.");	    m_IOThread = null;	    if (JOptionPane.showOptionDialog(PreprocessPanel.this,					     "File '" + f.getName()					     + "' not recognised as an arff file.\n"					     + "Reason:\n" + ex.getMessage(),					     "Load Instances",					     0,					     JOptionPane.ERROR_MESSAGE,					     null,					     new String[] {"OK", "Use Converter"},					     null) == 1) {	    	      converterQuery(f);	    }	  }	  m_IOThread = null;	}      };      m_IOThread.setPriority(Thread.MIN_PRIORITY); // UI has most priority      m_IOThread.start();    } else {      JOptionPane.showMessageDialog(this,				    "Can't load at this time,\n"				    + "currently busy with other IO",				    "Load Instances",				    JOptionPane.WARNING_MESSAGE);    }  }    /**   * Loads instances from a database   *   * @param iq the InstanceQuery object to load from (this is assumed   * to have been already connected to a valid database).   */  public void setInstancesFromDB(final InstanceQuery iq) {    if (m_IOThread == null) {      m_IOThread = new Thread() {	public void run() {	  	  try {	    m_Log.statusMessage("Reading from database...");	    final Instances i = iq.retrieveInstances();	    SwingUtilities.invokeAndWait(new Runnable() {	      public void run() {		setInstances(new Instances(i));	      }	    });	    iq.disconnectFromDatabase();	  } catch (Exception ex) {	    m_Log.statusMessage("Problem executing DB query "+m_SQLQ);	    JOptionPane.showMessageDialog(PreprocessPanel.this,					  "Couldn't read from database:\n"					  + ex.getMessage(),					  "Load Instances",					  JOptionPane.ERROR_MESSAGE);	  }	   m_IOThread = null;	}      };      m_IOThread.setPriority(Thread.MIN_PRIORITY); // UI has most priority      m_IOThread.start();    } else {       JOptionPane.showMessageDialog(this,				    "Can't load at this time,\n"				    + "currently busy with other IO",				    "Load Instances",				    JOptionPane.WARNING_MESSAGE);    }  }  /**   * Loads instances from a URL.   *   * @param u the URL to load from.   */  public void setInstancesFromURL(final URL u) {    if (m_IOThread == null) {      m_IOThread = new Thread() {	public void run() {	  try {	    m_Log.statusMessage("Reading from URL...");	    Reader r = new BufferedReader(		       new InputStreamReader(u.openStream()));	    setInstances(new Instances(r));	    r.close();	  } catch (Exception ex) {	    ex.printStackTrace();	    m_Log.statusMessage("Problem reading " + u);	    JOptionPane.showMessageDialog(PreprocessPanel.this,					  "Couldn't read from URL:\n"					  + u + "\n"					  + ex.getMessage(),					  "Load Instances",					  JOptionPane.ERROR_MESSAGE);	  }	  m_IOThread = null;	}      };      m_IOThread.setPriority(Thread.MIN_PRIORITY); // UI has most priority      m_IOThread.start();    } else {      JOptionPane.showMessageDialog(this,				    "Can't load at this time,\n"				    + "currently busy with other IO",				    "Load Instances",				    JOptionPane.WARNING_MESSAGE);    }  }  /**   * Backs up the current state of the dataset, so the changes can be undone.   */  public void addUndoPoint() throws Exception {    // create temporary file    File tempFile = File.createTempFile("weka", null);    tempFile.deleteOnExit();    // write current dataset to file    Writer w = new BufferedWriter(new FileWriter(tempFile));    Instances h = new Instances(m_Instances, 0);    w.write(h.toString());    w.write("\n");    for (int i = 0; i < m_Instances.numInstances(); i++) {      w.write(m_Instances.instance(i).toString());      w.write("\n");    }    w.close();    // update undo file list    if (m_tempUndoFiles[m_tempUndoIndex] != null) {      // remove undo points that are too old      m_tempUndoFiles[m_tempUndoIndex].delete();    }    m_tempUndoFiles[m_tempUndoIndex] = tempFile;    if (++m_tempUndoIndex >= m_tempUndoFiles.length) {      // wrap pointer around      m_tempUndoIndex = 0;    }    m_UndoBut.setEnabled(true);  }  /**   * Reverts to the last backed up version of the dataset.   */  public void undo() {    if (--m_tempUndoIndex < 0) {      // wrap pointer around      m_tempUndoIndex = m_tempUndoFiles.length-1;    }        if (m_tempUndoFiles[m_tempUndoIndex] != null) {      // load instances from the temporary file      setInstancesFromFile(m_tempUndoFiles[m_tempUndoIndex]);      // update undo file list      m_tempUndoFiles[m_tempUndoIndex] = null;    }        // update undo button    int temp = m_tempUndoIndex-1;    if (temp < 0) {      temp = m_tempUndoFiles.length-1;    }    m_UndoBut.setEnabled(m_tempUndoFiles[temp] != null);  }    /**   * Tests out the instance-preprocessing panel from the command line.   *   * @param args ignored   */  public static void main(String [] args) {    try {      final JFrame jf = new JFrame("Weka Knowledge Explorer: Preprocess");      jf.getContentPane().setLayout(new BorderLayout());      final PreprocessPanel sp = new PreprocessPanel();      jf.getContentPane().add(sp, BorderLayout.CENTER);      weka.gui.LogPanel lp = new weka.gui.LogPanel();      sp.setLog(lp);      jf.getContentPane().add(lp, BorderLayout.SOUTH);      jf.addWindowListener(new WindowAdapter() {	public void windowClosing(WindowEvent e) {	  jf.dispose();	  System.exit(0);	}      });      jf.pack();      jf.setSize(800, 600);      jf.setVisible(true);    } catch (Exception ex) {      ex.printStackTrace();      System.err.println(ex.getMessage());    }  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -