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

📄 decisiontreeoperatorproperty.java

📁 一个数据挖掘软件ALPHAMINERR的整个过程的JAVA版源代码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
		minNodeContent.add(minNode);
		m_MinNodeSize.setPreferredSize(DimensionConstants.TEXT_FIELD_DIM);

		m_MinNodeSize.setMaximumSize(DimensionConstants.TEXT_FIELD_DIM);
		m_MinNodeSize.setMinimumSize(DimensionConstants.TEXT_FIELD_DIM);
		minNodeContent.add(m_MinNodeSize);
		minNodeContent.setAlignmentX((float) 0.0);
		modelSelectionContent.add(minNodeContent);
		m_CheckBoxBinarySplits.setAlignmentX((float) 0.0);
		modelSelectionContent.add(m_CheckBoxBinarySplits);
		modelSelectionContent.add(Box.createRigidArea(new Dimension(0, 5)));
		modelSelectionPanel.add(modelSelectionContent);

		m_ButtonReset.setText(Resource.srcStr("m_ButtonReset"));
		m_ButtonSave.setText(Resource.srcStr("m_ButtonApply"));
		m_ButtonCancel.setSelected(false);
		m_ButtonCancel.setText(Resource.srcStr("m_ButtonClose"));
		buttonPanel.add(m_ButtonSave);
		buttonPanel.add(m_ButtonReset);
		buttonPanel.add(m_ButtonCancel);

		m_ButtonReset.addActionListener(this);
		m_ButtonSave.addActionListener(this);
		m_ButtonCancel.addActionListener(this);

		this.getContentPane().add(m_PropertyPane, BorderLayout.CENTER);
		this.getContentPane().add(buttonPanel, BorderLayout.SOUTH);
		this.setSize(288, 335);

		getContent();
	}

	/**
	 * @see java.awt.event.ActionListener#actionPerformed(ActionEvent)
	 */
	public void actionPerformed(ActionEvent e) {

		if (e.getSource() == m_ButtonSave) {
			if (applyContent()) {
				m_ParameterChanged = true;
			}
		} else if (e.getSource() == m_ButtonReset) {
			getContent();
		} else if (e.getSource() == m_ButtonCancel)
			close();
	}

	/**
	 * Validate values entered in the DecisionTreeOperatorProperty UI before
	 * setting them into the the Operator Node.
	 */
	private boolean applyContent() {
		if (validateProperty()) {
			return setContent();
		} else {
			return false;
		}
	}

	/**
	 * Validate input values.
	 * 
	 * @return true if all values are valid; false otherwise.
	 */
	private boolean validateProperty() {
		String message = null;
		boolean errFlag = false;

		if (m_CheckBoxPruning.isSelected() && m_RadioNormal.isSelected()) {
			String confidence = m_ConfidenceThreshold.getText().trim();
			if (!ValueValidator.isFloat(confidence)
					|| !ValueValidator.largerThan(confidence, 0.0, false)
					|| !ValueValidator.smallerThan(confidence, 1.0, false)) {
				m_PropertyPane.setSelectedIndex(0);
				m_ConfidenceThreshold.requestFocus();
				m_ConfidenceThreshold.selectAll();
				message = Resource.srcStr("ConfidenceThreshold");
				m_MessageDialog.showWarning(message, Resource.srcStr("Invalidinput"));
				return false;
			}
		}

		if (m_CheckBoxPruning.isSelected() && m_RadioReducedError.isSelected()) {
			String folds = m_NumFolds.getText().trim();
			if (ValueValidator.largerThan(folds, Integer.MAX_VALUE, false)) {
				message = Resource.srcStr("FoldsNumber")
						+ Integer.MAX_VALUE;
				errFlag = true;
			} else if (ValueValidator.smallerThan(folds, 1, true)) {
				message = Resource.srcStr("FoldsNumber1");
				errFlag = true;
			} else if (!ValueValidator.isInteger(folds)) {
				message = Resource.srcStr("FoldsNUmber2")
						+ Integer.MAX_VALUE;
				errFlag = true;
			}

			if (errFlag) {
				m_PropertyPane.setSelectedIndex(0);
				m_NumFolds.requestFocus();
				m_NumFolds.selectAll();
				m_MessageDialog.showWarning(message, Resource.srcStr("Invalidinput"));
				return false;
			}

			String seeds = m_RandomSeed.getText().trim();
			if (ValueValidator.largerThan(seeds, Integer.MAX_VALUE, false)) {
				message = "Random seed should be an integer samller than "
						+ Integer.MAX_VALUE;
				errFlag = true;
			} else if (ValueValidator.smallerThan(seeds, Integer.MIN_VALUE,
					true)) {
				message = Resource.srcStr("RandomSeed1")
						+ Integer.MIN_VALUE;
				errFlag = true;
			} else if (!ValueValidator.isInteger(seeds)) {
				message = Resource.srcStr("RandomSeed2")
						+ Integer.MIN_VALUE + Resource.srcStr("SmallerThan")
						+ Integer.MAX_VALUE;
				errFlag = true;
			}

			if (errFlag) {
				m_PropertyPane.setSelectedIndex(0);
				m_RandomSeed.requestFocus();
				m_RandomSeed.selectAll();
				m_MessageDialog.showWarning(message, Resource.srcStr("Invalidinput"));
				return false;
			}
		}

		String min = m_MinNodeSize.getText().trim();
		if (ValueValidator.largerThan(min, Integer.MAX_VALUE, false)) {
			message = Resource.srcStr("NodeSize")
					+ Integer.MAX_VALUE;
			errFlag = true;
		} else if (ValueValidator.smallerThan(min, 0, false)) {
			message = Resource.srcStr("NodeSize1");
			errFlag = true;
		} else if (!ValueValidator.isInteger(min)) {
			message = Resource.srcStr("NodeSize2")
					+ Integer.MAX_VALUE;
			errFlag = true;
		}

		if (errFlag) {
			m_PropertyPane.setSelectedIndex(1);
			m_RandomSeed.requestFocus();
			m_RandomSeed.selectAll();
			m_MessageDialog.showWarning(message, Resource.srcStr("Invalidinput"));
			return false;
		}

		return true;
	}


	/**
	 * Set values input in this DecisionTreeOperatorProperty to the Operator
	 * Node.
	 */
	public boolean setContent() {
		if (m_Node == null) {
			return false;
		}

		m_Node.setParameterValue(DecisionTreeOperator.PRUNING, String
				.valueOf(m_CheckBoxPruning.isSelected()));
		if (m_CheckBoxPruning.isSelected()) {
			m_Node.removeParameterValue(DecisionTreeOperator.PRUNING_METHOD);
			m_Node.removeParameterValue(DecisionTreeOperator.CONFIDENCE);
			m_Node.removeParameterValue(DecisionTreeOperator.SUBTREE);
			m_Node.removeParameterValue(DecisionTreeOperator.FOLDS);
			m_Node.removeParameterValue(DecisionTreeOperator.SEED);
		}
		if (m_CheckBoxPruning.isSelected() && m_RadioNormal.isSelected()) {
			m_Node.setParameterValue(DecisionTreeOperator.PRUNING_METHOD,
					DecisionTreeOperator.VALUE_NORMAL_PRUNING);
			m_Node.setParameterValue(DecisionTreeOperator.CONFIDENCE,
					m_ConfidenceThreshold.getText().trim());
			m_Node.setParameterValue(DecisionTreeOperator.SUBTREE, String
					.valueOf(m_CheckBoxSubtreeRaising.isSelected()));
			m_Node.removeParameterValue(DecisionTreeOperator.FOLDS);
			m_Node.removeParameterValue(DecisionTreeOperator.SEED);
		} else if (m_CheckBoxPruning.isSelected()
				&& m_RadioReducedError.isSelected()) {
			m_Node.setParameterValue(DecisionTreeOperator.PRUNING_METHOD,
					DecisionTreeOperator.VALUE_REDUCED_ERROR_PRUNING);
			m_Node.removeParameterValue(DecisionTreeOperator.CONFIDENCE);
			m_Node.removeParameterValue(DecisionTreeOperator.SUBTREE);
			m_Node.setParameterValue(DecisionTreeOperator.FOLDS, m_NumFolds
					.getText().trim());
			m_Node.setParameterValue(DecisionTreeOperator.SEED, m_RandomSeed
					.getText().trim());
		}
		m_Node.setParameterValue(DecisionTreeOperator.CLEANUP, String
				.valueOf(m_CheckBoxCleanup.isSelected()));

		m_Node.setParameterValue(DecisionTreeOperator.NODE_SIZE, m_MinNodeSize
				.getText().trim());
		m_Node.setParameterValue(DecisionTreeOperator.BINARY_SPLITS, String
				.valueOf(m_CheckBoxBinarySplits.isSelected()));

		//Operator op = m_ParentPanel.getOperator(m_NodeID);
		//((DecisionTreeOperator) m_Operator).clearResult();
		setPropertiesModified();
		
		clearOperatorTempResult();
		//m_ParentPanel.getCaseWindow().setModified(true);
		return true;
	}

	/**
	 * Retrieve information from Operator Node and display those values in this
	 * DecisionTreeOperatorProperty.
	 */
	public void getContent() {
		if (m_Node == null)
			return;

		String pruningString = (String) m_Node
				.getParameterValue(DecisionTreeOperator.PRUNING);
		boolean pruning = true;
		if (pruningString == null)
			pruningString = DecisionTreeOperator.DEFAULT_PRUNING;
		else
			pruning = new Boolean(pruningString).booleanValue();
		m_CheckBoxPruning.setSelected(!pruning);
		m_CheckBoxPruning.setSelected(pruning);

		String pruningMethod = (String) m_Node
				.getParameterValue(DecisionTreeOperator.PRUNING_METHOD);
		if (pruningMethod == null)
			pruningMethod = DecisionTreeOperator.DEFAULT_PRUNING_METHOD;
		if (pruningMethod.equals(DecisionTreeOperator.VALUE_NORMAL_PRUNING))
			m_RadioNormal.setSelected(true);
		else
			m_RadioReducedError.setSelected(true);

		String confidence = (String) m_Node
				.getParameterValue(DecisionTreeOperator.CONFIDENCE);
		if (confidence == null || m_RadioReducedError.isSelected())
			confidence = DecisionTreeOperator.DEFAULT_CONFIDENCE;
		m_ConfidenceThreshold.setText(confidence);

		String subtreeString = (String) m_Node
				.getParameterValue(DecisionTreeOperator.SUBTREE);
		if (subtreeString == null || m_RadioReducedError.isSelected())
			subtreeString = DecisionTreeOperator.DEFAULT_SUBTREE;
		boolean subtree = false;
		if (subtreeString.equals(String.valueOf(true)))
			subtree = true;
		m_CheckBoxSubtreeRaising.setSelected(subtree);

		String folds = (String) m_Node.getParameterValue(DecisionTreeOperator.FOLDS);
		if (folds == null || m_RadioNormal.isSelected())
			folds = DecisionTreeOperator.DEFAULT_FOLDS;
		m_NumFolds.setText(folds);

		String seed = (String) m_Node.getParameterValue(DecisionTreeOperator.SEED);
		if (seed == null || m_RadioNormal.isSelected())
			seed = DecisionTreeOperator.DEFAULT_SEED;
		m_RandomSeed.setText(seed);

		String cleanUpString = (String) m_Node
				.getParameterValue(DecisionTreeOperator.CLEANUP);
		if (cleanUpString == null)
			cleanUpString = DecisionTreeOperator.DEFAULT_CLEANUP;
		boolean cleanUp = false;
		if (cleanUpString.equals(String.valueOf(true)))
			cleanUp = true;
		m_CheckBoxCleanup.setSelected(cleanUp);

		String nodeSize = (String) m_Node
				.getParameterValue(DecisionTreeOperator.NODE_SIZE);
		if (nodeSize == null)
			nodeSize = DecisionTreeOperator.DEFAULT_NODE_SIZE;
		m_MinNodeSize.setText(nodeSize);

		String binarySplitsString = (String) m_Node
				.getParameterValue(DecisionTreeOperator.BINARY_SPLITS);
		if (binarySplitsString == null)
			binarySplitsString = DecisionTreeOperator.DEFAULT_BINARY_SPLITS;
		boolean binarySplits = false;
		if (binarySplitsString.equals(String.valueOf(true)))
			binarySplits = true;
		m_CheckBoxBinarySplits.setSelected(binarySplits);
	}
	
	public void resetLocale() {
		m_CheckBoxPruning.setText(Resource.srcStr("m_CheckBoxPruning"));
		m_RadioNormal.setText(Resource.srcStr("m_CheckBoxPruning"));
		m_CheckBoxSubtreeRaising.setText(Resource.srcStr("m_CheckBoxSubtreeRaising"));
		m_CheckBoxCleanup.setText(Resource.srcStr("m_CheckBoxCleanup"));
		m_CheckBoxBinarySplits.setText(Resource.srcStr("m_CheckBoxBinarySplits"));
		
		//title
		String title = getTitle();
		int index = title.indexOf('[');
		title = Resource.srcStr("DecisionTree")+title.substring(index);
		setTitle(title);
		
		m_PropertyPane.setTitleAt(0, Resource.srcStr("m_TreeTab"));
		m_PropertyPane.setTitleAt(1, Resource.srcStr("m_ModelTab"));
		
		((TitledBorder)((CompoundBorder)((CompoundBorder)treeSettingsPanel.getBorder()).getOutsideBorder()).getInsideBorder()).setTitle(Resource.srcStr("DecisionTree"));
		((TitledBorder)((CompoundBorder)((CompoundBorder)modelSelectionPanel.getBorder()).getOutsideBorder()).getInsideBorder()).setTitle(Resource.srcStr("DecisionTree"));
		confidenceThreshold.setText(Resource.srcStr("DECISIONTREE_CONFIDENCE_THRESHOLD"));
		
		numFolds.setText(Resource.srcStr("numFolds"));
		randomSeed.setText(Resource.srcStr("randomSeed"));
		minNode.setText(Resource.srcStr("NodeMinSize"));
		
		m_ButtonReset.setText(Resource.srcStr("m_ButtonReset"));
		m_ButtonSave.setText(Resource.srcStr("m_ButtonApply"));
		m_ButtonCancel.setText(Resource.srcStr("m_ButtonClose"));
	}
}

⌨️ 快捷键说明

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