本文整理汇总了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;
}
示例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];
}
}
示例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;
}
示例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;
}
示例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;
}
示例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];
}
}
示例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;
}
示例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;
}
示例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;
}
示例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();
}
示例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();
}
示例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);
}
示例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);
}