本文整理匯總了Java中com.rapidminer.tools.math.similarity.DistanceMeasure.calculateDistance方法的典型用法代碼示例。如果您正苦於以下問題:Java DistanceMeasure.calculateDistance方法的具體用法?Java DistanceMeasure.calculateDistance怎麽用?Java DistanceMeasure.calculateDistance使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類com.rapidminer.tools.math.similarity.DistanceMeasure
的用法示例。
在下文中一共展示了DistanceMeasure.calculateDistance方法的12個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。
示例1: computeClusterDistances
import com.rapidminer.tools.math.similarity.DistanceMeasure; //導入方法依賴的package包/類
private void computeClusterDistances(DistanceMatrix centroidDistances, double[] s, CentroidClusterModel model,
DistanceMeasure measure) {
for (int i = 0; i < model.getNumberOfClusters(); i++) {
s[i] = Double.POSITIVE_INFINITY;
}
for (int i = 0; i < model.getNumberOfClusters(); i++) {
for (int j = i + 1; j < model.getNumberOfClusters(); j++) {
final double d = measure.calculateDistance(model.getCentroidCoordinates(i), model.getCentroidCoordinates(j));
if (d < s[i]) {
s[i] = d;
}
if (d < s[j]) {
s[j] = d;
}
centroidDistances.set(i, j, d);
}
}
for (int i = 0; i < model.getNumberOfClusters(); i++) {
s[i] = 0.5 * s[i];
}
}
示例2: computeClusterDistances
import com.rapidminer.tools.math.similarity.DistanceMeasure; //導入方法依賴的package包/類
private void computeClusterDistances(DistanceMatrix centroidDistances, double[] s,
CentroidClusterModel model, DistanceMeasure measure) {
for (int i = 0; i < model.getNumberOfClusters(); i++){
s[i] = Double.POSITIVE_INFINITY;
}
for (int i = 0; i < model.getNumberOfClusters(); i++){
for (int j = i+1; j < model.getNumberOfClusters(); j++){
final double d = measure.calculateDistance(model.getCentroidCoordinates(i), model.getCentroidCoordinates(j));
if (d < s[i]){
s[i] = d;
}
if (d < s[j]){
s[j] = d;
}
centroidDistances.set(i, j, d);
}
}
for (int i = 0; i < model.getNumberOfClusters(); i++){
s[i] = 0.5 * s[i];
}
}
示例3: getAverageWithinDistance
import com.rapidminer.tools.math.similarity.DistanceMeasure; //導入方法依賴的package包/類
private double[] getAverageWithinDistance(CentroidClusterModel model, ExampleSet exampleSet) throws OperatorException {
DistanceMeasure measure = new SquaredEuclideanDistance();
measure.init(exampleSet);
int numberOfClusters = model.getNumberOfClusters();
// counting distances within
double[] result = new double[numberOfClusters + 1];
int[] clusterSizes = new int[numberOfClusters];
int[] clusterIndices = model.getClusterAssignments(exampleSet);
int i = 0;
for (Example example : exampleSet) {
clusterSizes[clusterIndices[i]]++;
result[clusterIndices[i]] += measure.calculateDistance(example, model.getCentroidCoordinates(clusterIndices[i]));
i++;
}
// averaging by cluster sizes and sum over all
int totalSize = 0;
for (i = 0; i < numberOfClusters; i++) {
result[numberOfClusters] += result[i];
result[i] /= clusterSizes[i];
totalSize += clusterSizes[i];
}
result[numberOfClusters] /= totalSize;
return result;
}
示例4: getNeighbourhood
import com.rapidminer.tools.math.similarity.DistanceMeasure; //導入方法依賴的package包/類
private LinkedList<Integer> getNeighbourhood(Example centerExample, ExampleSet exampleSet, DistanceMeasure measure,
double epsilon) {
LinkedList<Integer> neighbourhood = new LinkedList<Integer>();
int i = 0;
for (Example example : exampleSet) {
double distance = measure.calculateDistance(centerExample, example);
if (distance < epsilon) {
neighbourhood.add(i);
}
i++;
}
return neighbourhood;
}
示例5: createHistogramPlotter
import com.rapidminer.tools.math.similarity.DistanceMeasure; //導入方法依賴的package包/類
private Plotter createHistogramPlotter(SimilarityMeasureObject sim, ExampleSet exampleSet) {
DistanceMeasure measure = sim.getDistanceMeasure();
DataTable dataTable = new SimpleDataTable("Histogram", new String[] { "Histogram" });
double sampleRatio = Math.min(1.0d, 500.0d / exampleSet.size());
Random random = new Random();
int i = 0;
for (Example example : exampleSet) {
int j = 0;
for (Example comExample : exampleSet) {
if (j != i && random.nextDouble() < sampleRatio) {
double simValue;
if (measure.isDistance()) {
simValue = measure.calculateDistance(example, comExample);
} else {
simValue = measure.calculateSimilarity(example, comExample);
}
dataTable.add(new SimpleDataTableRow(new double[] { simValue }));
}
j++;
}
i++;
}
PlotterConfigurationModel settings = new PlotterConfigurationModel(PlotterConfigurationModel.HISTOGRAM_PLOT,
dataTable);
settings.enablePlotColumn(0);
settings.setParameterAsInt(HistogramChart.PARAMETER_NUMBER_OF_BINS, 100);
return settings.getPlotter();
}
示例6: getAverageWithinDistance
import com.rapidminer.tools.math.similarity.DistanceMeasure; //導入方法依賴的package包/類
private double[] getAverageWithinDistance(CentroidClusterModel model, ExampleSet exampleSet) throws OperatorException {
DistanceMeasure measure = new SquaredEuclideanDistance();
measure.init(exampleSet);
int numberOfClusters = model.getNumberOfClusters();
// counting distances within
double[] result = new double[numberOfClusters + 1];
int[] clusterSizes = new int[numberOfClusters];
int[] clusterIndices = model.getClusterAssignments(exampleSet);
int i = 0;
for (Example example: exampleSet) {
clusterSizes[clusterIndices[i]]++;
result[clusterIndices[i]] += measure.calculateDistance(example, model.getCentroidCoordinates(clusterIndices[i]));
i++;
}
// averaging by cluster sizes and sum over all
int totalSize = 0;
for (i = 0; i < numberOfClusters; i++) {
result[numberOfClusters] += result[i];
result[i] /= clusterSizes[i];
totalSize += clusterSizes[i];
}
result[numberOfClusters] /= totalSize;
return result;
}
示例7: getDaviesBouldin
import com.rapidminer.tools.math.similarity.DistanceMeasure; //導入方法依賴的package包/類
private double getDaviesBouldin(CentroidClusterModel model, ExampleSet exampleSet) throws OperatorException {
DistanceMeasure measure = new EuclideanDistance();
measure.init(exampleSet);
int numberOfClusters = model.getNumberOfClusters();
// counting distances within
double[] withinClusterDistance = new double[numberOfClusters];
int[] clusterSizes = new int[numberOfClusters];
int[] clusterIndices = model.getClusterAssignments(exampleSet);
int i = 0;
for (Example example: exampleSet) {
clusterSizes[clusterIndices[i]]++;
withinClusterDistance[clusterIndices[i]] += measure.calculateDistance(example, model.getCentroidCoordinates(clusterIndices[i]));
i++;
}
// averaging by cluster sizes and sum over all
for (i = 0; i < numberOfClusters; i++) {
withinClusterDistance[i] /= clusterSizes[i];
}
double result = 0.0;
for (i = 0; i < numberOfClusters; i++) {
double max = Double.NEGATIVE_INFINITY;
for (int j = 0; j < numberOfClusters; j++)
if (i != j) {
double val = (withinClusterDistance[i] + withinClusterDistance[j]) / measure.calculateDistance(model.getCentroidCoordinates(i), model.getCentroidCoordinates(j));
if (val > max)
max = val;
}
result = result + max;
}
return result / model.getNumberOfClusters();
}
示例8: getNeighbourhood
import com.rapidminer.tools.math.similarity.DistanceMeasure; //導入方法依賴的package包/類
private LinkedList<Integer> getNeighbourhood(Example centerExample, ExampleSet exampleSet, DistanceMeasure measure, double epsilon) {
LinkedList<Integer> neighbourhood = new LinkedList<Integer>();
int i = 0;
for (Example example: exampleSet) {
double distance = measure.calculateDistance(centerExample, example);
if (distance < epsilon)
neighbourhood.add(i);
i++;
}
return neighbourhood;
}
示例9: createHistogramPlotter
import com.rapidminer.tools.math.similarity.DistanceMeasure; //導入方法依賴的package包/類
private Plotter createHistogramPlotter(SimilarityMeasureObject sim, ExampleSet exampleSet) {
DistanceMeasure measure = sim.getDistanceMeasure();
DataTable dataTable = new SimpleDataTable("Histogram", new String[] { "Histogram" });
double sampleRatio = Math.min(1.0d, 500.0d / exampleSet.size());
Random random = new Random();
int i = 0;
for (Example example : exampleSet) {
int j = 0;
for (Example comExample : exampleSet) {
if (j != i && random.nextDouble() < sampleRatio) {
double simValue;
if (measure.isDistance())
simValue = measure.calculateDistance(example, comExample);
else
simValue = measure.calculateSimilarity(example, comExample);
dataTable.add(new SimpleDataTableRow(new double[] { simValue }));
}
j++;
}
i++;
}
PlotterConfigurationModel settings = new PlotterConfigurationModel(PlotterConfigurationModel.HISTOGRAM_PLOT, dataTable);
settings.enablePlotColumn(0);
settings.setParameterAsInt(HistogramChart.PARAMETER_NUMBER_OF_BINS, 100);
return settings.getPlotter();
}
示例10: getDaviesBouldin
import com.rapidminer.tools.math.similarity.DistanceMeasure; //導入方法依賴的package包/類
private double getDaviesBouldin(CentroidClusterModel model, ExampleSet exampleSet) throws OperatorException {
DistanceMeasure measure = new EuclideanDistance();
measure.init(exampleSet);
int numberOfClusters = model.getNumberOfClusters();
// counting distances within
double[] withinClusterDistance = new double[numberOfClusters];
int[] clusterSizes = new int[numberOfClusters];
int[] clusterIndices = model.getClusterAssignments(exampleSet);
int i = 0;
for (Example example : exampleSet) {
clusterSizes[clusterIndices[i]]++;
withinClusterDistance[clusterIndices[i]] += measure.calculateDistance(example,
model.getCentroidCoordinates(clusterIndices[i]));
i++;
}
// averaging by cluster sizes and sum over all
for (i = 0; i < numberOfClusters; i++) {
withinClusterDistance[i] /= clusterSizes[i];
}
double result = 0.0;
for (i = 0; i < numberOfClusters; i++) {
double max = Double.NEGATIVE_INFINITY;
for (int j = 0; j < numberOfClusters; j++) {
if (i != j) {
double val = (withinClusterDistance[i] + withinClusterDistance[j])
/ measure.calculateDistance(model.getCentroidCoordinates(i), model.getCentroidCoordinates(j));
if (val > max) {
max = val;
}
}
}
result = result + max;
}
return result / model.getNumberOfClusters();
}
示例11: computeCOF
import com.rapidminer.tools.math.similarity.DistanceMeasure; //導入方法依賴的package包/類
public void computeCOF(ArrayList<COFObject> cofobjectList, int k, DistanceMeasure measure) {
// define a list of knn for each cof object
PriorityQueue<COFKnn> knnList = new PriorityQueue<COFKnn>();
// reset pcl, kDist, and deviation
double pcl = 0.0;
double kDist = 0.0;
double deviation = 0.0;
for (COFObject cofobject : cofobjectList) {// for all objects in the dataset
double distance = Double.POSITIVE_INFINITY;
// compute the distance to current object
distance = measure.calculateDistance(this.getValues(), cofobject.getValues());
COFKnn cOFKnn = new COFKnn(cofobject, distance);
// determine if cofobject is on of the nearest neighbors to current object
if (knnList.size() < k) {
knnList.offer(cOFKnn);
} else if (distance < knnList.peek().getDistance()) {
knnList.remove();
knnList.offer(cOFKnn);
}
// if the cofobject has the same class label, add its distance to deviation
if (this.getLabel() == cofobject.getLabel()) {
deviation += distance;
}
}
this.setDeviation(deviation); // save deviation
// compute pcl to current object
for (COFKnn cofKnn : knnList) {
kDist += measure.calculateDistance(getValues(), cofKnn.getCofobject().getValues());
if (this.getLabel() == cofKnn.getCofobject().getLabel()) {
pcl++;
}
}
this.setPcl(pcl); // save pcl
this.setCOF(pcl); // save the initial cof based on pcl
this.setKDist(kDist); // save kDist
}
示例12: computeCOF
import com.rapidminer.tools.math.similarity.DistanceMeasure; //導入方法依賴的package包/類
public void computeCOF(ArrayList<COFObject> cofobjectList, int k, DistanceMeasure measure) {
// define a list of knn for each cof object
PriorityQueue<COFKnn> knnList = new PriorityQueue<COFKnn>();
// reset pcl, kDist, and deviation
double pcl = 0.0;
double kDist = 0.0;
double deviation = 0.0;
for (COFObject cofobject : cofobjectList) {// for all objects in the dataset
double distance = Double.POSITIVE_INFINITY;
// compute the distance to current object
distance = measure.calculateDistance(this.getValues(), cofobject.getValues());
COFKnn cOFKnn = new COFKnn(cofobject, distance);
// determine if cofobject is on of the nearest neighbors to current object
if (knnList.size() < k)
knnList.offer(cOFKnn);
// if the KNN list is full, remove the far neighbor
// i.e, keep only the nearest neighbors
else if (distance < knnList.peek().getDistance()) {
knnList.remove();
knnList.offer(cOFKnn);
}
// if the cofobject has the same class label, add its distance to deviation
if (this.getLabel() == cofobject.getLabel())
deviation += distance;
}
this.setDeviation(deviation); // save deviation
// compute pcl to current object
for (COFKnn cofKnn : knnList) {
kDist += measure.calculateDistance(getValues(), cofKnn.getCofobject().getValues());
if (this.getLabel() == cofKnn.getCofobject().getLabel()) {
pcl++;
}
}
this.setPcl(pcl); // save pcl
this.setCOF(pcl); // save the initial cof based on pcl
this.setKDist(kDist); // save kDist
}