@Override public DateTimeColumn unique() { LongSet ints = new LongOpenHashSet(data.size()); for (long i : data) { ints.add(i); } DateTimeColumn column = emptyCopy(ints.size()); column.setName(name() + " Unique values"); column.data = LongArrayList.wrap(ints.toLongArray()); return column; }
@Override public LongList finishList() { if (entries == null) { return LongLists.EMPTY_LIST; } long[] longs = entries.keySet().toLongArray(); LongArrays.quickSort(longs, new AbstractLongComparator() { @Override public int compare(long k1, long k2) { return Doubles.compare(entries.get(k2), entries.get(k1)); } }); entries = null; return new LongArrayList(longs); } }
@Override public Long2IntMap splitEntities(LongSet entities, int np, Random rng) { Long2IntMap emap = new Long2IntOpenHashMap(entities.size()); logger.info("Splitting {} entities into {} partitions", entities.size(), np); long[] array = entities.toLongArray(); LongArrays.shuffle(array, rng); for (int i = 0; i < array.length; i++) { final long user = array[i]; emap.put(user, i % np); } return emap; }
@Nonnull @Override public MetricResult measureUser(TestUser user, ResultMap predictions, Mean context) { if (predictions == null || predictions.isEmpty()) { return MetricResult.empty(); } Long2DoubleMap ratings = user.getTestRatings(); long[] ideal = ratings.keySet().toLongArray(); LongArrays.quickSort(ideal, LongComparators.oppositeComparator(LongUtils.keyValueComparator(ratings))); long[] actual = LongUtils.asLongSet(predictions.keySet()).toLongArray(); LongArrays.quickSort(actual, LongComparators.oppositeComparator( LongUtils.keyValueComparator( LongUtils.asLong2DoubleMap(predictions.scoreMap())))); double idealGain = computeDCG(ideal, ratings); double gain = computeDCG(actual, ratings); logger.debug("user {} has gain of {} (ideal {})", user.getUserId(), gain, idealGain); double score = gain / idealGain; synchronized (context) { context.increment(score); } ImmutableMap.Builder<String,Double> results = ImmutableMap.builder(); return MetricResult.fromMap(results.put(columnName, score) .put(columnName + ".Raw", gain) .build()); }
@Override public Long2IntMap splitEntities(LongSet entities, int np, Random rng) { if (np * sampleSize > entities.size()) { logger.warn("cannot make {} disjoint samples of {} from {} entities, partitioning", np, sampleSize, entities.size()); return partition().splitEntities(entities, np, rng); } else { Long2IntMap emap = new Long2IntOpenHashMap(entities.size()); logger.info("Sampling {} entities into {} disjoint samples of {}", entities.size(), np, sampleSize); long[] earray = entities.toLongArray(); LongArrays.shuffle(earray, rng); for (int p = 0; p < np; p++) { for (int i = 0; i < sampleSize; i++) { long u = earray[p*sampleSize + i]; emap.put(u, p); } } return emap; } }
public long[] toLongArray(long[] a) { return _set.toLongArray(a); } }
public long[] toLongArray(long[] a) { return _set.toLongArray(a); } }
public long[] toLongArray(long[] a) { return _set.toLongArray(a); } }
public long[] toLongArray() { return _set.toLongArray(); }
public long[] toLongArray() { return _set.toLongArray(); }
private void pruneItems(Long2ObjectMap<Long2DoubleMap> itemRatingData, Long2ObjectMap<LongSortedSet> userItems) { if (minCommonUsers <= 0) { return; } // copy items to array to all long[] items = itemRatingData.keySet().toLongArray(); for (long item: items) { Long2DoubleMap iv = itemRatingData.get(item); if (iv.size() < minCommonUsers) { itemRatingData.remove(item); } } for (Long2ObjectMap.Entry<LongSortedSet> e: userItems.long2ObjectEntrySet()) { e.setValue(LongUtils.setIntersect(e.getValue(), itemRatingData.keySet())); } } }
public long[] toLongArray() { return _set.toLongArray(); }
static Long2DoubleMap rank(final Long2DoubleMap vec) { long[] ids = vec.keySet().toLongArray();
/** Creates a new subset lexical strategy. * @param subset the subset of terms. */ public FrequencyLexicalStrategy( final LongSet subset ) { final long[] t = subset.toLongArray(); Arrays.sort( t ); localNumber = new Long2LongOpenHashMap(); localNumber.defaultReturnValue( -1 ); for( int i = 0; i < t.length; i++ ) localNumber.put( t[ i ], i ); }
@Override protected Long2IntMap splitUsers(LongSet users, int np, Random rng) { Long2IntMap userMap = new Long2IntOpenHashMap(users.size()); logger.info("Splitting {} users into {} partitions", users.size(), np); long[] userArray = users.toLongArray(); LongArrays.shuffle(userArray, rng); for (int i = 0; i < userArray.length; i++) { final long user = userArray[i]; userMap.put(user, i % np); } return userMap; } }
@Override public Coder getCoder(final Long2LongMap frequencies) { assert Longs.min(frequencies.values().toLongArray()) > 0; return new Coder((int) Longs.max(frequencies.keySet().toLongArray()) + 1); } }
@Override public DateTimeColumn unique() { LongSet ints = new LongOpenHashSet(data.size()); for (long i : data) { ints.add(i); } return DateTimeColumn.create(name() + " Unique values", LongArrayList.wrap(ints.toLongArray())); }
@Override public Coder getCoder(final Long2LongMap frequencies) { assert Longs.min(frequencies.values().toLongArray()) > 0; return new Coder(Fast.mostSignificantBit(Longs.max(frequencies.keySet().toLongArray()) + 1) * 2 + 1); } }
@Override public Coder getCoder(final Long2LongMap frequencies) { assert Longs.min(frequencies.values().toLongArray()) > 0; return new Coder(Fast.length(Longs.max(frequencies.keySet().toLongArray()))); } }
@Override public DateTimeColumn unique() { LongSet ints = new LongOpenHashSet(data.size()); for (long i : data) { ints.add(i); } DateTimeColumn column = emptyCopy(ints.size()); column.setName(name() + " Unique values"); column.data = LongArrayList.wrap(ints.toLongArray()); return column; }