Example usage for org.apache.mahout.cf.taste.impl.common RunningAverage removeDatum

List of usage examples for org.apache.mahout.cf.taste.impl.common RunningAverage removeDatum

Introduction

In this page you can find the example usage for org.apache.mahout.cf.taste.impl.common RunningAverage removeDatum.

Prototype

void removeDatum(double datum);

Source Link

Usage

From source file:net.ufida.info.mahout.common.MemoryDiffStorage.java

License:Apache License

@Override
public void removeItemPref(long userID, long itemIDA, float prefValue) throws TasteException {
    PreferenceArray userPreferences = dataModel.getPreferencesFromUser(userID);
    try {//  w  w  w  .j  av a2 s  .c o m
        buildAverageDiffsLock.writeLock().lock();

        FastByIDMap<RunningAverage> aMap = averageDiffs.get(itemIDA);

        int length = userPreferences.length();
        for (int i = 0; i < length; i++) {

            long itemIDB = userPreferences.getItemID(i);
            float bValue = userPreferences.getValue(i);

            if (itemIDA < itemIDB) {

                if (aMap != null) {
                    RunningAverage average = aMap.get(itemIDB);
                    if (average != null) {
                        if (average.getCount() <= 1) {
                            aMap.remove(itemIDB);
                        } else {
                            average.removeDatum(bValue - prefValue);
                        }
                    }
                }

            } else if (itemIDA > itemIDB) {

                FastByIDMap<RunningAverage> bMap = averageDiffs.get(itemIDB);
                if (bMap != null) {
                    RunningAverage average = bMap.get(itemIDA);
                    if (average != null) {
                        if (average.getCount() <= 1) {
                            aMap.remove(itemIDA);
                        } else {
                            average.removeDatum(prefValue - bValue);
                        }
                    }
                }

            }
        }

    } finally {
        buildAverageDiffsLock.writeLock().unlock();
    }
}