欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

Java FastByIDMap 类使用示例

最编程 2024-03-31 22:26:50
...

实例1: IRState

import org.apache.mahout.cf.taste.impl.common.FastByIDMap; //导入依赖的package包/类
public void IRState(String taskName) {
    String itemmodelsPath = RecommendConfig.class.getResource("/").getPath() + "itemmodels.csv";
    HadoopUtil.download(taskName, itemmodelsPath, false);
    try {
        DataModel fileDataModel = new FileDataModel(new File(itemmodelsPath));
        RecommenderIRStatsEvaluator irStatsEvaluator = new GenericRecommenderIRStatsEvaluator();
        IRStatistics irStatistics = irStatsEvaluator.evaluate(new RecommenderBuilder() {
            @Override
            public org.apache.mahout.cf.taste.recommender.Recommender buildRecommender(final DataModel dataModel) throws TasteException {
                UserSimilarity userSimilarity = new PearsonCorrelationSimilarity(dataModel);
                UserNeighborhood userNeighborhood = new NearestNUserNeighborhood(5, userSimilarity, dataModel);
                return new GenericUserBasedRecommender(dataModel, userNeighborhood, userSimilarity);
            }
        }, new DataModelBuilder() {
            @Override
            public DataModel buildDataModel(final FastByIDMap<PreferenceArray> fastByIDMap) {
                return new GenericDataModel(fastByIDMap);
            }
        }, fileDataModel, null, 5, GenericRecommenderIRStatsEvaluator.CHOOSE_THRESHOLD, 1.0);
        System.out.println("查准率:" + irStatistics.getPrecision());
        System.out.println("查全率:" + irStatistics.getRecall());
    } catch (TasteException | IOException e) {
        e.printStackTrace();
    }
}
 

实例2: testBuildKNNRecommender

import org.apache.mahout.cf.taste.impl.common.FastByIDMap; //导入依赖的package包/类
@Test
public void testBuildKNNRecommender() {
    GenericRecommenderBuilder rb = new GenericRecommenderBuilder();
    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 dm = new GenericDataModel(userData);

    Recommender rec = null;
    String recommenderType = "org.apache.mahout.cf.taste.impl.recommender.GenericUserBasedRecommender";
    String similarityType = "org.apache.mahout.cf.taste.impl.similarity.PearsonCorrelationSimilarity";
    try {
        rec = rb.buildRecommender(dm, recommenderType, similarityType);
    } catch (RecommenderException e) {
        e.printStackTrace();
    }
    assertTrue(rec instanceof GenericUserBasedRecommender);
}
 

实例3: loadInMemory

import org.apache.mahout.cf.taste.impl.common.FastByIDMap; //导入依赖的package包/类
public DataModel loadInMemory() {
	// In-memory DataModel - GenericDataModels
	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); // use userID as the key
	
	//TODO: add others users

	
	// Return preferences as new data model
	DataModel dataModel = new GenericDataModel(preferences);
	
	return dataModel;

}
 

实例4: extractRawStudentPreferenceData

import org.apache.mahout.cf.taste.impl.common.FastByIDMap; //导入依赖的package包/类
private FastByIDMap<Collection<Preference>> extractRawStudentPreferenceData(CloseableIterator<StudentSubjectPreference> iterator) {
    FastByIDMap<Collection<Preference>> rawData = new FastByIDMap<>();

    iterator.forEachRemaining(it -> {
        Collection<Preference> studentPreferences;
        if (rawData.containsKey(it.getStudentId())) {
            studentPreferences = rawData.get(it.getStudentId());
        } else {
            studentPreferences = new ArrayList<>();
            rawData.put(it.getStudentId(), studentPreferences);
        }

        studentPreferences.add(new GenericPreference(it.getStudentId(), it.getSubjectId(), it.getPreferenceValue().floatValue()));
    });

    return rawData;
}
 

实例5: getGenericDataModel

import org.apache.mahout.cf.taste.impl.common.FastByIDMap; //导入依赖的package包/类
private DataModel getGenericDataModel() {
	FastByIDMap<PreferenceArray> preferences = 
			new FastByIDMap<PreferenceArray>();
	
	List<User> users = userService.getAllUsers();
	
	for (int j = 0; j < users.size(); j++) {
		
		List<Preference2d> preference2ds = 
				preference2dService.getPreferencesByUserId(users.get(j).getId());
		PreferenceArray prefsForUser = 
				new GenericUserPreferenceArray(preference2ds.size());
		prefsForUser.setUserID(j, users.get(j).getId());
		
		for (int i = 0; i < preference2ds.size(); i++) {
			prefsForUser.setItemID(i, preference2ds.get(i).getRestaurantId());
			prefsForUser.setValue(i, preference2ds.get(i).getScore().floatValue());
		}
		
		preferences.put(j, prefsForUser);
	}
	
	return new GenericDataModel(preferences);
}
 

上一篇: 刷卡,太简单了

下一篇: 滴答滴答

推荐阅读