gaclust.java
来自「clustering data for the different techni」· Java 代码 · 共 1,955 行 · 第 1/5 页
JAVA
1,955 行
FitnessMeasureLabelPanel.add(FitnessMeasureLabel); GACenterPanel.add(FitnessMeasureLabelPanel); FitnessMeasureComboBox.setPreferredSize(prefDim); FitnessMeasureComboBox.addItem(Strings.FM_PA_P); FitnessMeasureComboBox.addItem(Strings.FM_P_PA); FitnessMeasureComboBox.addItem(Strings.FM_BOTH); FitnessMeasureComboBox.addItem(Strings.FM_BOTH_SCALED); FitnessMeasureComboBox.addItem(Strings.FM_NORM_W); FitnessMeasureComboBox.addItem(Strings.FM_WE); FitnessMeasureComboBox.addItem(Strings.FM_ALTERNATE_HAVG); FitnessMeasureComboBox.addItem(Strings.FM_ALTERNATE); FitnessMeasureComboBox.addItem(Strings.FM_MOD); FitnessMeasureComboBox.addItem(Strings.FM_Q); FitnessMeasureComboBox.addItem(Strings.FM_L); FitnessMeasureComboBox.addItem(Strings.FM_QR); FitnessMeasureComboBox.addItem(Strings.FM_LR); FitnessMeasureComboBox.addItem(Strings.FM_Q_QR); FitnessMeasureComboBox.addItemListener(this); FitnessMeasureComboBox.setToolTipText(Strings.FM_TIP); FitnessMeasurePanel.add(FitnessMeasureComboBox); GACenterPanel.add(FitnessMeasurePanel); RandomSeedGALabel.setPreferredSize(prefDim); RandomSeedGALabel.setHorizontalAlignment(SwingConstants.RIGHT); RandomSeedGALabel.setText("Random seed :"); RandomSeedGALabelPanel.add(RandomSeedGALabel); GACenterPanel.add(RandomSeedGALabelPanel); RandomSeedGATextField.setPreferredSize(prefDim); RandomSeedGATextField.setText("1"); RandomSeedGATextField.setToolTipText(Strings.RANDSEED_TIP); RandomSeedGAPanel.add(RandomSeedGATextField); GACenterPanel.add(RandomSeedGAPanel); MinimizationLabel.setPreferredSize(prefDim); MinimizationLabel.setHorizontalAlignment(SwingConstants.RIGHT); MinimizationLabel.setText("Optimization type :"); MinimizationLabelPanel.add(MinimizationLabel); GACenterPanel.add(MinimizationLabelPanel); MinimizationComboBox.setPreferredSize(prefDim); MinimizationComboBox.addItem(Strings.FO_MIN); MinimizationComboBox.addItem(Strings.FO_MAX); MinimizationComboBox.setToolTipText(Strings.OPT_TIP); MinimizationPanel.add(MinimizationComboBox); GACenterPanel.add(MinimizationPanel); UseTargetCheckBox.setHorizontalAlignment(SwingConstants.RIGHT); UseTargetCheckBox.setPreferredSize(prefDim); UseTargetCheckBox.setText("Use target"); UseTargetCheckBox.addItemListener(this); UseTargetCheckBox.setToolTipText(Strings.USETARGET_TIP); UseTargetPanel.add(UseTargetCheckBox); GACenterPanel.add(UseTargetPanel); TargetIDLabel.setPreferredSize(prefDim); TargetIDLabel.setHorizontalAlignment(SwingConstants.RIGHT); TargetIDLabel.setText("Target id :"); TargetIDLabel.setEnabled(false); TargetIDLabelPanel.add(TargetIDLabel); GACenterPanel.add(TargetIDLabelPanel); TargetIDTextField.setPreferredSize(prefDim); TargetIDTextField.setEnabled(false); TargetIDTextField.setToolTipText(Strings.TARGETID_TIP); TargetIDPanel.add(TargetIDTextField); GACenterPanel.add(TargetIDPanel); GACenterPanel.add(BogusLabel3); UseWeightsCheckBox.setHorizontalAlignment(SwingConstants.RIGHT); UseWeightsCheckBox.setPreferredSize(prefDim); UseWeightsCheckBox.setText("Use weights"); UseWeightsCheckBox.setEnabled(false); UseWeightsCheckBox.addItemListener(this); UseWeightsCheckBox.setToolTipText(Strings.USEWEIGHTS_TIP); UseWeightsPanel.add(UseWeightsCheckBox); GACenterPanel.add(UseWeightsPanel); SampleDBPctLabel.setPreferredSize(prefDim); SampleDBPctLabel.setHorizontalAlignment(SwingConstants.RIGHT); SampleDBPctLabel.setText("Sampling percent:"); SampleDBPctLabel.setEnabled(false); SampleDBPctLabelPanel.add(SampleDBPctLabel); GACenterPanel.add(SampleDBPctLabelPanel); SampleDBPctTextField.setPreferredSize(prefDim); SampleDBPctTextField.setEnabled(false); SampleDBPctTextField.setToolTipText(Strings.SAMPLEDBPCT_TIP); SampleDBPctPanel.add(SampleDBPctTextField); GACenterPanel.add(SampleDBPctPanel); GACenterPanel.add(BogusLabel4); ExcludeAttrCheckBox.setHorizontalAlignment(SwingConstants.RIGHT); ExcludeAttrCheckBox.setPreferredSize(prefDim); ExcludeAttrCheckBox.setText("Exclude attributes"); ExcludeAttrCheckBox.setEnabled(false); ExcludeAttrCheckBox.addItemListener(this); ExcludeAttrCheckBox.setToolTipText(Strings.EXCLUDEATTR_TIP); ExcludeAttrPanel.add(ExcludeAttrCheckBox); GACenterPanel.add(ExcludeAttrPanel); NRemAttrLabel.setPreferredSize(prefDim); NRemAttrLabel.setHorizontalAlignment(SwingConstants.RIGHT); NRemAttrLabel.setText("No. remaining attributes :"); NRemAttrLabel.setEnabled(false); NRemAttrLabelPanel.add(NRemAttrLabel); GACenterPanel.add(NRemAttrLabelPanel); NRemAttrTextField.setPreferredSize(prefDim); NRemAttrTextField.setEnabled(false); NRemAttrTextField.setToolTipText(Strings.NREMATTR_TIP); NRemAttrPanel.add(NRemAttrTextField); GACenterPanel.add(NRemAttrPanel); GACenterPanel.add(BogusLabel5); GAPanel.add(GACenterPanel, BorderLayout.CENTER); ClusterButton.setText("Cluster !"); ClusterButton.addActionListener(this); ClusterButton.setMnemonic(KeyEvent.VK_C); ClusterButton.setToolTipText(Strings.CLUSTER_TIP); ClusterPanel.add(ClusterButton); ClusterAbortButton.setText("Abort"); ClusterAbortButton.setEnabled(false); ClusterAbortButton.addActionListener(this); ClusterAbortButton.setMnemonic(KeyEvent.VK_A); ClusterAbortButton.setToolTipText(Strings.CLUSTERABORT_TIP); ClusterPanel.add(ClusterAbortButton); GASouthPanel.add(ClusterPanel); GAPanel.add(GASouthPanel, BorderLayout.SOUTH); GASplitPane.setLeftComponent(GAPanel); GAResultsPanel.setLayout(new BorderLayout()); // display cardinalities in the database text area by // double-clicking a row GAResultsTable.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent event) { if (event.getClickCount() < 2) return; int rowNo = GAResultsTable.rowAtPoint(event.getPoint()); ResultsTableModel tableModel = (ResultsTableModel)GAResultsTable.getModel(); if (tableModel instanceof GAResultsModel) { if (rowNo == 4) { GALogTextArea.append(Strings.CLUSTCLASSCARD + Strings.endl); String classInfo = (String)tableModel.getValueAt(rowNo, 0); GALogTextArea.append(classInfo + Strings.endl); } } else if (tableModel instanceof GAResultsReferenceModel) { if (rowNo == 3) { GALogTextArea.append(Strings.REFCLASSCARD + Strings.endl); String classInfo = (String)tableModel.getValueAt(rowNo, 0); GALogTextArea.append(classInfo + Strings.endl); GALogTextArea.append(Strings.CLUSTCLASSCARD + Strings.endl); classInfo = (String)tableModel.getValueAt(rowNo, 1); GALogTextArea.append(classInfo + Strings.endl); } else if (rowNo >= 8 && rowNo < 8 + refPart.getNoClasses()) { // get the target class from this row String refClassInfo = (String)tableModel.getValueAt(rowNo, 0); String intersections = (String)tableModel.getValueAt(rowNo, 1); GALogTextArea.append("Reference class (cardinality): " + refClassInfo + Strings.endl); GALogTextArea.append("Intersections with clustering" + " classes:" + Strings.endl); GALogTextArea.append(intersections + Strings.endl); } } } }); GAResultsScrollPane.setViewportView(GAResultsTable); GAResultsNorthPanel.setLayout(new GridLayout(0, 1)); GAResultsNorthPanel.add(GAResultsScrollPane); GAResultsNorthPanel.setPreferredSize(new Dimension(600, 200)); GAResultsPanel.add(GAResultsNorthPanel, BorderLayout.NORTH); GASplitPane.setRightComponent(GAResultsPanel); GASplitPane.setPreferredSize(new Dimension(600, 500)); GAHorizontalSplitPane.setLeftComponent(GASplitPane); GALogTextArea.setLineWrap(true); GALogTextArea.setText("Select clustering parameters" + Strings.endl); GALogTextArea.setEditable(false); GAScrollPane.setViewportView(GALogTextArea); GAScrollPane.setPreferredSize(new Dimension(350, 500)); GALogPanel.setLayout(new GridLayout(0, 1)); GALogPanel.add(GAScrollPane); GAHorizontalSplitPane.setRightComponent(GALogPanel); MainTabbedPane.addTab("GA", GAHorizontalSplitPane); MainTabbedPane.setEnabledAt(2, false); getContentPane().add(MainTabbedPane); pack(); } // listeners public void itemStateChanged(ItemEvent event) { if (event.getSource() == UseTargetCheckBox) { boolean state = UseTargetCheckBox.isSelected(); TargetIDLabel.setEnabled(state); TargetIDTextField.setEnabled(state); } else if (event.getSource() == UseWeightsCheckBox) { boolean state = UseWeightsCheckBox.isSelected(); SampleDBPctLabel.setEnabled(state); SampleDBPctTextField.setEnabled(state); } else if (event.getSource() == ExcludeAttrCheckBox) { boolean state = ExcludeAttrCheckBox.isSelected(); NRemAttrLabel.setEnabled(state); NRemAttrTextField.setEnabled(state); } else if (event.getSource() == FitnessMeasureComboBox) { String selection = (String)FitnessMeasureComboBox.getSelectedItem(); if (selection.equals(Strings.FM_NORM_W)) { UseWeightsCheckBox.setEnabled(true); UseWeightsCheckBox.setSelected(false); ExcludeAttrCheckBox.setEnabled(false); ExcludeAttrCheckBox.setSelected(false); } else if (selection.equals(Strings.FM_WE)) { UseWeightsCheckBox.setEnabled(true); UseWeightsCheckBox.setSelected(false); ExcludeAttrCheckBox.setEnabled(true); ExcludeAttrCheckBox.setSelected(false); } else { UseWeightsCheckBox.setEnabled(false); UseWeightsCheckBox.setSelected(false); SampleDBPctLabel.setEnabled(false); SampleDBPctTextField.setEnabled(false); ExcludeAttrCheckBox.setEnabled(false); ExcludeAttrCheckBox.setSelected(false); NRemAttrLabel.setEnabled(false); NRemAttrTextField.setEnabled(false); } } else if (event.getSource() == CrossTypeComboBox) { // ignore the DESELECTED event if (event.getStateChange() == ItemEvent.SELECTED) { String selection = (String)CrossTypeComboBox.getSelectedItem(); if (selection.equals(Strings.CROSS_RAND) == false && selection.equals(Strings.CROSS_X_2RAND_CLASS) == false) { GALogTextArea.append(Strings.DISTRNEEDED + Strings.endl); DistrTypeComboBox.setSelectedIndex(1); } } } } public void actionPerformed(ActionEvent event) { if (event.getSource() == OpenButton) { DBName = DBNameTextField.getText(); try { FileReader f = new FileReader(DBName); } catch(FileNotFoundException e) { DBLogTextArea.append(Strings.ERROR + e + Strings.endl); DBNameTextField.setText(""); DBNameTextField.requestFocus(); return; } try { // get parameters nRows = JTextTools.getInt(NRowsTextField, DBLogTextArea, Strings.NROWSERRMSG); if (nRows <= 0) { DBLogTextArea.append(Strings.NROWSPOSITIVE + Strings.endl); JTextTools.dealWithInvalidValue(NRowsTextField); } nCols = JTextTools.getInt(NAttrTextField, DBLogTextArea, Strings.NATTRERRMSG); if (nCols <= 0) { DBLogTextArea.append(Strings.NATTRPOSITIVE + Strings.endl); JTextTools.dealWithInvalidValue(NAttrTextField); } } catch (IllegalArgumentException invalid_input) { // wait for user to input something reasonable return; } output = new StringBuffer(); Vector v; try { v = DBTransform.transform(DBName, nRows, nCols, output); } catch(IOException e) { DBLogTextArea.append(Strings.ERROR + e + Strings.endl); return; } // database transformation was successful if (output.length() > 0) DBLogTextArea.append(output.toString()); nRows = ((Integer)v.elementAt(0)).intValue(); nCols = ((Integer)v.elementAt(1)).intValue(); db = new Partition[nCols]; db_copy = new Partition[nCols]; for (int i = 0; i < nCols; i++) { db[i] = (Partition)v.elementAt(i+2); db_copy[i] = db[i]; } DBLogTextArea.append("Currently selected database: " + DBName); DBLogTextArea.append("(" + nRows + " rows " + nCols + " attributes)" + Strings.endl); DBTable.setModel(new DBTableModel()); MainTabbedPane.setEnabledAt(2, true); flipTarget = true; // we get a new database we can flip the // target if required } else if (event.getSource() == BrowseButton) { DBNameTextField.setText(""); NRowsTextField.setText(""); NAttrTextField.setText(""); int returnVal = jfc.showOpenDialog(this); if (returnVal == JFileChooser.APPROVE_OPTION) { File file = jfc.getSelectedFile(); DBName = file.getPath(); DBNameTextField.setText(file.getName()); } } else if (event.getSource() == ClusterButton) { // get parameters try { popSize = JTextTools.getInt(PopSizeTextField, GALogTextArea, Strings.POPSIZEERRMSG); if (popSize <= 0) { GALogTextArea.append(Strings.POPSIZEPOSITIVE + Strings.endl); JTextTools.dealWithInvalidValue(PopSizeTextField); } K = JTextTools.getInt(NClassesClustTextField, GALogTextArea, Strings.KERRMSG);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?