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

📄 classifierpanel.java

📁 代码是一个分类器的实现,其中使用了部分weka的源代码。可以将项目导入eclipse运行
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
	public void actionPerformed(ActionEvent e) {	  m_History.removeResult(selectedName);	}      });    } else {      deleteOutput.setEnabled(false);    }    resultListMenu.add(deleteOutput);    resultListMenu.addSeparator();        JMenuItem loadModel = new JMenuItem("Load model");    loadModel.addActionListener(new ActionListener() {	public void actionPerformed(ActionEvent e) {	  loadClassifier();	}      });    resultListMenu.add(loadModel);    FastVector o = null;    if (selectedName != null) {      o = (FastVector)m_History.getNamedObject(selectedName);    }    VisualizePanel temp_vp = null;    String temp_grph = null;    FastVector temp_preds = null;    Attribute temp_classAtt = null;    Classifier temp_classifier = null;    Instances temp_trainHeader = null;          if (o != null) {       for (int i = 0; i < o.size(); i++) {	Object temp = o.elementAt(i);	if (temp instanceof Classifier) {	  temp_classifier = (Classifier)temp;	} else if (temp instanceof Instances) { // training header	  temp_trainHeader = (Instances)temp;	} else if (temp instanceof VisualizePanel) { // normal errors	  temp_vp = (VisualizePanel)temp;	} else if (temp instanceof String) { // graphable output	  temp_grph = (String)temp;	} else if (temp instanceof FastVector) { // predictions	  temp_preds = (FastVector)temp;	} else if (temp instanceof Attribute) { // class attribute	  temp_classAtt = (Attribute)temp;	}      }    }    final VisualizePanel vp = temp_vp;    final String grph = temp_grph;    final FastVector preds = temp_preds;    final Attribute classAtt = temp_classAtt;    final Classifier classifier = temp_classifier;    final Instances trainHeader = temp_trainHeader;        JMenuItem saveModel = new JMenuItem("Save model");    if (classifier != null) {      saveModel.addActionListener(new ActionListener() {	  public void actionPerformed(ActionEvent e) {	    saveClassifier(selectedName, classifier, trainHeader);	  }	});    } else {      saveModel.setEnabled(false);    }    resultListMenu.add(saveModel);    JMenuItem reEvaluate =      new JMenuItem("Re-evaluate model on current test set");    if (classifier != null && m_TestLoader != null) {      reEvaluate.addActionListener(new ActionListener() {	  public void actionPerformed(ActionEvent e) {	    reevaluateModel(selectedName, classifier, trainHeader);	  }	});    } else {      reEvaluate.setEnabled(false);    }    resultListMenu.add(reEvaluate);        resultListMenu.addSeparator();        JMenuItem visErrors = new JMenuItem("Visualize classifier errors");    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   * @param graphName the name of the graph   */  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   *    * @param name the name of the run   * @param classifier the classifier to save   * @param trainHeader the header of the training instances   */  protected void saveClassifier(String name, Classifier classifier,				Instances trainHeader) {    File sFile = null;    boolean saveOK = true;     int returnVal = m_Fil

⌨️ 快捷键说明

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