• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Java ComparisonMeasure类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Java中org.dmg.pmml.ComparisonMeasure的典型用法代码示例。如果您正苦于以下问题:Java ComparisonMeasure类的具体用法?Java ComparisonMeasure怎么用?Java ComparisonMeasure使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



ComparisonMeasure类属于org.dmg.pmml包,在下文中一共展示了ComparisonMeasure类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Java代码示例。

示例1: encodeModel

import org.dmg.pmml.ComparisonMeasure; //导入依赖的package包/类
@Override
public ClusteringModel encodeModel(Schema schema){
	KMeansModel model = getTransformer();

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

	Vector[] clusterCenters = model.clusterCenters();
	for(int i = 0; i < clusterCenters.length; i++){
		Cluster cluster = new Cluster()
			.setId(String.valueOf(i))
			.setArray(PMMLUtil.createRealArray(VectorUtil.toList(clusterCenters[i])));

		clusters.add(cluster);
	}

	ComparisonMeasure comparisonMeasure = new ComparisonMeasure(ComparisonMeasure.Kind.DISTANCE)
		.setCompareFunction(CompareFunction.ABS_DIFF)
		.setMeasure(new SquaredEuclidean());

	return new ClusteringModel(MiningFunction.CLUSTERING, ClusteringModel.ModelClass.CENTER_BASED, clusters.size(), ModelUtil.createMiningSchema(schema.getLabel()), comparisonMeasure, ClusteringModelUtil.createClusteringFields(schema.getFeatures()), clusters);
}
 
开发者ID:jpmml,项目名称:jpmml-sparkml,代码行数:22,代码来源:KMeansModelConverter.java


示例2: createAffinityDistribution

import org.dmg.pmml.ComparisonMeasure; //导入依赖的package包/类
private <V extends Number> AffinityDistribution<V> createAffinityDistribution(List<InstanceResult<V>> instanceResults, Function<Integer, String> function, Object result){
	NearestNeighborModel nearestNeighborModel = getModel();

	ComparisonMeasure comparisonMeasure = nearestNeighborModel.getComparisonMeasure();

	ValueMap<String, V> values = new ValueMap<>(2 * instanceResults.size());

	for(InstanceResult<V> instanceResult : instanceResults){
		values.put(function.apply(instanceResult.getId()), instanceResult.getValue());
	}

	Measure measure = MeasureUtil.ensureMeasure(comparisonMeasure);

	if(measure instanceof Similarity){
		return new AffinityDistribution<>(Classification.Type.SIMILARITY, values, result);
	} else

	if(measure instanceof Distance){
		return new AffinityDistribution<>(Classification.Type.DISTANCE, values, result);
	} else

	{
		throw new UnsupportedElementException(measure);
	}
}
 
开发者ID:jpmml,项目名称:jpmml-evaluator,代码行数:26,代码来源:NearestNeighborModelEvaluator.java


示例3: build

import org.dmg.pmml.ComparisonMeasure; //导入依赖的package包/类
public ClusteringModel build(String modelName, Centers centers) {
  ClusteringModel model = new ClusteringModel(
      miningSchema,
      new ComparisonMeasure(ComparisonMeasure.Kind.DISTANCE).withMeasure(new SquaredEuclidean()),
      MiningFunctionType.CLUSTERING,
      ClusteringModel.ModelClass.CENTER_BASED,
      centers.size());
  model.setModelName(modelName);
  model.setAlgorithmName("K-Means||");
  model.setLocalTransformations(transforms);
  model.getClusteringFields().addAll(clusteringFields);
  for (int i = 0; i < centers.size(); i++) {
    model.getClusters().add(toCluster(centers.get(i), i));
  }
  return model;
}
 
开发者ID:apsaltis,项目名称:oryx,代码行数:17,代码来源:ClusteringModelBuilder.java


示例4: pmmlClusteringModel

import org.dmg.pmml.ComparisonMeasure; //导入依赖的package包/类
private ClusteringModel pmmlClusteringModel(KMeansModel model,
                                            Map<Integer,Long> clusterSizesMap) {
  Vector[] clusterCenters = model.clusterCenters();

  List<ClusteringField> clusteringFields = new ArrayList<>();
  for (int i = 0; i < inputSchema.getNumFeatures(); i++) {
    if (inputSchema.isActive(i)) {
      FieldName fieldName = FieldName.create(inputSchema.getFeatureNames().get(i));
      ClusteringField clusteringField =
          new ClusteringField(fieldName).setCenterField(ClusteringField.CenterField.TRUE);
      clusteringFields.add(clusteringField);
    }
  }

  List<Cluster> clusters = new ArrayList<>(clusterCenters.length);
  for (int i = 0; i < clusterCenters.length; i++) {
    clusters.add(new Cluster().setId(Integer.toString(i))
                     .setSize(clusterSizesMap.get(i).intValue())
                     .setArray(AppPMMLUtils.toArray(clusterCenters[i].toArray())));
  }

  return new ClusteringModel(
      MiningFunction.CLUSTERING,
      ClusteringModel.ModelClass.CENTER_BASED,
      clusters.size(),
      AppPMMLUtils.buildMiningSchema(inputSchema),
      new ComparisonMeasure(ComparisonMeasure.Kind.DISTANCE).setMeasure(new SquaredEuclidean()),
      clusteringFields,
      clusters);
}
 
开发者ID:oncewang,项目名称:oryx2,代码行数:31,代码来源:KMeansUpdate.java


示例5: encodeModel

import org.dmg.pmml.ComparisonMeasure; //导入依赖的package包/类
@Override
public ClusteringModel encodeModel(Schema schema){
	int[] shape = getClusterCentersShape();

	int numberOfClusters = shape[0];
	int numberOfFeatures = shape[1];

	List<? extends Number> clusterCenters = getClusterCenters();
	List<Integer> labels = getLabels();

	Multiset<Integer> labelCounts = HashMultiset.create();

	if(labels != null){
		labelCounts.addAll(labels);
	}

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

	for(int i = 0; i < numberOfClusters; i++){
		Cluster cluster = new Cluster()
			.setId(String.valueOf(i))
			.setSize((labelCounts.size () > 0 ? labelCounts.count(i) : null))
			.setArray(PMMLUtil.createRealArray(CMatrixUtil.getRow(clusterCenters, numberOfClusters, numberOfFeatures, i)));

		clusters.add(cluster);
	}

	ComparisonMeasure comparisonMeasure = new ComparisonMeasure(ComparisonMeasure.Kind.DISTANCE)
		.setCompareFunction(CompareFunction.ABS_DIFF)
		.setMeasure(new SquaredEuclidean());

	ClusteringModel clusteringModel = new ClusteringModel(MiningFunction.CLUSTERING, ClusteringModel.ModelClass.CENTER_BASED, numberOfClusters, ModelUtil.createMiningSchema(schema.getLabel()), comparisonMeasure, ClusteringModelUtil.createClusteringFields(schema.getFeatures()), clusters)
		.setOutput(ClusteringModelUtil.createOutput(FieldName.create("Cluster"), DataType.DOUBLE, clusters));

	return clusteringModel;
}
 
开发者ID:jpmml,项目名称:jpmml-sklearn,代码行数:37,代码来源:KMeans.java


示例6: encodeComparisonMeasure

import org.dmg.pmml.ComparisonMeasure; //导入依赖的package包/类
static
private ComparisonMeasure encodeComparisonMeasure(String metric, int p){

	switch(metric){
		case "minkowski":
			{
				Measure measure;

				switch(p){
					case 1:
						measure = new CityBlock();
						break;
					case 2:
						measure = new Euclidean();
						break;
					default:
						measure = new Minkowski(p);
						break;
				}

				ComparisonMeasure comparisonMeasure = new ComparisonMeasure(ComparisonMeasure.Kind.DISTANCE)
					.setCompareFunction(CompareFunction.ABS_DIFF)
					.setMeasure(measure);

				return comparisonMeasure;
			}
		default:
			throw new IllegalArgumentException(metric);
	}
}
 
开发者ID:jpmml,项目名称:jpmml-sklearn,代码行数:31,代码来源:KNeighborsUtil.java


示例7: encodeModel

import org.dmg.pmml.ComparisonMeasure; //导入依赖的package包/类
@Override
public Model encodeModel(Schema schema){
	RGenericVector kmeans = getObject();

	RDoubleVector centers = (RDoubleVector)kmeans.getValue("centers");
	RIntegerVector size = (RIntegerVector)kmeans.getValue("size");

	RIntegerVector centersDim = centers.dim();

	int rows = centersDim.getValue(0);
	int columns = centersDim.getValue(1);

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

	RStringVector rowNames = centers.dimnames(0);
	for(int i = 0; i < rowNames.size(); i++){
		Cluster cluster = new Cluster()
			.setId(String.valueOf(i + 1))
			.setName(rowNames.getValue(i))
			.setSize(size.getValue(i))
			.setArray(PMMLUtil.createRealArray(FortranMatrixUtil.getRow(centers.getValues(), rows, columns, i)));

		clusters.add(cluster);
	}

	ComparisonMeasure comparisonMeasure = new ComparisonMeasure(ComparisonMeasure.Kind.DISTANCE)
		.setCompareFunction(CompareFunction.ABS_DIFF)
		.setMeasure(new SquaredEuclidean());

	ClusteringModel clusteringModel = new ClusteringModel(MiningFunction.CLUSTERING, ClusteringModel.ModelClass.CENTER_BASED, rows, ModelUtil.createMiningSchema(schema.getLabel()), comparisonMeasure, ClusteringModelUtil.createClusteringFields(schema.getFeatures()), clusters)
		.setOutput(ClusteringModelUtil.createOutput(FieldName.create("cluster"), DataType.DOUBLE, clusters));

	return clusteringModel;
}
 
开发者ID:jpmml,项目名称:jpmml-r,代码行数:35,代码来源:KMeansConverter.java


示例8: ClusteringModelEvaluator

import org.dmg.pmml.ComparisonMeasure; //导入依赖的package包/类
public ClusteringModelEvaluator(PMML pmml, ClusteringModel clusteringModel){
	super(pmml, clusteringModel);

	ComparisonMeasure comparisonMeasure = clusteringModel.getComparisonMeasure();
	if(comparisonMeasure == null){
		throw new MissingElementException(clusteringModel, PMMLElements.CLUSTERINGMODEL_COMPARISONMEASURE);
	}

	ClusteringModel.ModelClass modelClass = clusteringModel.getModelClass();
	switch(modelClass){
		case CENTER_BASED:
			break;
		default:
			throw new UnsupportedAttributeException(clusteringModel, modelClass);
	}

	CenterFields centerFields = clusteringModel.getCenterFields();
	if(centerFields != null){
		throw new UnsupportedElementException(centerFields);
	}

	if(!clusteringModel.hasClusteringFields()){
		throw new MissingElementException(clusteringModel, PMMLElements.CLUSTERINGMODEL_CLUSTERINGFIELDS);
	} // End if

	if(!clusteringModel.hasClusters()){
		throw new MissingElementException(clusteringModel, PMMLElements.CLUSTERINGMODEL_CLUSTERS);
	}

	Targets targets = clusteringModel.getTargets();
	if(targets != null){
		throw new MisplacedElementException(targets);
	}
}
 
开发者ID:jpmml,项目名称:jpmml-evaluator,代码行数:35,代码来源:ClusteringModelEvaluator.java


示例9: evaluateDistance

import org.dmg.pmml.ComparisonMeasure; //导入依赖的package包/类
private <V extends Number> ClusterAffinityDistribution<V> evaluateDistance(ValueFactory<V> valueFactory, ComparisonMeasure comparisonMeasure, List<ClusteringField> clusteringFields, List<FieldValue> values){
	ClusteringModel clusteringModel = getModel();

	List<Cluster> clusters = clusteringModel.getClusters();

	Value<V> adjustment;

	MissingValueWeights missingValueWeights = clusteringModel.getMissingValueWeights();
	if(missingValueWeights != null){
		Array array = missingValueWeights.getArray();

		List<? extends Number> adjustmentValues = ArrayUtil.asNumberList(array);
		if(values.size() != adjustmentValues.size()){
			throw new InvalidElementException(missingValueWeights);
		}

		adjustment = MeasureUtil.calculateAdjustment(valueFactory, values, adjustmentValues);
	} else

	{
		adjustment = MeasureUtil.calculateAdjustment(valueFactory, values);
	}

	ClusterAffinityDistribution<V> result = createClusterAffinityDistribution(Classification.Type.DISTANCE, clusters);

	for(Cluster cluster : clusters){
		List<FieldValue> clusterValues = CacheUtil.getValue(cluster, ClusteringModelEvaluator.clusterValueCache);

		if(values.size() != clusterValues.size()){
			throw new InvalidElementException(cluster);
		}

		Value<V> distance = MeasureUtil.evaluateDistance(valueFactory, comparisonMeasure, clusteringFields, values, clusterValues, adjustment);

		result.put(cluster, distance);
	}

	return result;
}
 
开发者ID:jpmml,项目名称:jpmml-evaluator,代码行数:40,代码来源:ClusteringModelEvaluator.java


示例10: ensureMeasure

import org.dmg.pmml.ComparisonMeasure; //导入依赖的package包/类
static
public Measure ensureMeasure(ComparisonMeasure comparisonMeasure){
	Measure measure = comparisonMeasure.getMeasure();
	if(measure == null){
		throw new MissingElementException(MissingElementException.formatMessage(XPathUtil.formatElement(comparisonMeasure.getClass()) + "/<Measure>"), comparisonMeasure);
	}

	return measure;
}
 
开发者ID:jpmml,项目名称:jpmml-evaluator,代码行数:10,代码来源:MeasureUtil.java


示例11: NearestNeighborModelEvaluator

import org.dmg.pmml.ComparisonMeasure; //导入依赖的package包/类
public NearestNeighborModelEvaluator(PMML pmml, NearestNeighborModel nearestNeighborModel){
	super(pmml, nearestNeighborModel);

	ComparisonMeasure comparisoonMeasure = nearestNeighborModel.getComparisonMeasure();
	if(comparisoonMeasure == null){
		throw new MissingElementException(nearestNeighborModel, PMMLElements.NEARESTNEIGHBORMODEL_COMPARISONMEASURE);
	}

	TrainingInstances trainingInstances = nearestNeighborModel.getTrainingInstances();
	if(trainingInstances == null){
		throw new MissingElementException(nearestNeighborModel, PMMLElements.NEARESTNEIGHBORMODEL_TRAININGINSTANCES);
	}

	InstanceFields instanceFields = trainingInstances.getInstanceFields();
	if(instanceFields == null){
		throw new MissingElementException(trainingInstances, PMMLElements.TRAININGINSTANCES_INSTANCEFIELDS);
	} // End if

	if(!instanceFields.hasInstanceFields()){
		throw new MissingElementException(instanceFields, PMMLElements.INSTANCEFIELDS_INSTANCEFIELDS);
	}

	KNNInputs knnInputs = nearestNeighborModel.getKNNInputs();
	if(knnInputs == null){
		throw new MissingElementException(nearestNeighborModel, PMMLElements.NEARESTNEIGHBORMODEL_KNNINPUTS);
	} // End if

	if(!knnInputs.hasKNNInputs()){
		throw new MissingElementException(knnInputs, PMMLElements.KNNINPUTS_KNNINPUTS);
	}
}
 
开发者ID:jpmml,项目名称:jpmml-evaluator,代码行数:32,代码来源:NearestNeighborModelEvaluator.java


示例12: evaluateInstanceRows

import org.dmg.pmml.ComparisonMeasure; //导入依赖的package包/类
private <V extends Number> List<InstanceResult<V>> evaluateInstanceRows(ValueFactory<V> valueFactory, EvaluationContext context){
	NearestNeighborModel nearestNeighborModel = getModel();

	ComparisonMeasure comparisonMeasure = nearestNeighborModel.getComparisonMeasure();

	List<FieldValue> values = new ArrayList<>();

	KNNInputs knnInputs = nearestNeighborModel.getKNNInputs();
	for(KNNInput knnInput : knnInputs){
		FieldName name = knnInput.getField();
		if(name == null){
			throw new MissingAttributeException(knnInput, PMMLAttributes.KNNINPUT_FIELD);
		}

		FieldValue value = context.evaluate(name);

		values.add(value);
	}

	Measure measure = MeasureUtil.ensureMeasure(comparisonMeasure);

	if(measure instanceof Similarity){
		return evaluateSimilarity(valueFactory, comparisonMeasure, knnInputs.getKNNInputs(), values);
	} else

	if(measure instanceof Distance){
		return evaluateDistance(valueFactory, comparisonMeasure, knnInputs.getKNNInputs(), values);
	} else

	{
		throw new UnsupportedElementException(measure);
	}
}
 
开发者ID:jpmml,项目名称:jpmml-evaluator,代码行数:34,代码来源:NearestNeighborModelEvaluator.java


示例13: buildDummyClusteringModel

import org.dmg.pmml.ComparisonMeasure; //导入依赖的package包/类
public static PMML buildDummyClusteringModel() {
  PMML pmml = PMMLUtils.buildSkeletonPMML();

  List<DataField> dataFields = new ArrayList<>();
  dataFields.add(new DataField(FieldName.create("x"), OpType.CONTINUOUS, DataType.DOUBLE));
  dataFields.add(new DataField(FieldName.create("y"), OpType.CONTINUOUS, DataType.DOUBLE));
  DataDictionary dataDictionary =
      new DataDictionary(dataFields).setNumberOfFields(dataFields.size());
  pmml.setDataDictionary(dataDictionary);

  List<MiningField> miningFields = new ArrayList<>();
  MiningField xMF = new MiningField(FieldName.create("x"))
      .setOpType(OpType.CONTINUOUS).setUsageType(MiningField.UsageType.ACTIVE);
  miningFields.add(xMF);
  MiningField yMF = new MiningField(FieldName.create("y"))
      .setOpType(OpType.CONTINUOUS).setUsageType(MiningField.UsageType.ACTIVE);
  miningFields.add(yMF);
  MiningSchema miningSchema = new MiningSchema(miningFields);

  List<ClusteringField> clusteringFields = new ArrayList<>();
  clusteringFields.add(new ClusteringField(
      FieldName.create("x")).setCenterField(ClusteringField.CenterField.TRUE));
  clusteringFields.add(new ClusteringField(
      FieldName.create("y")).setCenterField(ClusteringField.CenterField.TRUE));

  List<Cluster> clusters = new ArrayList<>();
  clusters.add(new Cluster().setId("0").setSize(1).setArray(AppPMMLUtils.toArray(1.0, 0.0)));
  clusters.add(new Cluster().setId("1").setSize(2).setArray(AppPMMLUtils.toArray(2.0, -1.0)));
  clusters.add(new Cluster().setId("2").setSize(3).setArray(AppPMMLUtils.toArray(-1.0, 0.0)));

  pmml.addModels(new ClusteringModel(
      MiningFunction.CLUSTERING,
      ClusteringModel.ModelClass.CENTER_BASED,
      clusters.size(),
      miningSchema,
      new ComparisonMeasure(ComparisonMeasure.Kind.DISTANCE).setMeasure(new SquaredEuclidean()),
      clusteringFields,
      clusters));

  return pmml;
}
 
开发者ID:oncewang,项目名称:oryx2,代码行数:42,代码来源:KMeansPMMLUtilsTest.java


示例14: testKMeans

import org.dmg.pmml.ComparisonMeasure; //导入依赖的package包/类
@Test
public void testKMeans() throws Exception {
  Path tempDir = getTempDir();
  Path dataDir = tempDir.resolve("data");
  Path modelDir = tempDir.resolve("model");

  Map<String,Object> overlayConfig = new HashMap<>();
  overlayConfig.put("oryx.batch.update-class", KMeansUpdate.class.getName());
  ConfigUtils.set(overlayConfig, "oryx.batch.storage.data-dir", dataDir);
  ConfigUtils.set(overlayConfig, "oryx.batch.storage.model-dir", modelDir);
  overlayConfig.put("oryx.batch.streaming.generation-interval-sec", GEN_INTERVAL_SEC);
  overlayConfig.put("oryx.kmeans.hyperparams.k", NUM_CLUSTERS);
  overlayConfig.put("oryx.kmeans.iterations", 5);
  overlayConfig.put("oryx.input-schema.num-features", NUM_FEATURES);
  overlayConfig.put("oryx.input-schema.categorical-features", "[]");
  overlayConfig.put("oryx.kmeans.evaluation-strategy", EVALUATION_STRATEGY);

  Config config = ConfigUtils.overlayOn(overlayConfig, getConfig());

  startMessaging();

  List<KeyMessage<String, String>> updates = startServerProduceConsumeTopics(
      config,
      new RandomKMeansDataGenerator(NUM_FEATURES),
      DATA_TO_WRITE,
      WRITE_INTERVAL_MSEC);

  List<Path> modelInstanceDirs = IOUtils.listFiles(modelDir, "*");

  int generations = modelInstanceDirs.size();
  checkIntervals(generations, DATA_TO_WRITE, WRITE_INTERVAL_MSEC, GEN_INTERVAL_SEC);

  for (Path modelInstanceDir : modelInstanceDirs) {
    Path modelFile = modelInstanceDir.resolve(MLUpdate.MODEL_FILE_NAME);
    assertNonEmpty(modelFile);
    PMMLUtils.read(modelFile); // Shouldn't throw exception
  }

  InputSchema schema = new InputSchema(config);

  for (KeyMessage<String,String> km : updates) {

    String type = km.getKey();
    String value = km.getMessage();

    assertContains(Arrays.asList("MODEL", "MODEL-REF"), type);
    PMML pmml = AppPMMLUtils.readPMMLFromUpdateKeyMessage(type, value, null);

    checkHeader(pmml.getHeader());

    checkDataDictionary(schema, pmml.getDataDictionary());

    Model rootModel = pmml.getModels().get(0);

    ClusteringModel clusteringModel = (ClusteringModel) rootModel;

    // Check if Basic hyperparameters match
    assertEquals(NUM_CLUSTERS, clusteringModel.getNumberOfClusters());
    assertEquals(NUM_CLUSTERS, clusteringModel.getClusters().size());
    assertEquals(NUM_FEATURES, clusteringModel.getClusteringFields().size());
    assertEquals(ComparisonMeasure.Kind.DISTANCE,
                 clusteringModel.getComparisonMeasure().getKind());
    assertEquals(NUM_FEATURES, clusteringModel.getClusters().get(0).getArray().getN().intValue());
    for (Cluster cluster : clusteringModel.getClusters()) {
      assertGreater(cluster.getSize(), 0);
    }
  }
}
 
开发者ID:oncewang,项目名称:oryx2,代码行数:69,代码来源:KMeansUpdateIT.java


示例15: evaluateSimilarity

import org.dmg.pmml.ComparisonMeasure; //导入依赖的package包/类
private <V extends Number> ClusterAffinityDistribution<V> evaluateSimilarity(ValueFactory<V> valueFactory, ComparisonMeasure comparisonMeasure, List<ClusteringField> clusteringFields, List<FieldValue> values){
	ClusteringModel clusteringModel = getModel();

	List<Cluster> clusters = clusteringModel.getClusters();

	ClusterAffinityDistribution<V> result = createClusterAffinityDistribution(Classification.Type.SIMILARITY, clusters);

	BitSet flags = MeasureUtil.toBitSet(values);

	for(Cluster cluster : clusters){
		BitSet clusterFlags = CacheUtil.getValue(cluster, ClusteringModelEvaluator.clusterFlagCache);

		if(flags.size() != clusterFlags.size()){
			throw new InvalidElementException(cluster);
		}

		Value<V> similarity = MeasureUtil.evaluateSimilarity(valueFactory, comparisonMeasure, clusteringFields, flags, clusterFlags);

		result.put(cluster, similarity);
	}

	return result;
}
 
开发者ID:jpmml,项目名称:jpmml-evaluator,代码行数:24,代码来源:ClusteringModelEvaluator.java


示例16: evaluateSimilarity

import org.dmg.pmml.ComparisonMeasure; //导入依赖的package包/类
static
public <V extends Number> Value<V> evaluateSimilarity(ValueFactory<V> valueFactory, ComparisonMeasure comparisonMeasure, List<? extends ComparisonField> comparisonFields, BitSet flags, BitSet referenceFlags){
	Similarity measure = TypeUtil.cast(Similarity.class, comparisonMeasure.getMeasure());

	int a11 = 0;
	int a10 = 0;
	int a01 = 0;
	int a00 = 0;

	for(int i = 0; i < comparisonFields.size(); i++){

		if(flags.get(i)){

			if(referenceFlags.get(i)){
				a11 += 1;
			} else

			{
				a10 += 1;
			}
		} else

		{
			if(referenceFlags.get(i)){
				a01 += 1;
			} else

			{
				a00 += 1;
			}
		}
	}

	Value<V> numerator = valueFactory.newValue();
	Value<V> denominator = valueFactory.newValue();

	if(measure instanceof SimpleMatching){
		numerator.add(a11 + a00);
		denominator.add(a11 + a10 + a01 + a00);
	} else

	if(measure instanceof Jaccard){
		numerator.add(a11);
		denominator.add(a11 + a10 + a01);
	} else

	if(measure instanceof Tanimoto){
		numerator.add(a11 + a00);
		denominator.add(a11).add(2d, (a10 + a01)).add(a00);
	} else

	if(measure instanceof BinarySimilarity){
		BinarySimilarity binarySimilarity = (BinarySimilarity)measure;

		numerator.add(binarySimilarity.getC11Parameter(), a11).add(binarySimilarity.getC10Parameter(), a10).add(binarySimilarity.getC01Parameter(), a01).add(binarySimilarity.getC00Parameter(), a00);
		denominator.add(binarySimilarity.getD11Parameter(), a11).add(binarySimilarity.getD10Parameter(), a10).add(binarySimilarity.getD01Parameter(), a01).add(binarySimilarity.getD00Parameter(), a00);
	} else

	{
		throw new UnsupportedElementException(measure);
	} // End if

	if(denominator.equals(0d)){
		throw new UndefinedResultException();
	}

	return numerator.divide(denominator);
}
 
开发者ID:jpmml,项目名称:jpmml-evaluator,代码行数:69,代码来源:MeasureUtil.java


示例17: evaluateSimilarity

import org.dmg.pmml.ComparisonMeasure; //导入依赖的package包/类
private <V extends Number> List<InstanceResult<V>> evaluateSimilarity(ValueFactory<V> valueFactory, ComparisonMeasure comparisonMeasure, List<KNNInput> knnInputs, List<FieldValue> values){
	BitSet flags = MeasureUtil.toBitSet(values);

	Map<Integer, BitSet> flagMap = getInstanceFlags();

	List<InstanceResult<V>> result = new ArrayList<>(flagMap.size());

	Set<Integer> rowKeys = flagMap.keySet();
	for(Integer rowKey : rowKeys){
		BitSet instanceFlags = flagMap.get(rowKey);

		Value<V> similarity = MeasureUtil.evaluateSimilarity(valueFactory, comparisonMeasure, knnInputs, flags, instanceFlags);

		result.add(new InstanceResult.Similarity<>(rowKey, similarity));
	}

	return result;
}
 
开发者ID:jpmml,项目名称:jpmml-evaluator,代码行数:19,代码来源:NearestNeighborModelEvaluator.java


示例18: evaluateDistance

import org.dmg.pmml.ComparisonMeasure; //导入依赖的package包/类
private <V extends Number> List<InstanceResult<V>> evaluateDistance(ValueFactory<V> valueFactory, ComparisonMeasure comparisonMeasure, List<KNNInput> knnInputs, List<FieldValue> values){
	Map<Integer, List<FieldValue>> valueMap = getInstanceValues();

	List<InstanceResult<V>> result = new ArrayList<>(valueMap.size());

	Value<V> adjustment = MeasureUtil.calculateAdjustment(valueFactory, values);

	Set<Integer> rowKeys = valueMap.keySet();
	for(Integer rowKey : rowKeys){
		List<FieldValue> instanceValues = valueMap.get(rowKey);

		Value<V> distance = MeasureUtil.evaluateDistance(valueFactory, comparisonMeasure, knnInputs, values, instanceValues, adjustment);

		result.add(new InstanceResult.Distance<>(rowKey, distance));
	}

	return result;
}
 
开发者ID:jpmml,项目名称:jpmml-evaluator,代码行数:19,代码来源:NearestNeighborModelEvaluator.java


示例19: evaluateSimilarity

import org.dmg.pmml.ComparisonMeasure; //导入依赖的package包/类
@Test
public void evaluateSimilarity(){
	ComparisonMeasure comparisonMeasure = new ComparisonMeasure(ComparisonMeasure.Kind.SIMILARITY);

	List<ClusteringField> clusteringFields = createClusteringFields("one", "two", "three", "four");

	BitSet flags = createFlags(Arrays.asList(0, 0, 1, 1));
	BitSet referenceFlags = createFlags(Arrays.asList(0, 1, 0, 1));

	comparisonMeasure.setMeasure(new SimpleMatching());

	ValueFactory<?> valueFactory = MeasureUtilTest.valueFactoryFactory.newValueFactory(MathContext.DOUBLE);

	assertEquals(valueFactory.newValue(2d / 4d), MeasureUtil.evaluateSimilarity(valueFactory, comparisonMeasure, clusteringFields, flags, referenceFlags));

	comparisonMeasure.setMeasure(new Jaccard());

	assertEquals(valueFactory.newValue(1d / 3d), MeasureUtil.evaluateSimilarity(valueFactory, comparisonMeasure, clusteringFields, flags, referenceFlags));

	comparisonMeasure.setMeasure(new Tanimoto());

	assertEquals(valueFactory.newValue(2d / (1d + 2 * 2d + 1d)), MeasureUtil.evaluateSimilarity(valueFactory, comparisonMeasure, clusteringFields, flags, referenceFlags));

	comparisonMeasure.setMeasure(new BinarySimilarity(0.5d, 0.5d, 0.5d, 0.5d, 1d, 1d, 1d, 1d));

	assertEquals(valueFactory.newValue(2d / 4d), MeasureUtil.evaluateSimilarity(valueFactory, comparisonMeasure, clusteringFields, flags, referenceFlags));
}
 
开发者ID:jpmml,项目名称:jpmml-evaluator,代码行数:28,代码来源:MeasureUtilTest.java


示例20: evaluateClustering

import org.dmg.pmml.ComparisonMeasure; //导入依赖的package包/类
private <V extends Number> Map<FieldName, ClusterAffinityDistribution<V>> evaluateClustering(ValueFactory<V> valueFactory, EvaluationContext context){
	ClusteringModel clusteringModel = getModel();

	ComparisonMeasure comparisonMeasure = clusteringModel.getComparisonMeasure();

	List<ClusteringField> clusteringFields = getCenterClusteringFields();

	List<FieldValue> values = new ArrayList<>(clusteringFields.size());

	for(int i = 0, max = clusteringFields.size(); i < max; i++){
		ClusteringField clusteringField = clusteringFields.get(i);

		FieldName name = clusteringField.getField();
		if(name == null){
			throw new MissingAttributeException(clusteringField, PMMLAttributes.CLUSTERINGFIELD_FIELD);
		}

		FieldValue value = context.evaluate(name);

		values.add(value);
	}

	ClusterAffinityDistribution<V> result;

	Measure measure = MeasureUtil.ensureMeasure(comparisonMeasure);

	if(measure instanceof Similarity){
		result = evaluateSimilarity(valueFactory, comparisonMeasure, clusteringFields, values);
	} else

	if(measure instanceof Distance){
		result = evaluateDistance(valueFactory, comparisonMeasure, clusteringFields, values);
	} else

	{
		throw new UnsupportedElementException(measure);
	}

	// "For clustering models, the identifier of the winning cluster is returned as the predictedValue"
	result.computeResult(DataType.STRING);

	return Collections.singletonMap(getTargetFieldName(), result);
}
 
开发者ID:jpmml,项目名称:jpmml-evaluator,代码行数:44,代码来源:ClusteringModelEvaluator.java



注:本文中的org.dmg.pmml.ComparisonMeasure类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Java RestStatusToXContentListener类代码示例发布时间:2022-05-22
下一篇:
Java ResolvedConceptReferenceList类代码示例发布时间:2022-05-22
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap