private void generateDatamodel() { FastByIDMap<PreferenceArray> userData = GenericDataModel.toDataMap(data, true); model = new GenericDataModel(userData, timestampData); data = null; timestampData = null; }
/** * Prepares a testable object with delegate data */ private static PlusAnonymousConcurrentUserDataModel getTestableWithDelegateData( int maxConcurrentUsers, FastByIDMap<PreferenceArray> delegatePreferences) { return new PlusAnonymousConcurrentUserDataModel(new GenericDataModel(delegatePreferences), maxConcurrentUsers); }
/** * Prepares a testable object without delegate data */ private static PlusAnonymousConcurrentUserDataModel getTestableWithoutDelegateData(int maxConcurrentUsers) { FastByIDMap<PreferenceArray> delegatePreferences = new FastByIDMap<PreferenceArray>(); return new PlusAnonymousConcurrentUserDataModel(new GenericDataModel(delegatePreferences), maxConcurrentUsers); }
DataModel trainingModel = dataModelBuilder == null ? new GenericDataModel(trainingPrefs) : dataModelBuilder.buildDataModel(trainingPrefs);
DataModel trainingModel = dataModelBuilder == null ? new GenericDataModel(trainingPrefs) : dataModelBuilder.buildDataModel(trainingPrefs);
DataModel trainingModel = dataModelBuilder == null ? new GenericDataModel(trainingPrefs) : dataModelBuilder.buildDataModel(trainingPrefs);
public static DataModel getDataModel(long[] userIDs, Double[][] prefValues) { FastByIDMap<PreferenceArray> result = new FastByIDMap<PreferenceArray>(); for (int i = 0; i < userIDs.length; i++) { List<Preference> prefsList = Lists.newArrayList(); for (int j = 0; j < prefValues[i].length; j++) { if (prefValues[i][j] != null) { prefsList.add(new GenericPreference(userIDs[i], j, prefValues[i][j].floatValue())); } } if (!prefsList.isEmpty()) { result.put(userIDs[i], new GenericUserPreferenceArray(prefsList)); } } return new GenericDataModel(result); }
public static void main(String[] args) { FastByIDMap<PreferenceArray> preferences = new FastByIDMap<PreferenceArray>(); PreferenceArray prefsForUser1 = new GenericUserPreferenceArray(10); prefsForUser1.setUserID(0, 1L); prefsForUser1.setItemID(0, 101L); prefsForUser1.setValue(0, 3.0f); prefsForUser1.setItemID(1, 102L); prefsForUser1.setValue(1, 4.5f); preferences.put(1L, prefsForUser1); DataModel model = new GenericDataModel(preferences); System.out.println(model); }
/** * Constructs the wrapper using the provided model. * * @param model the model to be used to create the wrapped model */ public DataModelWrapper(final net.recommenders.rival.core.TemporalDataModelIF<Long, Long> model) { FastByIDMap<Collection<Preference>> data = new FastByIDMap<Collection<Preference>>(); FastByIDMap<FastByIDMap<Long>> timestampData = new FastByIDMap<FastByIDMap<Long>>(); for (Long u : model.getUsers()) { List<Preference> prefs = new ArrayList<Preference>(); FastByIDMap<Long> userTimestamps = new FastByIDMap<Long>(); timestampData.put(u, userTimestamps); for (Long i : model.getUserItems(u)) { Iterable<Long> timestamps = model.getUserItemTimestamps(u, i); long t = -1; if (timestamps != null) { for (Long tt : timestamps) { t = tt; break; } } userTimestamps.put(i, t); prefs.add(new GenericPreference(u, i, model.getUserItemPreference(u, i).floatValue())); } data.put(u, prefs); } FastByIDMap<PreferenceArray> userData = GenericDataModel.toDataMap(data, true); wrapper = new GenericDataModel(userData, timestampData); }
data.put( 2 , array2 ) ; model2 = new GenericDataModel(data) ;
return new GenericDataModel(GenericDataModel.toDataMap(data, true), timestamps); return new GenericDataModel(rawData, timestamps);
return new GenericDataModel(GenericDataModel.toDataMap(data, true), timestamps); return new GenericDataModel(rawData, timestamps);
return new GenericDataModel(GenericDataModel.toDataMap(data, true), timestamps); return new GenericDataModel(rawData, timestamps);
DataModel trainingModel = dataModelBuilder == null ? new GenericDataModel(trainingUsers) : dataModelBuilder.buildDataModel(trainingUsers); try {
userData.put(789L, new GenericUserPreferenceArray(prefsOfUser789)); DataModel dataModel = new GenericDataModel(userData);
public void setUpSyntheticData() throws Exception { int numUsers = 2000; int numItems = 1000; double sparsity = 0.5; this.rank = 20; this.lambda = 0.000000001; this.numIterations = 100; Matrix users = randomMatrix(numUsers, rank, 1); Matrix items = randomMatrix(rank, numItems, 1); Matrix ratings = users.times(items); normalize(ratings, 5); FastByIDMap<PreferenceArray> userData = new FastByIDMap<PreferenceArray>(); for (int userIndex = 0; userIndex < numUsers; userIndex++) { List<Preference> row= Lists.newArrayList(); for (int itemIndex = 0; itemIndex < numItems; itemIndex++) { if (random.nextDouble() <= sparsity) { row.add(new GenericPreference(userIndex, itemIndex, (float) ratings.get(userIndex, itemIndex))); } } userData.put(userIndex, new GenericUserPreferenceArray(row)); } dataModel = new GenericDataModel(userData); }
@Test public void lessItemsThanBatchSize() throws Exception { FastByIDMap<PreferenceArray> userData = new FastByIDMap<PreferenceArray>(); userData.put(1, new GenericUserPreferenceArray(Arrays.asList(new GenericPreference(1, 1, 1), new GenericPreference(1, 2, 1), new GenericPreference(1, 3, 1)))); userData.put(2, new GenericUserPreferenceArray(Arrays.asList(new GenericPreference(2, 1, 1), new GenericPreference(2, 2, 1), new GenericPreference(2, 4, 1)))); DataModel dataModel = new GenericDataModel(userData); ItemBasedRecommender recommender = new GenericItemBasedRecommender(dataModel, new TanimotoCoefficientSimilarity(dataModel)); BatchItemSimilarities batchSimilarities = new MultithreadedBatchItemSimilarities(recommender, 10); batchSimilarities.computeItemSimilarities(1, 1, mock(SimilarItemsWriter.class)); }
public void setUpToyData() throws Exception { this.rank = 3; this.lambda = 0.01; this.numIterations = 1000; FastByIDMap<PreferenceArray> userData = new FastByIDMap<PreferenceArray>(); userData.put(1L, new GenericUserPreferenceArray(Arrays.asList(new GenericPreference(1L, 1L, 5.0f), new GenericPreference(1L, 2L, 5.0f), new GenericPreference(1L, 3L, 2.0f)))); userData.put(2L, new GenericUserPreferenceArray(Arrays.asList(new GenericPreference(2L, 1L, 2.0f), new GenericPreference(2L, 3L, 3.0f), new GenericPreference(2L, 4L, 5.0f)))); userData.put(3L, new GenericUserPreferenceArray(Arrays.asList(new GenericPreference(3L, 2L, 5.0f), new GenericPreference(3L, 4L, 3.0f)))); userData.put(4L, new GenericUserPreferenceArray(Arrays.asList(new GenericPreference(4L, 1L, 3.0f), new GenericPreference(4L, 4L, 5.0f)))); dataModel = new GenericDataModel(userData); }
@Test public void higherDegreeOfParallelismThanBatches() throws Exception { FastByIDMap<PreferenceArray> userData = new FastByIDMap<PreferenceArray>(); userData.put(1, new GenericUserPreferenceArray(Arrays.asList(new GenericPreference(1, 1, 1), new GenericPreference(1, 2, 1), new GenericPreference(1, 3, 1)))); userData.put(2, new GenericUserPreferenceArray(Arrays.asList(new GenericPreference(2, 1, 1), new GenericPreference(2, 2, 1), new GenericPreference(2, 4, 1)))); DataModel dataModel = new GenericDataModel(userData); ItemBasedRecommender recommender = new GenericItemBasedRecommender(dataModel, new TanimotoCoefficientSimilarity(dataModel)); BatchItemSimilarities batchSimilarities = new MultithreadedBatchItemSimilarities(recommender, 10); try { // Batch size is 100, so we only get 1 batch from 3 items, but we use a degreeOfParallelism of 2 batchSimilarities.computeItemSimilarities(2, 1, mock(SimilarItemsWriter.class)); fail(); } catch (IOException e) {} } }
/** * rating-matrix * * burger hotdog berries icecream * dog 5 5 2 - * rabbit 2 - 3 5 * cow - 5 - 3 * donkey 3 - - 5 */ @Override @Before public void setUp() throws Exception { super.setUp(); FastByIDMap<PreferenceArray> userData = new FastByIDMap<PreferenceArray>(); userData.put(1L, new GenericUserPreferenceArray(Arrays.asList(new GenericPreference(1L, 1L, 5.0f), new GenericPreference(1L, 2L, 5.0f), new GenericPreference(1L, 3L, 2.0f)))); userData.put(2L, new GenericUserPreferenceArray(Arrays.asList(new GenericPreference(2L, 1L, 2.0f), new GenericPreference(2L, 3L, 3.0f), new GenericPreference(2L, 4L, 5.0f)))); userData.put(3L, new GenericUserPreferenceArray(Arrays.asList(new GenericPreference(3L, 2L, 5.0f), new GenericPreference(3L, 4L, 3.0f)))); userData.put(4L, new GenericUserPreferenceArray(Arrays.asList(new GenericPreference(4L, 1L, 3.0f), new GenericPreference(4L, 4L, 5.0f)))); dataModel = new GenericDataModel(userData); factorizer = new ALSWRFactorizer(dataModel, 3, 0.065, 10); }