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

📄 classifierpanel.java

📁 Java 编写的多种数据挖掘算法 包括聚类、分类、预处理等
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
    if (vp != null) {      visErrors.addActionListener(new ActionListener() {	  public void actionPerformed(ActionEvent e) {	    visualizeClassifierErrors(vp);	  }	});    } else {      visErrors.setEnabled(false);    }    resultListMenu.add(visErrors);    JMenuItem visGrph = new JMenuItem("Visualize tree");    if (grph != null) {	if(((Drawable)temp_classifier).graphType()==Drawable.TREE) {	    visGrph.addActionListener(new ActionListener() {		    public void actionPerformed(ActionEvent e) {			String title;			if (vp != null) title = vp.getName();			else title = selectedName;			visualizeTree(grph, title);		    }		});	}	else if(((Drawable)temp_classifier).graphType()==Drawable.BayesNet) {	    visGrph.setText("Visualize graph");	    visGrph.addActionListener(new ActionListener() {		    public void actionPerformed(ActionEvent e) {			Thread th = new Thread() {				public void run() {				visualizeBayesNet(grph, selectedName);				}			    };			th.start();		    }		});	}	else	    visGrph.setEnabled(false);    } else {      visGrph.setEnabled(false);    }    resultListMenu.add(visGrph);    JMenuItem visMargin = new JMenuItem("Visualize margin curve");    if (preds != null) {      visMargin.addActionListener(new ActionListener() {	  public void actionPerformed(ActionEvent e) {	    try {	      MarginCurve tc = new MarginCurve();	      Instances result = tc.getCurve(preds);	      VisualizePanel vmc = new VisualizePanel();	      vmc.setName(result.relationName());	      vmc.setLog(m_Log);	      PlotData2D tempd = new PlotData2D(result);	      tempd.setPlotName(result.relationName());	      tempd.addInstanceNumberAttribute();	      vmc.addPlot(tempd);	      visualizeClassifierErrors(vmc);	    } catch (Exception ex) {	      ex.printStackTrace();	    }	  }	});    } else {      visMargin.setEnabled(false);    }    resultListMenu.add(visMargin);    JMenu visThreshold = new JMenu("Visualize threshold curve");    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 {		ThresholdCurve tc = new ThresholdCurve();		Instances result = tc.getCurve(preds, classValue);		//VisualizePanel vmc = new VisualizePanel();		ThresholdVisualizePanel vmc = new ThresholdVisualizePanel();		vmc.setROCString("(Area under ROC = " + 				 Utils.doubleToString(ThresholdCurve.getROCArea(result), 4) + ")");		vmc.setLog(m_Log);		vmc.setName(result.relationName()+". (Class value "+			    classAtt.value(classValue)+")");		PlotData2D tempd = new PlotData2D(result);		tempd.setPlotName(result.relationName());		tempd.addInstanceNumberAttribute();		vmc.addPlot(tempd);		visualizeClassifierErrors(vmc);	      } catch (Exception ex) {		ex.printStackTrace();	      }	      }	  });	  visThreshold.add(clv);      }    } else {      visThreshold.setEnabled(false);    }    resultListMenu.add(visThreshold);    JMenu visCost = new JMenu("Visualize cost curve");    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()+". (Class value "+			    classAtt.value(classValue)+")");		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();	      }	    }	  });	visCost.add(clv);      }    } else {      visCost.setEnabled(false);    }    resultListMenu.add(visCost);        JMenu visPlugins = new JMenu("Plugins");    Vector pluginsVector = ClassDiscovery.find(VisualizePlugin.class, "weka.gui.visualize.plugins");    boolean availablePlugins = false;    for (int i=0; i<pluginsVector.size(); i++) {      String className = (String)(pluginsVector.elementAt(i));      try {        if (className.matches(".*\\.VisualizePlugin"))          continue;        VisualizePlugin plugin = (VisualizePlugin)(Class.forName(className).newInstance());        if (plugin==null)          continue;        availablePlugins = true;        JMenuItem pluginMenuItem = plugin.getVisualizeMenuItem(preds, classAtt);        Version version = new Version();        if (pluginMenuItem != null) {          if (version.compareTo(plugin.getMinVersion()) < 0)            pluginMenuItem.setText(pluginMenuItem.getText() + " (weka outdated)");          if (version.compareTo(plugin.getMaxVersion()) >= 0)            pluginMenuItem.setText(pluginMenuItem.getText() + " (plugin outdated)");          visPlugins.add(pluginMenuItem);        }      }      catch (ClassNotFoundException cnfe) {        //System.out.println("Visualize plugin ClassNotFoundException " + cnfe.getMessage());      }      catch (InstantiationException ie) {        //System.out.println("Visualize plugin InstantiationException " + ie.getMessage());      }      catch (IllegalAccessException iae) {        //System.out.println("Visualize plugin IllegalAccessException " + iae.getMessage());      }    }    if (availablePlugins)      resultListMenu.add(visPlugins);    resultListMenu.show(m_History.getList(), x, y);  }  /**   * Pops up a TreeVisualizer for the classifier from the currently   * selected item in the results list   * @param dottyString the description of the tree in dotty format   * @param treeName the title to assign to the display   */  protected void visualizeTree(String dottyString, String treeName) {    final javax.swing.JFrame jf =       new javax.swing.JFrame("Weka Classifier Tree Visualizer: "+treeName);    jf.setSize(500,400);    jf.getContentPane().setLayout(new BorderLayout());    TreeVisualizer tv = new TreeVisualizer(null,					   dottyString,					   new PlaceNode2());    jf.getContentPane().add(tv, BorderLayout.CENTER);    jf.addWindowListener(new java.awt.event.WindowAdapter() {	public void windowClosing(java.awt.event.WindowEvent e) {	  jf.dispose();	}      });        jf.setVisible(true);    tv.fitToScreen();  }  /**   * Pops up a GraphVisualizer for the BayesNet classifier from the currently   * selected item in the results list   * @param XMLBIF the description of the graph in XMLBIF ver. 0.3   */  protected void visualizeBayesNet(String XMLBIF, String graphName) {    final javax.swing.JFrame jf =       new javax.swing.JFrame("Weka Classifier Graph Visualizer: "+graphName);    jf.setSize(500,400);    jf.getContentPane().setLayout(new BorderLayout());    GraphVisualizer gv = new GraphVisualizer();    try { gv.readBIF(XMLBIF);    }    catch(BIFFormatException be) { System.err.println("unable to visualize BayesNet"); be.printStackTrace(); }    gv.layoutGraph();    jf.getContentPane().add(gv, BorderLayout.CENTER);    jf.addWindowListener(new java.awt.event.WindowAdapter() {	public void windowClosing(java.awt.event.WindowEvent e) {	  jf.dispose();	}      });        jf.setVisible(true);  }  /**   * Pops up a VisualizePanel for visualizing the data and errors for    * the classifier from the currently selected item in the results list   * @param sp the VisualizePanel to pop up.   */  protected void visualizeClassifierErrors(VisualizePanel sp) {       if (sp != null) {      String plotName = sp.getName(); 	final javax.swing.JFrame jf = 	new javax.swing.JFrame("Weka Classifier Visualize: "+plotName);	jf.setSize(600,400);	jf.getContentPane().setLayout(new BorderLayout());	jf.getContentPane().add(sp, BorderLayout.CENTER);	jf.addWindowListener(new java.awt.event.WindowAdapter() {	  public void windowClosing(java.awt.event.WindowEvent e) {	    jf.dispose();	  }	});    jf.setVisible(true);    }  }  /**   * Save the currently selected classifier output to a file.   * @param name the name of the buffer to save   */  protected void saveBuffer(String name) {    StringBuffer sb = m_History.getNamedBuffer(name);    if (sb != null) {      if (m_SaveOut.save(sb)) {	m_Log.logMessage("Save successful.");      }    }  }    /**   * Stops the currently running classifier (if any).   */  protected void stopClassifier() {    if (m_RunThread != null) {      m_RunThread.interrupt();            // This is deprecated (and theoretically the interrupt should do).      m_RunThread.stop();    }  }  /**   * Saves the currently selected classifier   */  protected void saveClassifier(String name, Classifier classifier,				Instances trainHeader) {    File sFile = null;    boolean saveOK = true;     int returnVal = m_FileChooser.showSaveDialog(this);    if (returnVal == JFileChooser.APPROVE_OPTION) {      sFile = m_FileChooser.getSelectedFile();      if (!sFile.getName().toLowerCase().endsWith(MODEL_FILE_EXTENSION)) {	sFile = new File(sFile.getParent(), sFile.getName() 			 + MODEL_FILE_EXTENSION);      }      m_Log.statusMessage("Saving model to file...");            try {	OutputStream os = new FileOutputStream(sFile);	if (sFile.getName().endsWith(".gz")) {	  os = new GZIPOutputStream(os);	}	ObjectOutputStream objectOutputStream = new ObjectOutputStream(os);	objectOutputStream.writeObject(classifier);	if (trainHeader != null) objectOutputStream.writeObject(trainHeader);	objectOutputStream.flush();	objectOutputStream.close();      } catch (Exception e) {		JOptionPane.showMessageDialog(null, e, "Save Failed",				      JOptionPane.ERROR_MESSAGE);	saveOK = false;      }      if (saveOK)	m_Log.logMessage("Saved model (" + name			 + ") to file '" + sFile.getName() + "'");      m_Log.statusMessage("OK");    }  }  /**   * Loads a classifier   */  protected void loadClassifier() {    int returnVal = m_FileChooser.showOpenDialog(this);    if (returnVal == JFileChooser.APPROVE_OPTION) {      File selected = m_FileChooser.getSelectedFile();      Classifier classifier = null;      Instances trainHeader = null;      m_Log.statusMessage("Loading model from file...");      try {	InputStream is = new FileInputStream(selected);	if (selected.getName().endsWith(".gz")) {	  is = new GZIPInputStream(is);	}	ObjectInputStream objectInputStream = new ObjectInputStream(is);	classifier = (Classifier) objectInputStream.readObject();	try { // see if we can load the header	  trainHeader = (Instances) objectInputStream.readObject();	} catch (Exception e) {} // don't fuss if we can't	objectInputStream.close();      } catch (Exception e) {		JOptionPane.showMessageDialog(null, e, "Load Failed",				      JOptionPane.ERROR_MESSAGE);      }	      m_Log.statusMessage("OK");            if (classifier != null) {	m_Log.logMessage("Loaded model from file '" + selected.getName()+ "'");	String name = (new SimpleDateFormat("HH:mm:ss - ")).format(new Date());	String cname = classifier.getClass().getName();	if (cname.startsWith("weka.classifiers."))	  cname = cname.substring("weka.classifiers.".length());	name += cname + " from file '" + selected.getName() + "'";	StringBuffer outBuff = new StringBuffer();	outBuff.append("=== Model information ===\n\n");	outBuff.append("Filename:     " + selected.getName() + "\n");	outBuff.append("Scheme:       " + cname);	if (classifier instanceof OptionHandler) {	  String [] o = ((OptionHandler) classifier).getOptions();	  outBuff.append(" " + Utils.joinOptions(o));	}	outBuff.append("\n");	if (trainHeader != null) {	  outBuff.append("Relation:     " + trainHeader.relationName() + '\n');	  outBuff.append("Attributes:   " + trainHeader.numAttributes() + '\n');	  if (trainHeader.numAttributes() < 100) {	    for (int i = 0; i < trainHeader.numAttributes(); i++) {	      outBuff.append("              " + trainHeader.attribute(i).name()			     + '\n');	    }	  } else {	    outBuff.append("              [list of attributes omitted]\n");	  }	} else {	  outBuff.append("\n

⌨️ 快捷键说明

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