Example usage for weka.core Instances classIndex

List of usage examples for weka.core Instances classIndex

Introduction

In this page you can find the example usage for weka.core Instances classIndex.

Prototype


publicint classIndex() 

Source Link

Document

Returns the class attribute's index.

Usage

From source file:lu.lippmann.cdb.datasetview.tabs.StatsTabView.java

License:Open Source License

public static JXPanel buildPanel(final Instances dataset) throws Exception {
    final String FULL = " FULL DATASET ";

    final JXPanel internalTextualModelPanel = new JXPanel();
    final Set<Object> classesSet = new HashSet<Object>();
    classesSet.add(FULL);/*from   w  w  w .j a v  a2  s .co m*/
    if (dataset.classIndex() != -1)
        classesSet.addAll(WekaDataStatsUtil.getClassRepartition(dataset).keySet());
    internalTextualModelPanel.setLayout(new GridLayout(classesSet.size(), 1));
    for (final Object o : classesSet) {
        final Instances part;
        if (o.equals(FULL))
            part = dataset;
        else
            part = WekaDataProcessingUtil.filterDataSetOnNominalValue(dataset, dataset.classIndex(),
                    o.toString());

        final JXPanel intjxp = new JXPanel();
        intjxp.setLayout(new BoxLayout(intjxp, BoxLayout.PAGE_AXIS));
        intjxp.add(buildScrollPane(buildStatsForNumericalAttributes(part)));

        final JScrollPane comp = new JScrollPane(intjxp);
        comp.setBorder(new TitledBorder("Stats for '" + o.toString() + "'"));
        internalTextualModelPanel.add(comp);
    }
    return internalTextualModelPanel;
}

From source file:lu.lippmann.cdb.datasetview.tabs.TableTabView.java

License:Open Source License

/**
 * Constructor./*from   w  w w .  ja v  a2 s .c o m*/
 */
public TableTabView(final EventPublisher eventPublisher) {
    super();

    this.instanceTable = new JXTable();

    this.instanceTable.setModel(new InstanceTableModel());

    this.instanceTable.setEditable(true);
    this.instanceTable.setShowHorizontalLines(false);
    this.instanceTable.setShowVerticalLines(false);
    this.instanceTable.setVisibleRowCount(5);
    this.instanceTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);

    //Render of numbers
    this.instanceTable.setDefaultRenderer(Number.class, new TableTabCellRenderer());

    this.instanceTable.addMouseListener(new MouseAdapter() {
        public void mouseReleased(final MouseEvent e) {
            if (e.isPopupTrigger()) {
                final InstanceTableModel instanceTableModel = (InstanceTableModel) instanceTable.getModel();
                final Instances dataSet = instanceTableModel.getDataSet();
                final int row = instanceTable.rowAtPoint(e.getPoint());
                final int column = instanceTable.columnAtPoint(e.getPoint());
                final int modelColumn = instanceTable.convertColumnIndexToModel(column);
                final int modelRow = instanceTable.convertRowIndexToModel(row);

                final JPopupMenu jPopupMenu = new JPopupMenu("feur");

                if (modelColumn > 0 && dataSet.classIndex() != modelColumn - 1) {
                    final JMenuItem removeColumnMenuItem = new JMenuItem(
                            "Remove this column ('" + instanceTableModel.getColumnName(modelColumn) + "')");
                    removeColumnMenuItem.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(final ActionEvent e) {
                            final Instances newdataSet = new Instances(dataSet);
                            newdataSet.deleteAttributeAt(modelColumn - 1);
                            pushDataChange(new DataChange(newdataSet, TabView.DataChangeTypeEnum.Deletion));
                        }
                    });
                    jPopupMenu.add(removeColumnMenuItem);
                }

                if (modelColumn > 0 && dataSet.attribute(modelColumn - 1).isNumeric()
                        && !dataSet.attribute(modelColumn - 1).isDate()) {
                    final JMenuItem discrColumnMenuItem = new JMenuItem(
                            "Discretize this column ('" + instanceTableModel.getColumnName(modelColumn) + "')");
                    discrColumnMenuItem.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(final ActionEvent e) {
                            try {
                                final Instances newdataSet = WekaDataProcessingUtil
                                        .buildDiscretizedDataSetUnsupervisedForOne(dataSet, modelColumn - 1);
                                pushDataChange(new DataChange(newdataSet, TabView.DataChangeTypeEnum.Update));
                            } catch (Exception e1) {
                                eventPublisher.publish(new ErrorOccuredEvent("Error during discretization of '"
                                        + instanceTableModel.getColumnName(modelColumn) + "'", e1));
                            }
                        }
                    });
                    jPopupMenu.add(discrColumnMenuItem);

                    for (final int c : new int[] { 5, 10, 20, 40, 80 }) {
                        final JMenuItem discrColumnMenuItemN = new JMenuItem("Discretize this column ('"
                                + instanceTableModel.getColumnName(modelColumn) + "') bins=" + c);
                        discrColumnMenuItemN.addActionListener(new ActionListener() {
                            @Override
                            public void actionPerformed(final ActionEvent e) {
                                try {
                                    final Instances newdataSet = WekaDataProcessingUtil
                                            .buildDiscretizedDataSetUnsupervised(dataSet, modelColumn - 1, c);
                                    pushDataChange(
                                            new DataChange(newdataSet, TabView.DataChangeTypeEnum.Update));
                                } catch (Exception e1) {
                                    eventPublisher
                                            .publish(new ErrorOccuredEvent("Error during discretization of '"
                                                    + instanceTableModel.getColumnName(modelColumn) + "'", e1));
                                }
                            }
                        });
                        jPopupMenu.add(discrColumnMenuItemN);
                    }

                }

                if (column > 0 && dataSet.attribute(column - 1)
                        .isNumeric()/*WekaDataStatsUtil.isInteger(dataSet,column-1)*/) {
                    final JMenuItem nominalizeColumnMenuItem = new JMenuItem(
                            "Nominalize this column ('" + instanceTableModel.getColumnName(column) + "')");
                    nominalizeColumnMenuItem.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(final ActionEvent e) {
                            try {
                                final Instances newdataSet = WekaDataProcessingUtil
                                        .buildNominalizedDataSet(dataSet, new int[] { modelColumn - 1 });
                                pushDataChange(new DataChange(newdataSet, TabView.DataChangeTypeEnum.Update));
                            } catch (Exception e1) {
                                eventPublisher.publish(new ErrorOccuredEvent("Error during nominalization of '"
                                        + instanceTableModel.getColumnName(modelColumn) + "'", e1));
                            }
                        }
                    });
                    jPopupMenu.add(nominalizeColumnMenuItem);
                }

                if (column > 0 && (dataSet.attribute(column - 1).isNominal()
                        || dataSet.attribute(column - 1).isString())) {
                    final JMenuItem numColumnMenuItem = new JMenuItem(
                            "Numerize this column ('" + instanceTableModel.getColumnName(column) + "')");
                    numColumnMenuItem.addActionListener(new ActionListener() {
                        @Override
                        public void actionPerformed(final ActionEvent e) {
                            try {
                                final Instances newdataSet = WekaDataProcessingUtil
                                        .buildDataSetWithNumerizedStringAttribute(dataSet, column - 1);
                                pushDataChange(new DataChange(newdataSet, TabView.DataChangeTypeEnum.Update));
                            } catch (Exception e1) {
                                eventPublisher.publish(new ErrorOccuredEvent("Error during numerization of '"
                                        + instanceTableModel.getColumnName(column) + "'", e1));
                            }
                        }
                    });
                    jPopupMenu.add(numColumnMenuItem);
                }

                final JMenuItem removeRowMenuItem = new JMenuItem(
                        "Remove this row (id='" + instanceTableModel.getValueAt(row, 0) + "')");
                removeRowMenuItem.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(final ActionEvent e) {
                        final Instances newdataSet = new Instances(dataSet);
                        newdataSet.remove(modelRow);
                        instanceTableModel.removeRow(modelRow);
                        pushDataChange(new DataChange(newdataSet, TabView.DataChangeTypeEnum.Deletion));
                    }
                });
                jPopupMenu.add(removeRowMenuItem);

                final JMenuItem selectKNNMenuItem = new JMenuItem("Select nearest neighbours of this row (id='"
                        + instanceTableModel.getValueAt(modelRow, 0) + "')");
                selectKNNMenuItem.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(final ActionEvent e) {
                        try {
                            final Instances knnResult = WekaMachineLearningUtil
                                    .computeNearestNeighbours(dataSet, instanceTableModel.getRow(modelRow), 10);
                            pushDataChange(new DataChange(knnResult, TabView.DataChangeTypeEnum.Selection));
                        } catch (Exception e1) {
                            eventPublisher.publish(new ErrorOccuredEvent(
                                    "Error when selecting nearest neighbours of this row!", e1));
                        }
                    }
                });
                jPopupMenu.add(selectKNNMenuItem);

                jPopupMenu.show(instanceTable, e.getX(), e.getY());
            }
        }
    });

    this.instanceTable.packAll();
    final int tableWidth = (int) this.instanceTable.getPreferredSize().getWidth() + 30;
    this.scrollPane = new JScrollPane(this.instanceTable);
    this.scrollPane.setPreferredSize(new Dimension(Math.min(tableWidth, 500), 500));
    this.scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
}

From source file:lu.lippmann.cdb.datasetview.tabs.TimeSeriesCalendarPanel.java

License:Open Source License

public void refresh(final Instances dataSet, final int dateIdx) {
    refresh(dataSet, dateIdx, dataSet.classIndex(), Mode.ONE_DAY_IN_TWO_PIECHARTS);
}

From source file:lu.lippmann.cdb.datasetview.tasks.HierarchizeReverseTask.java

License:Open Source License

/**
 * {@inheritDoc}// w w w .j a  va 2  s. com
 */
@Override
Instances process0(final Instances dataSet) throws Exception {
    if (dataSet.classIndex() == -1)
        throw new Exception("Need a selected class!");
    final int[] idx = WekaMachineLearningUtil.computeRankedAttributes(dataSet);
    ArrayUtils.reverse(idx);
    return WekaDataProcessingUtil.buildFilteredByAttributesDataSet(dataSet, idx);
}

From source file:lu.lippmann.cdb.datasetview.tasks.HierarchizeTask.java

License:Open Source License

/**
 * {@inheritDoc}/*from  w w w  .ja  v a  2s .c om*/
 */
@Override
Instances process0(final Instances dataSet) throws Exception {
    if (dataSet.classIndex() == -1)
        throw new Exception("Need a selected class!");
    return WekaDataProcessingUtil.buildHierarchizedDataSet(dataSet);
}

From source file:lu.lippmann.cdb.datasetview.tasks.SupervisedDiscretizeTask.java

License:Open Source License

/**
 * {@inheritDoc}//w  ww  . j a va  2 s .co  m
 */
@Override
Instances process0(final Instances dataSet) throws Exception {
    if (dataSet.classIndex() == -1)
        throw new Exception("Need a selected class!");
    return WekaDataProcessingUtil.buildDiscretizedDataSetSupervised(dataSet);
}

From source file:lu.lippmann.cdb.datasetview.tasks.SupervisedFeatureSelectionTask.java

License:Open Source License

/**
 * {@inheritDoc}/* w  w w. j a va2  s  .  co  m*/
 */
@Override
Instances process0(final Instances dataSet) throws Exception {
    if (dataSet.classIndex() == -1)
        throw new Exception("Need a selected class!");
    return WekaDataProcessingUtil.buildDataSetWithBestAttributes(dataSet);
}

From source file:lu.lippmann.cdb.datasetview.tasks.SupervisedFeatureSelectionWithDecisionTreeTask.java

License:Open Source License

/**
 * {@inheritDoc}/*from   w w  w.j  a  va 2 s  .  c  om*/
 */
@Override
Instances process0(final Instances dataSet) throws Exception {
    if (dataSet.classIndex() == -1)
        throw new Exception("Need a selected class!");

    final DecisionTree dt = dtFactory.buildCachedDecisionTree(dataSet);
    final Set<Integer> attrToKeep = new HashSet<Integer>();

    for (final CNode cn : dt.getGraphWithOperations().getVertices()) {
        final Attribute attribute = dataSet.attribute(cn.getName());
        if (attribute != null)
            attrToKeep.add(attribute.index());
    }
    attrToKeep.add(dataSet.classIndex());

    final int size = attrToKeep.size();
    final int[] array = new int[size];
    int i = 0;
    final Iterator<Integer> iter = attrToKeep.iterator();
    while (iter.hasNext()) {
        array[i] = iter.next().intValue();
        i++;
    }

    return WekaDataProcessingUtil.buildFilteredByAttributesDataSet(dataSet, array);
}

From source file:lu.lippmann.cdb.datasetview.tasks.SupervisedMergeValuesOfFirstNominalTask.java

License:Open Source License

/**
 * {@inheritDoc}/*from   w  w w .j a  v  a2  s .  co  m*/
 */
@Override
Instances process0(final Instances dataSet) throws Exception {
    final int[] idxs = WekaDataStatsUtil.getNominalAttributesIndexes(dataSet);
    if (idxs.length > 0) {
        int idx = idxs[0];
        if (idx == dataSet.classIndex() && idxs.length > 1)
            idx = idxs[1];
        final Instances newds = WekaDataProcessingUtil.buildDataSetWithSupervisedMergeNominalValues(dataSet,
                idx);
        return newds;
    } else {
        return dataSet;
    }
}

From source file:lu.lippmann.cdb.datasetview.tasks.TransformFirstNominalAsBinariesTask.java

License:Open Source License

/**
 * {@inheritDoc}/*from w w  w . j  a  v  a2s. com*/
 */
@Override
Instances process0(final Instances dataSet) throws Exception {
    final int[] idxs = WekaDataStatsUtil.getNominalAttributesIndexes(dataSet);
    if (idxs.length > 0) {
        int idx = idxs[0];
        if (idx == dataSet.classIndex() && idxs.length > 1)
            idx = idxs[1];
        final Instances newds = WekaDataProcessingUtil.buildDataSetWithNominalAsBinary(dataSet, idx);
        return newds;
    } else {
        return dataSet;
    }
}