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

📄 matrixpanel.java

📁 wekaUT是 university texas austin 开发的基于weka的半指导学习(semi supervised learning)的分类器
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
	  gbc.gridwidth = gbc.RELATIVE;	  p1.add(rseedLb, gbc); gbc.weightx = 0;	  gbc.gridwidth = gbc.REMAINDER; gbc.weightx=1;	  p1.add(rseedTxt, gbc);	  gbc.insets = new Insets(8,2,0,2); gbc.weightx=0;	  p1.add(percentLb, gbc);	  gbc.insets = new Insets(0,2,2,2); gbc.gridwidth = gbc.RELATIVE;	  p1.add(percent2Lb, gbc);	  gbc.gridwidth = gbc.REMAINDER; gbc.weightx=1;	  p1.add(percentTxt, gbc);	  gbc.insets = new Insets(8,2,2,2);	  if(m_data.attribute(m_classAttrib.getSelectedIndex()).isNominal()) {	    JPanel p2 = new JPanel( gbl );	    p2.add(origDist, gbc);	    p2.add(unifDist, gbc);	    p2.setBorder( BorderFactory.createTitledBorder("Class Distribution") );	    p1.add(p2, gbc);	  }					  JPanel p3 = new JPanel( gbl );	  gbc.fill = gbc.HORIZONTAL; gbc.gridwidth = gbc.REMAINDER;	  gbc.weightx = 1;  gbc.weighty = 0;	  p3.add(p1, gbc);	  gbc.insets = new Insets(8,4,8,4);	  p3.add(doneBt, gbc);					   	  jd.getContentPane().setLayout( new BorderLayout() );	  jd.getContentPane().add(p3, BorderLayout.NORTH);	  jd.pack();	  jd.setLocation( m_resampleBt.getLocationOnScreen().x,			  m_resampleBt.getLocationOnScreen().y-jd.getHeight() );	  jd.show();	}      });    optionsPanel = new JPanel( new GridBagLayout() ); //all the rest of the panels are in here.    final JPanel p2 = new JPanel( new BorderLayout() );  //this has class colour panel    final JPanel p3 = new JPanel( new GridBagLayout() ); //this has update and select buttons    final JPanel p4 = new JPanel( new GridBagLayout() ); //this has the slider bars and combobox    GridBagConstraints gbc = new GridBagConstraints();         m_sizeD = m_sizeLb.getPreferredSize();    m_resampleBt.setPreferredSize( m_selAttrib.getPreferredSize() );    gbc.fill = gbc.HORIZONTAL;    gbc.anchor = gbc.NORTHWEST;    gbc.insets = new Insets(2,2,2,2);    p4.add(m_sizeLb, gbc);    gbc.weightx=1; gbc.gridwidth = gbc.REMAINDER;    p4.add(m_cellSize, gbc);    gbc.weightx=0; gbc.gridwidth = gbc.RELATIVE;    p4.add( new JLabel("Jitter: "), gbc);    gbc.weightx=1; gbc.gridwidth = gbc.REMAINDER;    p4.add(m_jitter, gbc);    p4.add(m_classAttrib, gbc);          gbc.gridwidth = gbc.REMAINDER;    gbc.weightx=1;    gbc.fill = gbc.NONE;    p3.add(m_updateBt, gbc);    p3.add(m_selAttrib, gbc);    gbc.gridwidth = gbc.RELATIVE;    gbc.weightx = 0;    gbc.fill = gbc.VERTICAL;    gbc.anchor = gbc.WEST;    p3.add(m_resampleBt, gbc);    gbc.gridwidth = gbc.REMAINDER;    p3.add(m_resamplePercent, gbc);        p2.setBorder(BorderFactory.createTitledBorder("Class Colour"));    p2.add(m_cp, BorderLayout.SOUTH);    gbc.insets = new Insets(8,5,2,5);    gbc.anchor = gbc.NORTHWEST; gbc.fill = gbc.HORIZONTAL; gbc.weightx=1;    gbc.gridwidth = gbc.RELATIVE;    optionsPanel.add(p4, gbc);    gbc.gridwidth = gbc.REMAINDER;    optionsPanel.add(p3, gbc);    optionsPanel.add(p2, gbc);    this.addComponentListener( new ComponentAdapter() {	public void componentResized(ComponentEvent cv) {	  m_js.setMinimumSize( new Dimension(MatrixPanel.this.getWidth(),					     MatrixPanel.this.getHeight()					     -optionsPanel.getPreferredSize().height-10));	  jp.setDividerLocation( MatrixPanel.this.getHeight()-optionsPanel.getPreferredSize().height-10 );	}      });    optionsPanel.setMinimumSize( new Dimension(0,0) );    jp = new JSplitPane(JSplitPane.VERTICAL_SPLIT, m_js, optionsPanel);    jp.setOneTouchExpandable(true);    jp.setResizeWeight(1);    this.setLayout( new BorderLayout() );    this.add(jp, BorderLayout.CENTER);    /** Setting up the initial color list **/    for(int i=0; i<m_defaultColors.length-1; i++)      m_colorList.addElement(m_defaultColors[i]);          /** Initializing internal fields and components **/    m_plotsPanel = new Plot();    m_plotsPanel.setLayout(null);    m_plotsPanel.setFont( new java.awt.Font("Dialog", java.awt.Font.BOLD, 11) );    m_js.getHorizontalScrollBar().setUnitIncrement( 10 );    m_js.getVerticalScrollBar().setUnitIncrement( 10 );     m_js.setViewportView( m_plotsPanel );    m_cp.setInstances(m_data);    m_cp.setBorder(BorderFactory.createEmptyBorder(15,10,10,10));    m_cp.addRepaintNotify(m_plotsPanel);    //m_updateBt.doClick(); //not until setting up the instances  }  /** Initializes internal data fields, i.e. data values, type, missing and color cache arrays    */  public void initInternalFields() {    Instances inst = m_data;    m_classIndex = m_classAttrib.getSelectedIndex();    double minC=0, maxC=0;    m_data.setClassIndex(m_classIndex);    /** Resampling  **/    if(Double.parseDouble(m_resamplePercent.getText())<100) {      try {	if( m_data.attribute(m_classIndex).isNominal() ) {	  weka.filters.supervised.instance.Resample r = new weka.filters.supervised.instance.Resample();		  	  r.setRandomSeed( Integer.parseInt(m_rseed.getText()) );	  r.setSampleSizePercent( Double.parseDouble(m_resamplePercent.getText()) );		  	  if(origDist.isSelected())	    r.setBiasToUniformClass(0);	  else	    r.setBiasToUniformClass(1);	  r.setInputFormat(m_data);	  inst = weka.filters.Filter.useFilter(m_data, r);	}	else {	  weka.filters.unsupervised.instance.Resample r = new weka.filters.unsupervised.instance.Resample();		  	  r.setRandomSeed( Integer.parseInt(m_rseed.getText()) );	  r.setSampleSizePercent( Double.parseDouble(m_resamplePercent.getText()) );	  r.setInputFormat(m_data);	  inst = weka.filters.Filter.useFilter(m_data, r);	}      }      catch(Exception ex) { System.out.println("Error occurred while sampling"); ex.printStackTrace();  }    }        m_points = new int[inst.numInstances()][inst.numAttributes()];    m_pointColors = new int[inst.numInstances()];    m_missing = new boolean[inst.numInstances()][inst.numAttributes()];    m_type = new int[2][inst.numAttributes()];    jitterVals = new int[inst.numInstances()][2];          /** Setting up the color list for non-numeric attribute as well as jittervals**/    if(!(inst.attribute(m_classIndex).isNumeric())) {	        for(int i=m_colorList.size(); i<inst.attribute(m_classIndex).numValues()+1; i++) {	Color pc = m_defaultColors[i % 10];	int ija =  i / 10;	ija *= 2; 	for (int j=0;j<ija;j++) {	  pc = pc.darker();     	}	m_colorList.addElement(pc);      }	        for(int i=0; i<inst.numInstances(); i++) {	//set to black for missing class value which is last colour is default list	if(inst.instance(i).isMissing(m_classIndex))	  m_pointColors[i] =  m_defaultColors.length-1;	else	  m_pointColors[i] = (int) inst.instance(i).value(m_classIndex);	jitterVals[i][0] = rnd.nextInt(m_jitter.getValue()+1)	  - m_jitter.getValue()/2;	jitterVals[i][1] = rnd.nextInt(m_jitter.getValue()+1)	  - m_jitter.getValue()/2;	            }    }    /** Setting up color variations for numeric attribute as well as jittervals **/    else {      for(int i=0; i<inst.numInstances(); i++) {	if(!(inst.instance(i).isMissing(m_classIndex))) {	  minC = maxC = inst.instance(i).value(m_classIndex);	  break;	}      }	        for(int i=1; i<inst.numInstances(); i++) {	if(!(inst.instance(i).isMissing(m_classIndex))) {	  if(minC > inst.instance(i).value(m_classIndex))	    minC = inst.instance(i).value(m_classIndex);	  if(maxC < inst.instance(i).value(m_classIndex))	    maxC = inst.instance(i).value(m_classIndex);	}      }	        for(int i=0; i<inst.numInstances(); i++) {	double r = (inst.instance(i).value(m_classIndex) - minC) / (maxC - minC);	r = (r * 240) + 15;	m_pointColors[i] = (int)r;	jitterVals[i][0] = rnd.nextInt(m_jitter.getValue()+1)	  - m_jitter.getValue()/2;	jitterVals[i][1] = rnd.nextInt(m_jitter.getValue()+1)	  - m_jitter.getValue()/2;      }    }    /** Creating local cache of the data values **/    double min[]=new double[inst.numAttributes()], max=0;    double ratio[] = new double[inst.numAttributes()];    double cellSize = m_cellSize.getValue(), temp1=0, temp2=0;    for(int j=0; j<inst.numAttributes(); j++) {      int i;      for(i=0; i<inst.numInstances(); i++) {	min[j] = max = 0;	if(!(inst.instance(i).isMissing(j))) {	  min[j] = max = inst.instance(i).value(j);	  break;	}      }      for( i=i; i<inst.numInstances(); i++ ) {	if(!(inst.instance(i).isMissing(j))) {	  if(inst.instance(i).value(j) < min[j])	    min[j] = inst.instance(i).value(j);	  if(inst.instance(i).value(j) > max)	    max = inst.instance(i).value(j);	}      }      ratio[j] =  cellSize / (max - min[j]);    }    for(int j=0; j<inst.numAttributes(); j++) {      if(inst.attribute(j).isNominal() || inst.attribute(j).isString()) {	m_type[0][j] = 1;  m_type[1][j] = inst.attribute(j).numValues();	temp1 = cellSize/(double)m_type[1][j];	temp2 = temp1/2;	for(int i=0; i<inst.numInstances(); i++) {	  m_points[i][j] = (int) Math.round(temp2+temp1*inst.instance(i).value(j));	  if(inst.instance(i).isMissing(j))	    m_missing[i][j] = true;    //represents missing value	}      }      else {	m_type[0][j] = m_type[1][j] = 0;	for(int i=0; i<inst.numInstances(); i++) {	  m_points[i][j] = (int) Math.round((inst.instance(i).value(j)					     -min[j])*ratio[j]);		  if(inst.instance(i).isMissing(j))	    m_missing[i][j] = true;    //represents missing value	}      }    }    m_cp.setColours(m_colorList);  }  /** Sets up the UI's attributes lists    */    public void setupAttribLists() {    String [] tempAttribNames = new String[m_data.numAttributes()];    String type;    m_classAttrib.removeAllItems();    for(int i=0; i<tempAttribNames.length; i++) {      switch (m_data.attribute(i).type()) {      case Attribute.NOMINAL:	type = " (Nom)";	break;      case Attribute.NUMERIC:	type = " (Num)";	break;      case Attribute.STRING:	type = " (Str)";	break;      default:	type = " (???)";      }      tempAttribNames[i] = new String("Colour: "+m_data.attribute(i).name()+" "+type);      m_classAttrib.addItem(tempAttribNames[i]);    }    m_classAttrib.setSelectedIndex( tempAttribNames.length-1 );    m_attribList.setListData(tempAttribNames);    m_attribList.setSelectionInterval(0, tempAttribNames.length-1);  }  /** Calculates the percentage to resample    */  public void setPercent() {    if(m_data.numInstances() > 700) {      String percnt = Double.toString(500D/m_data.numInstances()*100);	        if( percnt.indexOf('.')+3 < percnt.length() ) {	m_resamplePercent.setText(percnt.substring(0, percnt.indexOf('.')-1)+				  percnt.substring(percnt.indexOf('.'), percnt.indexOf('.')+3) );      }      else	m_resamplePercent.setText(percnt);    }    else      m_resamplePercent.setText("100");  }  /** This method changes the Instances object of this class to a new one. It also does all the necessary      initializations for displaying the panel. This must be called before trying to display the panel.      @param newInst The new set of Instances  */  public void setInstances(Instances newInst) {    m_data = newInst;

⌨️ 快捷键说明

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