當前位置: 首頁>>代碼示例>>Java>>正文


Java CentroidClusterModel.getNumberOfClusters方法代碼示例

本文整理匯總了Java中com.rapidminer.operator.clustering.CentroidClusterModel.getNumberOfClusters方法的典型用法代碼示例。如果您正苦於以下問題:Java CentroidClusterModel.getNumberOfClusters方法的具體用法?Java CentroidClusterModel.getNumberOfClusters怎麽用?Java CentroidClusterModel.getNumberOfClusters使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在com.rapidminer.operator.clustering.CentroidClusterModel的用法示例。


在下文中一共展示了CentroidClusterModel.getNumberOfClusters方法的13個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。

示例1: calcBIC

import com.rapidminer.operator.clustering.CentroidClusterModel; //導入方法依賴的package包/類
/**
 * Calculate the BIC like in the paper by Dan Pelleg and Andrew Moore
 *
 * @param bestModel
 * @return BIC of the given modell
 */
private double calcBIC(CentroidClusterModel bestModel) {
	double loglike = 0;
	int numCenters = bestModel.getNumberOfClusters();
	int numDimensions = bestModel.getCentroidCoordinates(0).length;

	int numParameters = numCenters - 1 + // probabilities
			numCenters * numDimensions + // means
			numCenters; // variance params

	for (Cluster c : bestModel.getClusters()) {
		int current_id = c.getClusterId();
		loglike += logLikelihoodEstimate(c, bestModel.getCentroidCoordinates(current_id),
				bestModel.getClusterAssignments(exampleSet), numCenters);
	}

	loglike -= numParameters / 2.0 * Math.log(examplesize);
	return loglike;
}
 
開發者ID:transwarpio,項目名稱:rapidminer,代碼行數:25,代碼來源:XMeansCore.java

示例2: computeClusterDistances

import com.rapidminer.operator.clustering.CentroidClusterModel; //導入方法依賴的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];
	}
}
 
開發者ID:transwarpio,項目名稱:rapidminer,代碼行數:22,代碼來源:FastKMeans.java

示例3: createCentroidPlotter

import com.rapidminer.operator.clustering.CentroidClusterModel; //導入方法依賴的package包/類
private Plotter createCentroidPlotter(CentroidClusterModel cm, int width, int height) {
	String[] dimensionNames = cm.getAttributeNames();
	String[] columnNames = new String[dimensionNames.length + 1];
	System.arraycopy(dimensionNames, 0, columnNames, 0, dimensionNames.length);
	columnNames[columnNames.length - 1] = "Cluster";
	SimpleDataTable dataTable = new SimpleDataTable("Centroid Positions", columnNames);
	for (int i = 0; i < cm.getNumberOfClusters(); i++) {
		double[] centroidValues = cm.getCentroidCoordinates(i);
		String clusterName = cm.getCluster(i).getClusterId() + "";
		double[] values = new double[centroidValues.length + 1];
		System.arraycopy(centroidValues, 0, values, 0, centroidValues.length);
		values[values.length - 1] = dataTable.mapString(values.length - 1, clusterName);
		dataTable.add(new SimpleDataTableRow(values));
	}
	PlotterConfigurationModel settings = new PlotterConfigurationModel(PlotterConfigurationModel.PARALLEL_PLOT,
			dataTable);
	Plotter plotter = settings.getPlotter();
	settings.setParameterAsString(PlotterAdapter.PARAMETER_PLOT_COLUMN, columnNames[columnNames.length - 1]);
	settings.setParameterAsBoolean(LocalNormalizationPlotterAdapter.PARAMETER_LOCAL_NORMALIZATION, false);
	settings.setParameterAsBoolean(LabelRotatingPlotterAdapter.PARAMETER_ROTATE_LABELS, true);
	plotter.getPlotter().setSize(width, height);
	return plotter;
}
 
開發者ID:transwarpio,項目名稱:rapidminer,代碼行數:24,代碼來源:ClusterModelCentroidPlotRenderer.java

示例4: calcBIC

import com.rapidminer.operator.clustering.CentroidClusterModel; //導入方法依賴的package包/類
/**
 * Calculate the BIC like in the paper by Dan Pelleg and Andrew Moore
 *
 * @param bestModel
 * @return BIC of the given modell
 * @throws ProcessStoppedException
 */
private double calcBIC(CentroidClusterModel bestModel) throws ProcessStoppedException {
	double loglike = 0;
	int numCenters = bestModel.getNumberOfClusters();
	int numDimensions = bestModel.getCentroidCoordinates(0).length;

	int numParameters = numCenters - 1 + // probabilities
			numCenters * numDimensions + // means
			numCenters; // variance params

	for (Cluster c : bestModel.getClusters()) {
		int current_id = c.getClusterId();
		loglike += logLikelihoodEstimate(c, bestModel.getCentroidCoordinates(current_id), numCenters);
	}

	loglike -= numParameters / 2.0 * Math.log(examplesize);
	return loglike;
}
 
開發者ID:rapidminer,項目名稱:rapidminer-studio,代碼行數:25,代碼來源:XMeansCore.java

示例5: calcBIC

import com.rapidminer.operator.clustering.CentroidClusterModel; //導入方法依賴的package包/類
/**
 * Calculate the BIC like in the paper by Dan Pelleg and Andrew Moore
 * 
 * @param bestModel
 * @return BIC of the given modell
 */
private double calcBIC(CentroidClusterModel bestModel) {
	double loglike = 0;
	int numCenters = bestModel.getNumberOfClusters();
	int numDimensions = bestModel.getCentroidCoordinates(0).length;

	int numParameters = (numCenters - 1) + // probabilities
			numCenters * numDimensions + // means
			numCenters; // variance params

	for (Cluster c : bestModel.getClusters()) {
		int current_id = c.getClusterId();
		loglike += logLikelihoodEstimate(c,
				bestModel.getCentroidCoordinates(current_id),
				bestModel.getClusterAssignments(exampleSet), numCenters);
	}

	loglike -= (numParameters / 2.0) * Math.log(examplesize);
	return loglike;
}
 
開發者ID:rapidminer,項目名稱:rapidminer-5,代碼行數:26,代碼來源:XMeansCore.java

示例6: computeClusterDistances

import com.rapidminer.operator.clustering.CentroidClusterModel; //導入方法依賴的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];
	}
}
 
開發者ID:rapidminer,項目名稱:rapidminer-5,代碼行數:22,代碼來源:FastKMeans.java

示例7: createCentroidPlotter

import com.rapidminer.operator.clustering.CentroidClusterModel; //導入方法依賴的package包/類
private Plotter createCentroidPlotter(CentroidClusterModel cm, int width, int height) {
	String[] dimensionNames = cm.getAttributeNames();
	String[] columnNames = new String[dimensionNames.length + 1];
	System.arraycopy(dimensionNames, 0, columnNames, 0, dimensionNames.length);
	columnNames[columnNames.length - 1] = "Cluster";
	SimpleDataTable dataTable = new SimpleDataTable("Centroid Positions", columnNames);
	for (int i = 0; i < cm.getNumberOfClusters(); i++) {
		double[] centroidValues = cm.getCentroidCoordinates(i);
		String clusterName = cm.getCluster(i).getClusterId() + "";
		double[] values = new double[centroidValues.length + 1];
		System.arraycopy(centroidValues, 0, values, 0, centroidValues.length);
		values[values.length - 1] = dataTable.mapString(values.length - 1, clusterName);
		dataTable.add(new SimpleDataTableRow(values));
	}
	PlotterConfigurationModel settings = new PlotterConfigurationModel(PlotterConfigurationModel.PARALLEL_PLOT, dataTable);
	Plotter plotter = settings.getPlotter();
	settings.setParameterAsString(ParallelPlotter2.PARAMETER_PLOT_COLUMN, columnNames[columnNames.length - 1]);
	settings.setParameterAsBoolean(ParallelPlotter2.PARAMETER_LOCAL_NORMALIZATION, false);
	settings.setParameterAsBoolean(ParallelPlotter2.PARAMETER_ROTATE_LABELS, true);
	plotter.getPlotter().setSize(width, height);
	return plotter;
}
 
開發者ID:rapidminer,項目名稱:rapidminer-5,代碼行數:23,代碼來源:ClusterModelCentroidPlotRenderer.java

示例8: getAverageWithinDistance

import com.rapidminer.operator.clustering.CentroidClusterModel; //導入方法依賴的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;
}
 
開發者ID:transwarpio,項目名稱:rapidminer,代碼行數:30,代碼來源:CentroidBasedEvaluator.java

示例9: getAverageWithinDistance

import com.rapidminer.operator.clustering.CentroidClusterModel; //導入方法依賴的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;
}
 
開發者ID:rapidminer,項目名稱:rapidminer-5,代碼行數:30,代碼來源:CentroidBasedEvaluator.java

示例10: getDaviesBouldin

import com.rapidminer.operator.clustering.CentroidClusterModel; //導入方法依賴的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();
}
 
開發者ID:rapidminer,項目名稱:rapidminer-5,代碼行數:38,代碼來源:CentroidBasedEvaluator.java

示例11: getDaviesBouldin

import com.rapidminer.operator.clustering.CentroidClusterModel; //導入方法依賴的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();
}
 
開發者ID:transwarpio,項目名稱:rapidminer,代碼行數:42,代碼來源:CentroidBasedEvaluator.java

示例12: doWork

import com.rapidminer.operator.clustering.CentroidClusterModel; //導入方法依賴的package包/類
@Override
public void doWork() throws OperatorException {
	CentroidClusterModel clusterModel = clusterModelInput.getData(CentroidClusterModel.class);
	ExampleSet exampleSet = exampleSetInput.getData(ExampleSet.class);

	PerformanceVector performance = performanceInput.getDataOrNull(PerformanceVector.class);
	if (performance == null) {
		performance = new PerformanceVector();
	}

	int mainCriterionIndex = getParameterAsInt(PARAMETER_MAIN_CRITERION);
	boolean onlyMainCriterion = getParameterAsBoolean(PARAMETER_MAIN_CRITERION_ONLY);

	double multFactor = -1.0;
	if (getParameterAsBoolean(PARAMETER_MAXIMIZE)) {
		multFactor = 1.0;
	}

	double divisionFactor = 1.0;
	if (getParameterAsBoolean(PARAMETER_NORMALIZE)) {
		divisionFactor = exampleSet.getAttributes().size();
	}

	// Average Squared within cluster distance 0
	double[] averageWithinDistance = getAverageWithinDistance(clusterModel, exampleSet);

	avgWithinClusterDistance = averageWithinDistance[clusterModel.getNumberOfClusters()];
	PerformanceCriterion withinClusterDist = new EstimatedPerformance(CRITERIA_LIST[0],
			(multFactor * avgWithinClusterDistance) / divisionFactor, 1, false);
	if ((mainCriterionIndex == 0) || !onlyMainCriterion) {
		performance.addCriterion(withinClusterDist);
	}

	for (int i = 0; i < clusterModel.getNumberOfClusters(); i++) {
		PerformanceCriterion withinDistance = new EstimatedPerformance(CRITERIA_LIST[0] + "_cluster_"
				+ clusterModel.getCluster(i).getClusterId(), (multFactor * averageWithinDistance[i]) / divisionFactor,
				1, false);
		if ((mainCriterionIndex == 0) || !onlyMainCriterion) {
			performance.addCriterion(withinDistance);
		}
	}

	// Davies Bouldin 1
	daviesBouldin = getDaviesBouldin(clusterModel, exampleSet);
	PerformanceCriterion daviesBouldinCriterion = new EstimatedPerformance(CRITERIA_LIST[1],
			(multFactor * daviesBouldin) / divisionFactor, 1, false);
	if ((mainCriterionIndex == 1) || !onlyMainCriterion) {
		performance.addCriterion(daviesBouldinCriterion);
	}

	performance.setMainCriterionName(CRITERIA_LIST[mainCriterionIndex]);

	performanceOutput.deliver(performance);
	exampleSetOutput.deliver(exampleSet);
	clusterModelOutput.deliver(clusterModel);
}
 
開發者ID:rapidminer,項目名稱:rapidminer-studio,代碼行數:57,代碼來源:CentroidBasedEvaluator.java

示例13: doWork

import com.rapidminer.operator.clustering.CentroidClusterModel; //導入方法依賴的package包/類
@Override
public void doWork() throws OperatorException {
	CentroidClusterModel clusterModel = clusterModelInput.getData(CentroidClusterModel.class);
	ExampleSet exampleSet = exampleSetInput.getData(ExampleSet.class);

	PerformanceVector performance = performanceInput.getDataOrNull(PerformanceVector.class);
	if (performance == null) {            
		performance = new PerformanceVector();
	}

	int mainCriterionIndex = getParameterAsInt(PARAMETER_MAIN_CRITERION);
	boolean onlyMainCriterion = getParameterAsBoolean(PARAMETER_MAIN_CRITERION_ONLY);

	double multFactor = -1.0;
	if (getParameterAsBoolean(PARAMETER_MAXIMIZE))
		multFactor = 1.0;

	double divisionFactor = 1.0;
	if (getParameterAsBoolean(PARAMETER_NORMALIZE))
		divisionFactor = exampleSet.getAttributes().size();

	// Average Squared within cluster distance 0
	double[] averageWithinDistance = getAverageWithinDistance(clusterModel, exampleSet);

	avgWithinClusterDistance = averageWithinDistance[clusterModel.getNumberOfClusters()];
	PerformanceCriterion withinClusterDist = new EstimatedPerformance(CRITERIA_LIST[0], (multFactor * avgWithinClusterDistance) / divisionFactor, 1, false);
	if ((mainCriterionIndex == 0) || !onlyMainCriterion)
		performance.addCriterion(withinClusterDist);

	for (int i = 0; i < clusterModel.getNumberOfClusters(); i++) {
		PerformanceCriterion withinDistance = new EstimatedPerformance(CRITERIA_LIST[0] + "_cluster_" + clusterModel.getCluster(i).getClusterId(), (multFactor * averageWithinDistance[i]) / divisionFactor, 1, false);
		if ((mainCriterionIndex == 0) || !onlyMainCriterion)
			performance.addCriterion(withinDistance);
	}

	// Davies Bouldin 1
	daviesBouldin = getDaviesBouldin(clusterModel, exampleSet);
	PerformanceCriterion daviesBouldinCriterion = new EstimatedPerformance(CRITERIA_LIST[1], (multFactor * daviesBouldin) / divisionFactor, 1, false);
	if ((mainCriterionIndex == 1) || !onlyMainCriterion)
		performance.addCriterion(daviesBouldinCriterion);

	performance.setMainCriterionName(CRITERIA_LIST[mainCriterionIndex]);

	performanceOutput.deliver(performance);
	exampleSetOutput.deliver(exampleSet);
	clusterModelOutput.deliver(clusterModel);
}
 
開發者ID:rapidminer,項目名稱:rapidminer-5,代碼行數:48,代碼來源:CentroidBasedEvaluator.java


注:本文中的com.rapidminer.operator.clustering.CentroidClusterModel.getNumberOfClusters方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。