Example usage for weka.core ManhattanDistance ManhattanDistance

List of usage examples for weka.core ManhattanDistance ManhattanDistance

Introduction

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

Prototype

public ManhattanDistance() 

Source Link

Document

Constructs an Manhattan Distance object, Instances must be still set.

Usage

From source file:hurtowniedanych.FXMLController.java

public void trainAndTestKNN() throws FileNotFoundException, IOException, Exception {

    InstanceQuery instanceQuery = new InstanceQuery();
    instanceQuery.setUsername("postgres");
    instanceQuery.setPassword("szupek");
    instanceQuery.setCustomPropsFile(new File("./src/data/DatabaseUtils.props")); // Wskazanie pliku z ustawieniami dla PostgreSQL

    String query = "select ks.wydawnictwo,ks.gatunek, kl.mia-sto\n" + "from zakupy z,ksiazki ks,klienci kl\n"
            + "where ks.id_ksiazka=z.id_ksiazka and kl.id_klient=z.id_klient";

    instanceQuery.setQuery(query);//from   ww  w.j  a v a 2s  . c  o  m
    Instances data = instanceQuery.retrieveInstances();
    data.setClassIndex(data.numAttributes() - 1);

    data.randomize(new Random());
    double percent = 70.0;
    int trainSize = (int) Math.round(data.numInstances() * percent / 100);
    int testSize = data.numInstances() - trainSize;
    Instances trainData = new Instances(data, 0, trainSize);
    Instances testData = new Instances(data, trainSize, testSize);

    int lSasiadow = Integer.parseInt(textFieldKnn.getText());
    System.out.println(lSasiadow);

    IBk ibk = new IBk(lSasiadow);

    // Ustawienie odleglosci
    EuclideanDistance euclidean = new EuclideanDistance(); // euklidesowej
    ManhattanDistance manhatan = new ManhattanDistance(); // miejska  

    LinearNNSearch linearNN = new LinearNNSearch();

    if (comboboxOdleglosc.getSelectionModel().getSelectedItem().equals("Manhatan")) {
        linearNN.setDistanceFunction(manhatan);
    } else {
        linearNN.setDistanceFunction(euclidean);
    }

    ibk.setNearestNeighbourSearchAlgorithm(linearNN); // ustawienie sposobu szukania sasiadow

    // Tworzenie klasyfikatora
    ibk.buildClassifier(trainData);

    Evaluation eval = new Evaluation(trainData);
    eval.evaluateModel(ibk, testData);
    spr.setVisible(true);
    labelKnn.setVisible(true);
    labelOdleglosc.setVisible(true);
    labelKnn.setText(textFieldKnn.getText());
    labelOdleglosc.setText(comboboxOdleglosc.getSelectionModel().getSelectedItem().toString());
    spr.setText(eval.toSummaryString("Wynik:", true));
}

From source file:org.iobserve.analysis.behavior.clustering.hierarchical.HierarchicalClustering.java

License:Apache License

/**
 * Setter for distance function./*from   w  ww .  jav  a2 s . c  o m*/
 *
 * @param distanceType
 *            Chosen distance function.
 */
private void setDistanceFunction(final String distanceType) {
    switch (distanceType) {
    case "manhatten":
        this.distanceFunction = new ManhattanDistance();
        break;
    case "euclidean":
        this.distanceFunction = new EuclideanDistance();
        break;
    default:
        this.distanceFunction = new EuclideanDistance(); // Euclidean as default.
        break;
    }
}

From source file:org.iobserve.analysis.behavior.clustering.xmeans.XMeansBehaviorModelAggregation.java

License:Apache License

/**
 * Constructor configuration of the aggregation filters.
 *
 * @param namePrefix/*w  ww.j  a va2s  .  co  m*/
 *            name prefix
 * @param visualizationUrl
 *            path or url for the sink
 * @param signatureCreationStrategy
 *            signature creation strategy
 * @param expectedUserGroups
 *            expected user groups
 * @param variance
 *            variance
 */
public XMeansBehaviorModelAggregation(final String namePrefix, final String visualizationUrl,
        final ISignatureCreationStrategy signatureCreationStrategy, final int expectedUserGroups,
        final int variance) {
    final BehaviorModelCreationStage behaviorModelCreationStage = new BehaviorModelCreationStage(namePrefix);

    this.clustering = new VectorQuantizationClusteringStage(
            new XMeansClustering(expectedUserGroups, variance, new ManhattanDistance()));
    this.connectPorts(this.clustering.getOutputPort(), behaviorModelCreationStage.getInputPort());

    /** visualization integration. */
    final AbstractBehaviorModelOutputSink tIObserveUBM = new BehaviorModelSink(visualizationUrl,
            signatureCreationStrategy);

    this.connectPorts(behaviorModelCreationStage.getOutputPort(), tIObserveUBM.getInputPort());
}

From source file:org.iobserve.analysis.behavior.karlsruhe.XMeansClustering.java

License:Apache License

/**
 *
 * @param instances//ww  w. j  a va  2s  . com
 *            data to cluster in Weka format
 * @param numberOfUserGroupsFromInputUsageModel
 *            is the input number of clusters
 * @param varianceOfUserGroups
 *            enables the creation of a minimum and maximum number of clusters
 * @param seed
 *            states a random determination of the initial centroids
 * @return the clustering results that contain the number of cluster and the assignments
 */
public ClusteringResults clusterSessionsWithXMeans(final Instances instances,
        final int numberOfUserGroupsFromInputUsageModel, final int varianceOfUserGroups, final int seed) {

    ClusteringResults xMeansClusteringResults = null;

    try {

        final XMeans xmeans = new XMeans();
        xmeans.setSeed(seed);

        final NormalizableDistance manhattenDistance = new ManhattanDistance();
        manhattenDistance.setDontNormalize(false);
        manhattenDistance.setInstances(instances);
        xmeans.setDistanceF(manhattenDistance);

        int[] clustersize = null;
        final int[] assignments = new int[instances.numInstances()];

        // Determines the range of clusters
        // The X-Means clustering algorithm determines the best fitting number of clusters
        // within this range by itself
        int numberOfClustersMin = numberOfUserGroupsFromInputUsageModel - varianceOfUserGroups;
        int numberOfClustersMax = numberOfUserGroupsFromInputUsageModel + varianceOfUserGroups;
        if (numberOfClustersMax < 2) {
            numberOfClustersMax = 1;
            numberOfClustersMin = 1;
        } else {
            if (numberOfClustersMin < 2) {
                numberOfClustersMin = 2;
            }
        }

        xmeans.setMinNumClusters(numberOfClustersMin);
        xmeans.setMaxNumClusters(numberOfClustersMax);
        xmeans.buildClusterer(instances);

        clustersize = new int[xmeans.getClusterCenters().numInstances()];
        for (int s = 0; s < instances.numInstances(); s++) {
            assignments[s] = xmeans.clusterInstance(instances.instance(s));
            clustersize[xmeans.clusterInstance(instances.instance(s))]++;
        }
        final ClusteringMetrics clusteringMetrics = new ClusteringMetrics(xmeans.getClusterCenters(), instances,
                assignments);
        clusteringMetrics.calculateSimilarityMetrics();

        xMeansClusteringResults = new ClusteringResults("X-Means", xmeans.getClusterCenters().numInstances(),
                assignments, clusteringMetrics);

    } catch (final Exception e) { // NOPMD NOCS due to broken xmeans implementation triggering
                                  // Exception
        e.printStackTrace();
    }

    return xMeansClusteringResults;
}

From source file:org.iobserve.analysis.behavior.models.data.configuration.BehaviorModelConfiguration.java

License:Apache License

/**
 * Default constructor.//  www . ja  v a  2s.  c  o  m
 */
public BehaviorModelConfiguration() {
    this.behaviorModelNamePrefix = "BehaviorModel";
    this.visualizationUrl = "localhost:8080";
    this.keepEmptyTransitions = true;
    this.modelGenerationFilter = new EntryCallFilterRules(false).addFilterRule(".*");
    this.representativeStrategy = new JPetstoreRepresentativeStrategy();
    this.signatureCreationStrategy = new GetLastXSignatureStrategy(Integer.MAX_VALUE);
    this.clustering = new XMeansClustering(1, 1, new ManhattanDistance());
}

From source file:org.iobserve.analysis.clustering.filter.XMeansClassification.java

License:Apache License

public XMeansClassification(final Configuration configuration) throws ConfigurationException {
    /** Get keep time for user sessions */
    final long keepTime = configuration.getLongProperty(ConfigurationKeys.KEEP_TIME, -1);
    if (keepTime < 0) {
        XMeansClassification.LOGGER.error("Initialization incomplete: No keep time interval specified.");
        throw new ConfigurationException("Initialization incomplete: No keep time interval specified.");
    }//from w ww  .  ja  v a2  s  .c o  m

    final int minCollectionSize = configuration.getIntProperty(ConfigurationKeys.MIN_SIZE, -1);
    if (minCollectionSize < 0) {
        XMeansClassification.LOGGER
                .error("Initialization incomplete: No min size for user sessions specified.");
        throw new ConfigurationException("Initialization incomplete: No min size for user sessions specified.");
    }

    final int variance = configuration.getIntProperty(ConfigurationKeys.XM_VAR, -1);
    if (variance < 0) {
        XMeansClassification.LOGGER.error("Initialization incomplete: No variance for xmeans specified.");
        throw new ConfigurationException("Initialization incomplete: No variance for xmeans specified.");
    }

    final int expectedClusters = configuration.getIntProperty(ConfigurationKeys.XM_EXP_CLUS, -1);
    if (expectedClusters < 0) {
        XMeansClassification.LOGGER
                .error("Initialization incomplete: No number of expected clusters specified.");
        throw new ConfigurationException(
                "Initialization incomplete: No number of expected clusters specified.");
    }

    final boolean keepEmptyTransitions = configuration.getBooleanProperty(ConfigurationKeys.KEEP_EMPTY_TRANS,
            true);

    /** Todo: incoperate to config */
    final IRepresentativeStrategy representativeStrategy = new JPetstoreRepresentativeStrategy();

    final SessionsToInstancesStage sessionsToInstances = new SessionsToInstancesStage(keepTime,
            minCollectionSize, representativeStrategy, keepEmptyTransitions);
    final VectorQuantizationClusteringStage tVectorQuantizationClustering = new VectorQuantizationClusteringStage(
            new XMeansClustering(variance, expectedClusters, new ManhattanDistance()));
    final BehaviorModelCreationStage tBehaviorModelCreation = new BehaviorModelCreationStage("xmeans-");

    this.sessionInputPort = sessionsToInstances.getSessionInputPort();
    this.timerInputPort = sessionsToInstances.getTimerInputPort();
    this.outputPort = tBehaviorModelCreation.getOutputPort();

    this.connectPorts(sessionsToInstances.getOutputPort(), tVectorQuantizationClustering.getInputPort());
    this.connectPorts(tVectorQuantizationClustering.getOutputPort(), tBehaviorModelCreation.getInputPort());
}

From source file:org.iobserve.analysis.userbehavior.XMeansClustering.java

License:Apache License

/**
 *
 * @param instances/*from ww w.java 2  s .  c o  m*/
 *            data to cluster in Weka format
 * @param numberOfUserGroupsFromInputUsageModel
 *            is the input number of clusters
 * @param varianceOfUserGroups
 *            enables the creation of a minimum and maximum number of clusters
 * @param seed
 *            states a random determination of the initial centroids
 * @return the clustering results that contain the number of cluster and the assignments
 */
public ClusteringResults clusterSessionsWithXMeans(final Instances instances,
        final int numberOfUserGroupsFromInputUsageModel, final int varianceOfUserGroups, final int seed) {

    ClusteringResults xMeansClusteringResults = null;

    try {

        final XMeans xmeans = new XMeans();
        xmeans.setSeed(seed);

        final NormalizableDistance manhattenDistance = new ManhattanDistance();
        manhattenDistance.setDontNormalize(false);
        manhattenDistance.setInstances(instances);
        xmeans.setDistanceF(manhattenDistance);

        int[] clustersize = null;
        final int[] assignments = new int[instances.numInstances()];

        // Determines the range of clusters
        // The X-Means clustering algorithm determines the best fitting number of clusters
        // within this range by itself
        int numberOfClustersMin = numberOfUserGroupsFromInputUsageModel - varianceOfUserGroups;
        int numberOfClustersMax = numberOfUserGroupsFromInputUsageModel + varianceOfUserGroups;
        if (numberOfClustersMax < 2) {
            numberOfClustersMax = 1;
            numberOfClustersMin = 1;
        } else {
            if (numberOfClustersMin < 2) {
                numberOfClustersMin = 2;
            }
        }

        xmeans.setMinNumClusters(numberOfClustersMin);
        xmeans.setMaxNumClusters(numberOfClustersMax);
        xmeans.buildClusterer(instances);

        clustersize = new int[xmeans.getClusterCenters().numInstances()];
        for (int s = 0; s < instances.numInstances(); s++) {
            assignments[s] = xmeans.clusterInstance(instances.instance(s));
            clustersize[xmeans.clusterInstance(instances.instance(s))]++;
        }

        final ClusteringMetrics clusteringMetrics = new ClusteringMetrics(xmeans.getClusterCenters(), instances,
                assignments);
        clusteringMetrics.calculateSimilarityMetrics();

        xMeansClusteringResults = new ClusteringResults("X-Means", xmeans.getClusterCenters().numInstances(),
                assignments, clusteringMetrics);

    } catch (final Exception e) { // NOCS due to broken xmeans implementation triggering
                                  // Exception
        e.printStackTrace();
    }

    return xMeansClusteringResults;
}