All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.TKnudsen.ComplexDataObject.model.distanceMeasure.mixedData.MixedDataFeatureVectorFeatureSubsetDistanceMeasure Maven / Gradle / Ivy

Go to download

A library that models real-world objects in Java, referred to as ComplexDataObjects. Other features: IO and preprocessing of ComplexDataObjects.

The newest version!
package com.github.TKnudsen.ComplexDataObject.model.distanceMeasure.mixedData;

import java.util.List;

import com.github.TKnudsen.ComplexDataObject.data.features.mixedData.MixedDataFeature;
import com.github.TKnudsen.ComplexDataObject.data.features.mixedData.MixedDataFeatureVector;
import com.github.TKnudsen.ComplexDataObject.model.distanceMeasure.IDistanceMeasure;

/**
 * 

* Title: MixedDataFeatureVectorFeatureSubsetDistanceMeasure *

* *

* Description: Allows the selection of a set of features for the calculation of * distances between MixedDataFeatureVectors. *

* *

* Copyright: Copyright (c) 2017 *

* * @author Juergen Bernard * @version 1.01 */ public class MixedDataFeatureVectorFeatureSubsetDistanceMeasure implements IDistanceMeasure { /** * */ private static final long serialVersionUID = 6369617829261379204L; private List featureNames; public MixedDataFeatureVectorFeatureSubsetDistanceMeasure(List featureNames) { this.featureNames = featureNames; } @Override public String getName() { return "Calculates distances on the basis of a subset of the features"; } @Override public String getDescription() { return getName(); } @Override public String toString() { return getDescription(); } @Override public double getDistance(MixedDataFeatureVector o1, MixedDataFeatureVector o2) { if (o1 == null || o2 == null) return Double.NaN; double dist = 0; for (String string : featureNames) { MixedDataFeature e1 = o1.getFeature(string); MixedDataFeature e2 = o2.getFeature(string); if (e1 == null || e2 == null) dist += 1; else if (e1.getFeatureValue() != e2.getFeatureValue()) dist += 1; } return dist; } @Override public double applyAsDouble(MixedDataFeatureVector t, MixedDataFeatureVector u) { return getDistance(t, u); } public List getFeatureNames() { return featureNames; } public void setFeatureNames(List featureNames) { this.featureNames = featureNames; } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy