Example usage for org.apache.commons.math4.util Pair getValue

List of usage examples for org.apache.commons.math4.util Pair getValue

Introduction

In this page you can find the example usage for org.apache.commons.math4.util Pair getValue.

Prototype

public V getValue() 

Source Link

Document

Get the value.

Usage

From source file:delfos.rs.contentbased.vsm.booleanvsm.basic.BasicBooleanCBRS.java

@Override
protected SparseVector<Long> makeUserProfile(int idUser, DatasetLoader<? extends Rating> datasetLoader,
        BasicBooleanCBRSModel model) throws CannotLoadRatingsDataset, CannotLoadContentDataset, UserNotFound {

    final RatingsDataset<? extends Rating> ratingsDataset = datasetLoader.getRatingsDataset();

    SparseVector<Long> userProfile = model.getBooleanFeaturesTransformation().newProfile();

    Map<Integer, ? extends Rating> userRatingsRated = ratingsDataset.getUserRatingsRated(idUser);

    //Calculo del perfil
    for (Map.Entry<Integer, ? extends Rating> entry : userRatingsRated.entrySet()) {
        int idItem = entry.getKey();
        Rating rating = entry.getValue();
        SparseVector<Long> itemProfile = model.get(idItem);
        if (datasetLoader.getDefaultRelevanceCriteria().isRelevant(rating)) {
            userProfile.add(itemProfile);
        }//from  w w  w  . java2 s. c  om
    }

    double norm = userProfile.norm();
    for (Pair<Long, Double> vectorEntry : userProfile.fast()) {
        long key = vectorEntry.getKey();
        double value = vectorEntry.getValue();
        double normalisedValue = value / norm;
        userProfile.set(key, normalisedValue);
    }

    return userProfile;
}

From source file:delfos.rs.contentbased.vsm.booleanvsm.BooleanFeaturesTransformation.java

public List<Double> getDoubleVector(SparseVector<Long> sparseVector) {

    List<Double> ret = new ArrayList<>(numFeatures);
    for (int i = 0; i < numFeatures; i++) {
        ret.add(0.0);// w w w.  j av  a  2  s  .c o m
    }
    for (Pair<Long, Double> entry : sparseVector.entrySet()) {
        ret.set(entry.getKey().intValue(), (double) entry.getValue());
    }
    return ret;
}

From source file:delfos.rs.contentbased.vsm.booleanvsm.BooleanFeaturesTransformation.java

/**
 * Transforma el vector disperso en un mapa con los valores de las caractersticas.
 *
 * @param sparseVector Vector de valores dados en el dominio de esta transformacin booleana.
 * @return//from w w w .  j  a  v a 2 s . c om
 */
public Map<Feature, Map<Object, Double>> getFeatureValueMap(SparseVector<Long> sparseVector) {
    Map<Feature, Map<Object, Double>> ret = new TreeMap<>();

    for (Pair<Long, Double> entry : sparseVector.entrySet()) {
        long idFeatureValue = entry.getKey();
        double value = entry.getValue();

        FeatureValue featureValuePair = getFeatureValue(idFeatureValue);
        Feature feature = featureValuePair.feature;
        Object featureValue = featureValuePair.value;

        if (!ret.containsKey(feature)) {
            ret.put(feature, new TreeMap<>());
        }

        ret.get(feature).put(featureValue, value);

    }

    return ret;
}

From source file:delfos.rs.contentbased.vsm.booleanvsm.symeonidis2007.Symeonidis2007FeatureWeighted.java

protected SparseVector<Long> makeFFUserProfile(int idUser, DatasetLoader<? extends Rating> datasetLoader,
        BooleanFeaturesTransformation booleanFeaturesTransformation)
        throws CannotLoadRatingsDataset, CannotLoadContentDataset, UserNotFound {

    RelevanceCriteria relevanceCriteria = datasetLoader.getDefaultRelevanceCriteria();

    SparseVector<Long> userProfileValues = booleanFeaturesTransformation.newProfile();

    RatingsDataset<? extends Rating> ratingsDataset = datasetLoader.getRatingsDataset();
    //Calculo del perfil, FF(u)
    for (Map.Entry<Integer, ? extends Rating> entry : ratingsDataset.getUserRatingsRated(idUser).entrySet()) {
        try {// w  w  w .  jav a 2  s  .  c  o  m
            int idItem = entry.getKey();
            Rating rating = entry.getValue();

            if (relevanceCriteria.isRelevant(rating.getRatingValue())) {

                SparseVector<Long> itemProfile = makeFFItemProfile(idItem, datasetLoader,
                        booleanFeaturesTransformation);
                for (Pair<Long, Double> entryItemProfile : itemProfile.fast()) {
                    long idFeature = entryItemProfile.getKey();
                    double featureValue = entryItemProfile.getValue();

                    if (featureValue > 0) {
                        if (userProfileValues.containsKey(idFeature)) {
                            userProfileValues.add(idFeature, featureValue);
                        } else {
                            userProfileValues.set(idFeature, featureValue);
                        }
                    }

                }

            }
        } catch (ItemNotFound ex) {
            ERROR_CODES.ITEM_NOT_FOUND.exit(ex);
        }
    }

    return userProfileValues;
}