List of usage examples for weka.core ManhattanDistance ManhattanDistance
public ManhattanDistance()
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; }