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

📄 simplesetuppanel.java

📁 一个数据挖掘软件ALPHAMINERR的整个过程的JAVA版源代码
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
	  m_Exp.setNotes(m_NotesText.getText());
	}
      });
    
    // Set up the GUI layout
    JPanel buttons = new JPanel();
    GridBagLayout gb = new GridBagLayout();
    GridBagConstraints constraints = new GridBagConstraints();
    buttons.setBorder(BorderFactory.createEmptyBorder(10, 5, 10, 5));
    buttons.setLayout(gb);
    constraints.gridx=0;constraints.gridy=0;constraints.weightx=5;
    constraints.fill = GridBagConstraints.HORIZONTAL;
    constraints.gridwidth=1;constraints.gridheight=1;
    constraints.insets = new Insets(0,2,0,2);
    buttons.add(m_OpenBut,constraints);
    constraints.gridx=1;constraints.gridy=0;constraints.weightx=5;
    constraints.gridwidth=1;constraints.gridheight=1;
    buttons.add(m_SaveBut,constraints);
    constraints.gridx=2;constraints.gridy=0;constraints.weightx=5;
    constraints.gridwidth=1;constraints.gridheight=1;
    buttons.add(m_NewBut,constraints);

    JPanel destName = new JPanel();
    destName.setLayout(new BorderLayout(5, 5));
    destName.add(m_ResultsDestinationPathLabel, BorderLayout.WEST);
    destName.add(m_ResultsDestinationPathTField, BorderLayout.CENTER);
    
    m_ResultsDestinationCBox.addItem(DEST_DATABASE_TEXT);
    m_ResultsDestinationCBox.addItem(DEST_ARFF_TEXT);
    m_ResultsDestinationCBox.addItem(DEST_CSV_TEXT);

    JPanel destInner = new JPanel();
    destInner.setLayout(new BorderLayout(5, 5));
    destInner.add(m_ResultsDestinationCBox, BorderLayout.WEST);
    destInner.add(destName, BorderLayout.CENTER);
    destInner.add(m_BrowseDestinationButton, BorderLayout.EAST);

    JPanel dest = new JPanel();
    dest.setLayout(new BorderLayout());
    dest.setBorder(BorderFactory.createCompoundBorder(
		  BorderFactory.createTitledBorder("Results Destination"),
		  BorderFactory.createEmptyBorder(0, 5, 5, 5)
		  ));
    dest.add(destInner, BorderLayout.NORTH);

    JPanel expParam = new JPanel();
    expParam.setLayout(new BorderLayout(5, 5));
    expParam.add(m_ExperimentParameterLabel, BorderLayout.WEST);
    expParam.add(m_ExperimentParameterTField, BorderLayout.CENTER);

    ButtonGroup typeBG = new ButtonGroup();
    typeBG.add(m_ExpClassificationRBut);
    typeBG.add(m_ExpRegressionRBut);
    m_ExpClassificationRBut.setSelected(true);

    JPanel typeRButtons = new JPanel();
    typeRButtons.setLayout(new GridLayout(1,0));
    typeRButtons.add(m_ExpClassificationRBut);
    typeRButtons.add(m_ExpRegressionRBut);

    m_ExperimentTypeCBox.addItem(TYPE_CROSSVALIDATION_TEXT);
    m_ExperimentTypeCBox.addItem(TYPE_RANDOMSPLIT_TEXT);
    m_ExperimentTypeCBox.addItem(TYPE_FIXEDSPLIT_TEXT);

    JPanel typeInner = new JPanel();
    typeInner.setLayout(new GridLayout(0,1));
    typeInner.add(m_ExperimentTypeCBox);
    typeInner.add(expParam);
    typeInner.add(typeRButtons);

    JPanel type = new JPanel();
    type.setLayout(new BorderLayout());
    type.setBorder(BorderFactory.createCompoundBorder(
		  BorderFactory.createTitledBorder("Experiment Type"),
		  BorderFactory.createEmptyBorder(0, 5, 5, 5)
		  ));
    type.add(typeInner, BorderLayout.NORTH);

    ButtonGroup iterBG = new ButtonGroup();
    iterBG.add(m_OrderDatasetsFirstRBut);
    iterBG.add(m_OrderAlgorithmsFirstRBut);
    m_OrderDatasetsFirstRBut.setSelected(true);

    JPanel numIter = new JPanel();
    numIter.setLayout(new BorderLayout(5, 5));
    numIter.add(new JLabel("Number of repetitions:"), BorderLayout.WEST);
    numIter.add(m_NumberOfRepetitionsTField, BorderLayout.CENTER);

    JPanel controlInner = new JPanel();
    controlInner.setLayout(new GridLayout(0,1));
    controlInner.add(numIter);
    controlInner.add(m_OrderDatasetsFirstRBut);
    controlInner.add(m_OrderAlgorithmsFirstRBut);

    JPanel control = new JPanel();
    control.setLayout(new BorderLayout());
    control.setBorder(BorderFactory.createCompoundBorder(
		  BorderFactory.createTitledBorder("Iteration Control"),
		  BorderFactory.createEmptyBorder(0, 5, 5, 5)
		  ));
    control.add(controlInner, BorderLayout.NORTH);

    JPanel type_control = new JPanel();
    type_control.setLayout(new GridLayout(1,0));
    type_control.add(type);
    type_control.add(control);

    JPanel notes = new JPanel();
    notes.setLayout(new BorderLayout());
    notes.setBorder(BorderFactory.createTitledBorder("Notes"));
    notes.add(new JScrollPane(m_NotesText), BorderLayout.CENTER);

    JPanel top1 = new JPanel();
    top1.setLayout(new BorderLayout());
    top1.add(dest, BorderLayout.NORTH);
    top1.add(type_control, BorderLayout.CENTER);

    JPanel top = new JPanel();
    top.setLayout(new BorderLayout());
    top.add(buttons, BorderLayout.NORTH);
    top.add(top1, BorderLayout.CENTER);  

    JPanel datasets = new JPanel();
    datasets.setLayout(new BorderLayout());
    datasets.add(m_DatasetListPanel, BorderLayout.CENTER);

    JPanel algorithms = new JPanel();
    algorithms.setLayout(new BorderLayout());
    algorithms.add(m_AlgorithmListPanel, BorderLayout.CENTER);

    JPanel schemes = new JPanel();
    schemes.setLayout(new GridLayout(1,0));
    schemes.add(datasets);
    schemes.add(algorithms);

    setLayout(new BorderLayout());
    add(top, BorderLayout.NORTH);
    add(schemes, BorderLayout.CENTER);
    add(notes, BorderLayout.SOUTH);
  }

  /**
   * Gets te users consent for converting the experiment to a simpler form.
   *
   * @return true if the user has given consent, false otherwise
   */  
  private boolean userWantsToConvert() {
    
    if (m_userHasBeenAskedAboutConversion) return true;
    m_userHasBeenAskedAboutConversion = true;
    return (JOptionPane.showConfirmDialog(this,
					  "This experiment has settings that are too advanced\n" +
					  "to be represented in the simple setup mode.\n" +
					  "Do you want the experiment to be converted,\n" +
					  "losing some of the advanced settings?\n",
					  "Confirm conversion",
					  JOptionPane.YES_NO_OPTION,
					  JOptionPane.WARNING_MESSAGE) == JOptionPane.YES_OPTION);
  }

  /**
   * Sets the panel used to switch between simple and advanced modes.
   *
   * @param modePanel the panel
   */
  public void setModePanel(SetupModePanel modePanel) {

    m_modePanel = modePanel;
  }

  /**
   * Sets the experiment to configure.
   *
   * @param exp a value of type 'Experiment'
   * @return true if experiment could be configured, false otherwise
   */
  public boolean setExperiment(Experiment exp) {
    
    m_userHasBeenAskedAboutConversion = false;
    m_Exp = null; // hold off until we are sure we want conversion
    m_SaveBut.setEnabled(true);

    if (exp.getResultListener() instanceof DatabaseResultListener) {
      m_ResultsDestinationCBox.setSelectedItem(DEST_DATABASE_TEXT);
      m_ResultsDestinationPathLabel.setText("URL:");
      m_destinationDatabaseURL = ((DatabaseResultListener)exp.getResultListener()).getDatabaseURL();
      m_ResultsDestinationPathTField.setText(m_destinationDatabaseURL);
      m_BrowseDestinationButton.setEnabled(true);
    } else if (exp.getResultListener() instanceof InstancesResultListener) {
      m_ResultsDestinationCBox.setSelectedItem(DEST_ARFF_TEXT);
      m_ResultsDestinationPathLabel.setText("Filename:");
      m_destinationFilename = ((InstancesResultListener)exp.getResultListener()).getOutputFile().toString();
      m_ResultsDestinationPathTField.setText(m_destinationFilename);
      m_BrowseDestinationButton.setEnabled(true);
    } else if (exp.getResultListener() instanceof CSVResultListener) {
      m_ResultsDestinationCBox.setSelectedItem(DEST_CSV_TEXT);
      m_ResultsDestinationPathLabel.setText("Filename:");
      m_destinationFilename = ((CSVResultListener)exp.getResultListener()).getOutputFile().toString();
      m_ResultsDestinationPathTField.setText(m_destinationFilename);
      m_BrowseDestinationButton.setEnabled(true);
    } else {
      // unrecognised result listener 
      System.out.println("SimpleSetup incompatibility: unrecognised result destination");
      if (userWantsToConvert()) {
	m_ResultsDestinationCBox.setSelectedItem(DEST_ARFF_TEXT);
	m_ResultsDestinationPathLabel.setText("Filename:");
	m_destinationFilename = "-";
	m_ResultsDestinationPathTField.setText(m_destinationFilename);
	m_BrowseDestinationButton.setEnabled(true);
      } else {
	return false;
      }
    }
    m_ResultsDestinationCBox.setEnabled(true);
    m_ResultsDestinationPathLabel.setEnabled(true);
    m_ResultsDestinationPathTField.setEnabled(true);

    if (exp.getResultProducer() instanceof CrossValidationResultProducer) {
      CrossValidationResultProducer cvrp = (CrossValidationResultProducer) exp.getResultProducer();
      m_numFolds = cvrp.getNumFolds();
      m_ExperimentParameterTField.setText("" + m_numFolds);
      
      if (cvrp.getSplitEvaluator() instanceof ClassifierSplitEvaluator) {
	m_ExpClassificationRBut.setSelected(true);
	m_ExpRegressionRBut.setSelected(false);
      } else if (cvrp.getSplitEvaluator() instanceof RegressionSplitEvaluator) {
	m_ExpClassificationRBut.setSelected(false);
	m_ExpRegressionRBut.setSelected(true);
      } else {
	// unknown split evaluator
	System.out.println("SimpleSetup incompatibility: unrecognised split evaluator");
	if (userWantsToConvert()) {
	  m_ExpClassificationRBut.setSelected(true);
	  m_ExpRegressionRBut.setSelected(false);
	} else {
	  return false;
	}
      }
      m_ExperimentTypeCBox.setSelectedItem(TYPE_CROSSVALIDATION_TEXT);
    } else if (exp.getResultProducer() instanceof RandomSplitResultProducer) {
      RandomSplitResultProducer rsrp = (RandomSplitResultProducer) exp.getResultProducer();
      if (rsrp.getRandomizeData()) {
	m_ExperimentTypeCBox.setSelectedItem(TYPE_RANDOMSPLIT_TEXT);
      } else {
	m_ExperimentTypeCBox.setSelectedItem(TYPE_FIXEDSPLIT_TEXT);
      }
      if (rsrp.getSplitEvaluator() instanceof ClassifierSplitEvaluator) {
	m_ExpClassificationRBut.setSelected(true);
	m_ExpRegressionRBut.setSelected(false);
      } else if (rsrp.getSplitEvaluator() instanceof RegressionSplitEvaluator) {
	m_ExpClassificationRBut.setSelected(false);
	m_ExpRegressionRBut.setSelected(true);
      } else {
	// unknown split evaluator
	System.out.println("SimpleSetup incompatibility: unrecognised split evaluator");
	if (userWantsToConvert()) {
	  m_ExpClassificationRBut.setSelected(true);
	  m_ExpRegressionRBut.setSelected(false);
	} else {
	  return false;
	}
      }
      m_trainPercent = rsrp.getTrainPercent();
      m_ExperimentParameterTField.setText("" + m_trainPercent);
      
    } else {
      // unknown experiment type
      System.out.println("SimpleSetup incompatibility: unrecognised resultProducer");
      if (userWantsToConvert()) {
	m_ExperimentTypeCBox.setSelectedItem(TYPE_CROSSVALIDATION_TEXT);
	m_ExpClassificationRBut.setSelected(true);
	m_ExpRegressionRBut.setSelected(false);
      } else {
	return false;
      }
    }

    m_ExperimentTypeCBox.setEnabled(true);
    m_ExperimentParameterLabel.setEnabled(true);
    m_ExperimentParameterTField.setEnabled(true);
    m_ExpClassificationRBut.setEnabled(true);
    m_ExpRegressionRBut.setEnabled(true);
    
    if (exp.getRunLower() == 1) {
      m_numRepetitions = exp.getRunUpper();
      m_NumberOfRepetitionsTField.setText("" + m_numRepetitions);
    } else {
      // unsupported iterations
      System.out.println("SimpleSetup incompatibility: runLower is not 1");
      if (userWantsToConvert()) {
	exp.setRunLower(1);
	if (m_ExperimentTypeCBox.getSelectedItem() == TYPE_FIXEDSPLIT_TEXT) {
	  exp.setRunUpper(1);
	  m_NumberOfRepetitionsTField.setEnabled(false);
	  m_NumberOfRepetitionsTField.setText("1");
	} else {
	  exp.setRunUpper(10);
	  m_numRepetitions = 10;
	  m_NumberOfRepetitionsTField.setText("" + m_numRepetitions);
	}
	
      } else {
	return false;
      }
    }
    m_NumberOfRepetitionsTField.setEnabled(true);

    m_OrderDatasetsFirstRBut.setSelected(exp.getAdvanceDataSetFirst());
    m_OrderAlgorithmsFirstRBut.setSelected(!exp.getAdvanceDataSetFirst());
    m_OrderDatasetsFirstRBut.setEnabled(true);
    m_OrderAlgorithmsFirstRBut.setEnabled(true);

    m_NotesText.setText(exp.getNotes());
    m_NotesText.setEnabled(true);

    if (!exp.getUsePropertyIterator() || !(exp.getPropertyArray() instanceof Classifier[])) {
      // unknown property iteration
      System.out.println("SimpleSetup incompatibility: unrecognised property iteration");
      if (userWantsToConvert()) {
	exp.setPropertyArray(new Classifier[0]);
	exp.setUsePropertyIterator(true);
      } else {
	return false;
      }
    }

    m_DatasetListPanel.setExperiment(exp);
    m_AlgorithmListPanel.setExperiment(exp);
    
    m_Exp = exp;
    expTypeChanged(); // recreate experiment
    
    m_Support.firePropertyChange("", null, null);
    
    return true;
  }

  /**
   * Gets the currently configured experiment.
   *
   * @return the currently configured experiment.
   */
  public Experiment getExperiment() {

    return m_Exp;
  }
  
  /**

⌨️ 快捷键说明

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