/** * Loads an instance of the class from a stream of triples. * * @param <I> type of item * @param <F> type of feat * @param <V> type of value * @param tuples stream of item-feat-value triples * @return a feature data object */ public static <I, F, V> SimpleFeatureData<I, F, V> load(Stream<Tuple3<I, F, V>> tuples) { Map<I, List<Tuple2<F, V>>> itemMap = new HashMap<>(); Map<F, List<Tuple2<I, V>>> featMap = new HashMap<>(); tuples.forEach(t -> { itemMap.computeIfAbsent(t.v1, v1 -> new ArrayList<>()).add(tuple(t.v2, t.v3)); featMap.computeIfAbsent(t.v2, v2 -> new ArrayList<>()).add(tuple(t.v1, t.v3)); }); return new SimpleFeatureData<>(itemMap, featMap); } }
int cutoff = 100; PreferenceData<Long, Long> trainData = SimplePreferenceData.load(SimpleRatingPreferencesReader.get().read(trainDataPath, lp, lp)); FeatureData<Long, String, Double> featureData = SimpleFeatureData.load(SimpleFeaturesReader.get().read(featurePath, lp, sp));
FeatureData<Long, String, Double> featureData = SimpleFeatureData.load(SimpleFeaturesReader.get().read(featurePath, lp, sp));