计算簇间距离

<strong><span style="font-size:18px;">/***
 * @author YangXin
 * @info 计算簇间距
 */
package unitTen;
import java.util.ArrayList;
import java.util.List;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.SequenceFile;
import org.apache.hadoop.io.Writable;
import org.apache.mahout.clustering.Cluster;
import org.apache.mahout.common.distance.CosineDistanceMeasure;
import org.apache.mahout.common.distance.DistanceMeasure;
public class InterClusterDistances {
	 public static void main(String args[]) throws Exception {

		    String inputFile = "reuters-kmeans-clusters/clusters-6/part-r-00000";

		    Configuration conf = new Configuration();
		    Path path = new Path(inputFile);
		    System.out.println("Input Path: " + path);
		    FileSystem fs = FileSystem.get(path.toUri(), conf);

		    List<Cluster> clusters = new ArrayList<Cluster>();

		    SequenceFile.Reader reader = new SequenceFile.Reader(
		        fs, path, conf);
		    Writable key = (Writable) reader.getKeyClass()
		        .newInstance();
		    Writable value = (Writable) reader.getValueClass()
		        .newInstance();

		    while (reader.next(key, value)) {
		      Cluster cluster = (Cluster) value;
		      clusters.add(cluster);
		      value = (Writable) reader.getValueClass()
		          .newInstance();
		    }

		    DistanceMeasure measure = new CosineDistanceMeasure();
		    double max = 0;
		    double min = Double.MAX_VALUE;
		    double sum = 0;
		    int count = 0;
		    for (int i = 0; i < clusters.size(); i++) {
		      for (int j = i + 1; j < clusters.size(); j++) {
		        double d = measure.distance(clusters.get(i)
		            .getCenter(), clusters.get(j).getCenter());
		        min = Math.min(d, min);
		        max = Math.max(d, max);
		        sum += d;
		        count++;
		      }
		    }

		    System.out.println("Maximum Intercluster Distance: "
		                       + max);
		    System.out.println("Minimum Intercluster Distance: "
		                       + min);
		    System.out
		        .println("Average Intercluster Distance(Scaled): "
		                 + (sum / count - min) / (max - min));
		  }
}
</span></strong>

时间: 2024-10-27 16:39:29

计算簇间距离的相关文章

计算两点间的距离

计算两点间的距离 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 208295    Accepted Submission(s): 72641 Problem Description 输入两点坐标(X1,Y1),(X2,Y2),计算并输出两点间的距离. Input 输入数据有多组,每组占一行,由4个实数组成,分别表示x1,y1,x2,y

HDOJ 2001 计算两点间的距离

计算两点间的距离 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 94573    Accepted Submission(s): 36296 Problem Description 输入两点坐标(X1,Y1),(X2,Y2),计算并输出两点间的距离. Input 输入数据有多组,每组占一行,由4个实数组成,分别表示x1,y1,x2,y

ios根据gps坐标来计算两点间的距离

//ios根据gps坐标来计算两点间的距离 //x1,y1 点1的坐标 x2,y2点2的坐标 -(double) gps2m:(double)x1 _y1:(double)y1 _x2:(double)x2 _y2:(double)y2{ double radLat1 = (x1 * 3.1416 / 180.0); double radLat2 = (x2 * 3.1416 / 180.0); double a = radLat1 - radLat2; double b = (y1 - y2)

C++刷题——1924: 计算两点间的距离

1924: 计算两点间的距离 Description 输入两点坐标(X1,Y1),(X2,Y2),计算并输出两点间的距离. Input 输入数据有多组,每组占一行,由4个实数组成,分别表示x1,y1,x2,y2,数据之间用空格隔开. Output 对于每组输入数据,输出一行,结果保留两位小数. /* Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作者:陈丹妮 * 完成日期:2015年 5 月 20 日

计算两点间的距离,hdu-2001

计算两点间的距离 Problem Description 输入两点坐标(X1,Y1),(X2,Y2),计算并输出两点间的距离. Input 输入数据有多组,每组占一行,由4个实数组成,分别表示x1,y1,x2,y2,数据之间用空格隔开. Output 对于每组输入数据,输出一行,结果保留两位小数. Sample Input 0 0 0 1 0 1 1 0 Sample Output 1.00 1.41 1 #include<stdio.h> 2 #include<stdlib.h>

根据经纬度计算两点间的距离

地球是一个近乎标准的椭球体,它的赤道半径为6378.140千米,极半径为 6356.755千米,平均半径6371.004千米.如果我们假设地球是一个完美的球体,那么它的半径就是地球的平均半径,记为R.如果以0度经线为基 准,那么根据地球表面任意两点的经纬度就可以计算出这两点间的地表距离(这里忽略地球表面地形对计算带来的误差,仅仅是理论上的估算值).设第一点A的经 纬度为(LonA, LatA),第二点B的经纬度为(LonB, LatB),按照0度经线的基准,东经取经度的正值(Longitude)

hdu2001 计算两点间的距离【C++】

计算两点间的距离 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 254764    Accepted Submission(s): 88773 Problem Description 输入两点坐标(X1,Y1),(X2,Y2),计算并输出两点间的距离. Input 输入数据有多组,每组占一行,由4个实数组成,分别表示x1,y1,x2,y

根据经纬度计算两地间的距离

  import java.util.HashMap; import java.util.Map; public class MapDistance {    private static double EARTH_RADIUS = 6378.137;    private static double rad(double d) {        return d * Math.PI / 180.0;    }    /**     * 根据两个位置的经纬度,来计算两地的距离(单位为KM)   

C#面向对象思想计算两点之间距离

题目为计算两点之间距离. 面向过程的思维方式,两点的横坐标之差,纵坐标之差,平方求和,再开跟,得到两点之间距离. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Classes_2_point_distance { class Program { static void Main(string[